any012 发表于 2017-5-23 09:29:26

本帖最后由 any012 于 2017-5-23 10:13 编辑

oujisang 发表于 2017-5-22 17:33
不管三七二十一 直接多读几次就可以了 变量= hspi2.Instance->DR;

SPI接收时,应该是按sclk来8个或16个信号后,将移位寄存器的数据放到接收缓冲区,如果接收中断使能的话,会置位RXNE。
读DR,应该是读接收缓冲区吧?
疑惑,读DR,会产生哪些影响?

---------------------------------------------------------------------------



我的理解是有个计数器,计SCLK信号为8或16时,移位寄存器数据放到接收缓冲区,置位RXNE。
读DR,RXNE复位。但这个计数器是否也会跟着复位?

------------------------------------------------------------------------------

试了下,在PC6下降沿中断里,多加了几句读SPI的DR寄存器,没有效果。


oujisang 发表于 2017-5-24 11:46:33

看样子数据在移位寄存器里面了,可以尝试一下关闭SPI使移位寄存器,使位计数清零,控制SPI关闭的寄存器SPI_CR1的bit6位SPE!

andrewchen 发表于 2018-6-30 22:44:36

奇怪的是总是错8位,或16位,为啥不会错 5位,7位呢?

页: 1 2 [3]
查看完整版本: spi中断接收模式,被干扰后数据会一直错位。