本帖最后由 hantnt 于 2015-4-28 13:31 编辑
之前一直以为STM32就iic有bug,今天又发现当spi作为从机使用时会出现各种莫名其妙的问题。
首先是接收机制的问题,接收时只检测SCK的跳变沿,很容易发生错位问题,而且复位SPI移位寄存器内容依然,可能有人要怀疑是不是我自己程序的问题,但是我所有代码都是直接调用库函数的。
其次是在间歇接收几十次之后就会发生丢字节的问题,这个问题就很严重了。
最终放弃了用stm32作为spi从机的通信方式,还是用UART吧,白折腾了一天。
ps:我自己用FPGA写的SPI接口从机从未出现过类似问题。
编辑原因:改错别字 其实-其次
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
想采用的解决方式是:主机通过IO口向从机发送同步标识(也就是用软件模拟CS),每次发送一帧前,均通知从机SPI将移位寄存器清空。
但理想很丰满,现实却很骨感。找了半天也没找到怎么清空从机SPI的移位寄存器。哪位大神可以给点指点呀。在此先谢过。
在SPI中断里面 增加先关闭SPI 再打开 SPI 就ok了
SPI2->CR1 &= (uint16_t)~((uint16_t)SPI_CR1_SPE);
SPI2->CR1 |= SPI_CR1_SPE;
一周热门 更多>