STM32
直播中

李艺银

7年用户 971经验值
私信 关注
[问答]

L433单片机的SPI3,在从模式,DR接收的寄存器什么条件下能清空?

L433单片机的SPI3,在从模式,开接收中断,LSB优先,CR2寄存器中DS设置为0111,也就是8位,在设置FRXTH位也就是接受8位就进接收中断的情况下,在每次中断里都读DR寄存器,似乎DR寄存器还是能读出多个8位的数据来,请问DR接收的寄存器,什么条件下能清空,似乎不是读一次就清空啊。类似的问题,DR发送的寄存器,什么条件下能清空,TXE位什么条件下会置0,什么条件下会置1,在每次单片机读取的同时,都会给DR写入8位数据,但是不是每次写入8位数据后,TXE位都会置0,而且SPI的主机那边会读到写入的数据跟00交替的数据,给人一种实际上数据有16位,而且写入失败的感觉?另外L433有中文手册吗,谢谢

回帖(1)

王桂英

2024-5-24 16:47:35
L433单片机的SPI3在从模式下,DR接收寄存器的清空条件如下:

1. 当接收到8位数据后,DR寄存器会被填满。此时,如果设置了FRXTH位,接收中断会被触发。

2. 在接收中断服务程序中,读取DR寄存器。读取后,DR寄存器会被清空,准备接收下一位数据。

关于DR发送寄存器的清空条件:

1. 当单片机向DR发送寄存器写入8位数据时,TXE位会被置1,表示可以发送数据。

2. 当SPI主机读取到DR发送寄存器中的数据后,TXE位会被置0,表示数据已被发送。

关于TXE位的状态变化:

1. 当单片机向DR发送寄存器写入8位数据时,TXE位会被置1。

2. 当SPI主机读取到DR发送寄存器中的数据后,TXE位会被置0。

3. 如果在每次单片机读取的同时,都会给DR写入8位数据,那么TXE位可能不会立即置0。这取决于SPI主机读取数据的速度。

关于SPI主机接收到的数据与00交替的问题:

1. 这可能是由于SPI主机和从机之间的通信速率不匹配导致的。请检查SPI主机和从机的时钟速率设置,确保它们匹配。

2. 另一个可能的原因是SPI从机在发送数据时,没有正确地等待SPI主机的读取请求。请检查SPI从机的代码,确保在发送数据之前等待SPI主机的读取请求。

总之,要解决这些问题,请确保SPI主机和从机之间的通信速率匹配,并在从机的中断服务程序中正确地读取和清空DR寄存器。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分