OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6067|回复: 2

SPI驱动多个74HC595扩展IO

[复制链接]

20

主题

297

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1830
金钱
1830
注册时间
2013-7-29
在线时间
276 小时
发表于 2021-10-19 08:58:30 | 显示全部楼层 |阅读模式
void SPI1_Init(void)
{
     RCC->APB2ENR|=1<<2;       //PORTA时钟使能
     RCC->APB2ENR|=1<<12;      //SPI1时钟使能
     RCC->APB2ENR|=1<<0 ;      //复用功能时钟使能

     //这里只针对SPI口初始化
     GPIOA->CRL&=0X0F00FFFF;
     GPIOA->CRL|=0XB0B30000;    //PA5.6.7复用
     GPIOA->ODR|=0XF0;          //PA5.6.7下拉

     SPI1->CR1|=0<<10;//全双工模式
     SPI1->CR1|=1<<9; //软件nss管理
     SPI1->CR1|=1<<8;

     SPI1->CR1|=1<<2;       //SPI主机
     SPI1->CR1|=0<<11;      //8bit数据格式
     SPI2->CR1|=0<<1;                     //空闲模式下SCK为1 CPOL=1
            SPI2->CR1|=0<<0;                     //数据采样从第二个时间边沿开始,CPHA=1
     SPI1->CR1|=7<<3;       //Fsck=Fcpu/256
     SPI1->CR1|=0<<7;       //MSBfirst
     SPI1->CR1|=1<<6;       //SPI设备使能
}
void SPI1_ReadWriteByte(u8 TxData)
{
     while((SPI1->SR&(1<<1))==0);
     SPI1->DR=TxData;                   //发送一个byte
     while((SPI1->SR&(1<<0))==0);
}

void HC595_Send_Multi_Byte(u8 data[],u8 lenth)
{
     u8 i;

     for(i=0;i<lenth;i++)
     {
         SPI1_ReadWriteByte(data[i]);
     }
     SPI1_CS_select();
     delay_us(5);
     SPI1_CS_unselect();
     delay_us(5);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2020-8-19
在线时间
335 小时
发表于 2021-10-19 09:40:43 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-6-30
在线时间
2 小时
发表于 2022-7-11 13:46:17 | 显示全部楼层
感谢作者分享

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 18:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表