本帖最后由 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寄存器,没有效果。
看样子数据在移位寄存器里面了,可以尝试一下关闭SPI使移位寄存器,使位计数清零,控制SPI关闭的寄存器SPI_CR1的bit6位SPE!
奇怪的是总是错8位,或16位,为啥不会错 5位,7位呢?