主机时钟系统配置
从机时钟系统配置
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
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论