原创 SPI 主机仅发送,从机仅接收模式

2023-8-30 15:39 933 4 4 分类: MCU/ 嵌入式 文集: SPI接口

SPI主机为Only Transmit 从机为Only Receive

SPI主机配置如下:

代码如下

如果不进行SPI DISABLE 片选的引脚会一直存在,这个在HAL_SPI_Transmit 函数里面并没有对SPI进行关使能,只能在外面添加,具体为什么没有添加关闭SPI不清楚原因

 

HAL_SPI_Transmit(&hspi1, tx_buf, sizeof(tx_buf),1000);

__HAL_SPI_DISABLE(&hspi1);

HAL_Delay(5);

 

SPI 从机配置如下:

代码如下:

HAL_SPI_Receive(&hspi1, rx_buf, sizeof(tx_buf),1000);

HAL_Delay(5);

memset(rx_buf,0,sizeof(rx_buf));

 

收发的buf数据如下:

从逻辑分析仪查看数据:

可以看到最后一个字节是CRC校验码

 

从逻辑分析仪波形观察SPI模块运行逻辑

对于主机发送数据情况下:

一旦CR1寄存器的SPE位置1,主机将CS片选引脚拉低,去选择从机,TXE起来后,一旦对DR写数据,时钟和MOSI引脚出来波形数据。

从机接收数据的情况:

等待SR寄存器的RXNE位为1的情况后,对读走DR寄存器的值,对于存在CRC校验的在倒数第二个字节后,对CR1寄存器的CRC_NEXT位写1来开始计算CRC校验

最后等待BUSY位变低,退出接收函数

 

作者: 宏杰, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4027574.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条