STM32的SPI_DR跟SPI的发送/接收缓冲区到底有什么关系?

qq_16738141 2017-07-20 10:50:31
由于最近开发的需要,小弟在研究STM32的SPI接口,但在SPI_DR这个地方遇到了障碍。
STM32的芯片手册上说数据寄存器对应了发送/接收缓冲区并且共用一块寄存器,如下图

同时在SPI发送和接收流程的描述中又出现了一个移位寄存器,如下图:

我的问题是:
1.这个移位寄存器是什么,是不是SPI_DR
2.如果发送/接收缓冲器都指的是SPI_DR这个寄存器的0-7位,那么在数据同时进行接收和发送的时候怎么区分两个缓冲器?
...全文
5266 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2017-07-20
  • 打赏
  • 举报
回复 5
一般这种寄存器使用相同的地址,但是在硬件上是两个寄存器,在读和写时 硬件上会做区分, 一般芯片资料的硬件描述中会有说明
ObrienHuang 2017-07-20
  • 打赏
  • 举报
回复 10
1、移位寄存器是单片机内部的,你可以不用管它,并不是SPI->DR寄存器,它是由SPI->DR寄存器自动发送出去给移位寄存器的; 2、接受的时候,比如uint8_t rec_buf = SPI->DR,就能接收了,发送的时候,uint8_t dat = 'a'; SPI->DR = dat,就行了,读取的时候,就是接收,赋值的时候就是发送。
qq_16738141 2017-07-20
  • 打赏
  • 举报
回复 1
感谢楼上两位,完美解决疑惑,我第一次发帖也不知道怎么重新编辑,不过还是非常感谢,结帖

27,516

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧