原创 对STM32 在master模式下 Only RX 和 slave Only TX 配置下,hal库问题

2023-8-30 10:56 640 5 3 分类: MCU/ 嵌入式 文集: SPI接口

主机时钟系统配置

从机时钟系统配置

SPI主从机均配置CPOL=0,CPHA=0

采用主机仅接收模式,从机仅发送,发送字节为:

tx_buf[] = {0xF3,0xA5,0x83,0x04,0x85,0x86,0x07};

CRC 的POLY = 0x07

 

按照SDK默认收发

主机代码如下:

从机代码如下:

在网页版的计算得到得CRC 应该为0xFE

从逻辑分析与看,发现没有CRC校验码

 

 

查看从机CRC部分的代码,确实是有对CRCNEXT操作的,那么怀疑是不是时间不够,在后面加一个延迟

修改后的代码:加了1ms的延迟

从逻辑分析仪看,能看到从机能发生出完整的数据和CRC了

  

主机端:

查看收到的字节和寄存器的状态,能正确的收到字节,并且DR也收到CRC校验码,但是RXCRCR寄存器并没有FE校验码

将清除CRCNEXT这个语句删除,代码如下:

再查看寄存器的状态:

可以看到RXCRC寄存器有了校验码的值了


不知道搞错了哪里,待后续研究


找到了问题所在,由于SDK里面是写完CRCNEXT就等待BSY,在SLAVE模式下,每发完一个字节BSY就会变低,这个与MASTER模式是有区别的,导致数据还没发完,BSY就下去,

退出了当前循环,开始新发数据


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

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

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

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条