MSP432 spi接收中断寄存器问题

2019-03-24 08:29发布

图1 图1 如图1所示,第一个黄 {MOD}的句子写的是主模式下接收寄存器置位情况,第二个黄 {MOD}寄存器下写的是主模式下发送寄存器置位情况。
先看第二句发送,手册上说当UCxTXBUF中的数据转移到Transmit Shift Register发送移位寄存器后,发送中断标志位会被置位,表明发送缓冲区是空的,可以继续向里写数了。这和我实际测试的情况是一样的,如图2,基本上发送中断标志都是1。
图2 图2
再看第一句接收情况,说当有字符接收到,接收到的数据从Receive Shift Register转移到UCxRXBUF时,接收中断标志位会被置1,表示RX or TX完成。这个就和我实测的结果不太一样了,如图3,我这A口当的主机,从机还没发数呢,很明显UCxRXBUF中也没有数,但是主机的接收中断标志位就置1了,而且进了主机接收中断。
图3 图3


我这就不太懂了,不知道接收这出了什么问题,是我翻译有问题?
不知道有没有大牛研究过这段地方,谢谢解答。
还有图1最后一句话,说“为了在主模式下接收到数据,数据必须被写入UCxTXBUF,因为发送和接收操作是同时进行的。”这是啥意思,同时进行我懂,为什么为了收到数据,要写发送缓冲区。谢谢
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
cangsang
1楼-- · 2019-03-24 12:13
 精彩回答 2  元偷偷看……
cangsang
2楼-- · 2019-03-24 16:44
< :TI_MSP430_内容页_SA7 --> 这么说可能没讲清楚,看清楚图1中的流向,你在发送时,主设备Tx shift register 一位一位进入从设备的rx shift register 时,会把从设备的移位寄存器中的东西一位一位的冲到主设备的接收移位寄存器。这时你只有发送动作但是同时也会触发接收动作。
cangsang
3楼-- · 2019-03-24 22:15
从设备没法写代码让它主动发送(主动发送是需要主动提供时钟信号的),它的数据只会在合适的时候进入从设备的移位寄存器等待主设备的获取。主设备只能通过上面的步骤随便往里面写个无关紧要的数据把对面的数据冲过来。
被雨困住
4楼-- · 2019-03-25 01:41
 精彩回答 2  元偷偷看……
被雨困住
5楼-- · 2019-03-25 05:44
cangsang 发表于 2017-6-14 10:48
spi的发送接收是同时的,有发送就有接收。就像两个设备中各有一个盒子,发送与接收实际上是把两个盒子中的 ...

大神,你说这个意思我大概理解了,但是还有点不懂。从设备不是也有发送移位寄存器和接收移位寄存器吗,主设备发送数据后,把会从设备接收移位寄存器里的值顶到主设备的接收寄存器里来,是吗?但是,如果从设备想发送数据怎么办呢?把数据放入从设备接收移位寄存器吗?这样等主设备发过来,就可以把数据压给主设备?(那从设备的发送移位寄存器是一直没用是吗?)
被雨困住
6楼-- · 2019-03-25 09:39
cangsang 发表于 2017-6-14 11:05
从设备没法写代码让它主动发送(主动发送是需要主动提供时钟信号的),它的数据只会在合适的时候进入从设备 ...

我又查了些资料,我的理解,主从设备各有一个数据移位寄存器,各自又有各自的发送接收缓冲区。比如对主设备来说,他的移位寄存器连接着他的发送缓冲区和接收缓冲区,只不过数据只能从发送缓冲区进移位寄存器,然后移位寄存器里的数据出去只能进接收缓冲区里。这样,每次主设备要发送时,把数据从发送缓冲区压入移位寄存器,通过主从设备移位之后,这样主设备移位寄存器里的数据就是从 从设备接收到的回复,然后再压入主设备的接收缓冲区,这样完成一个周期的spi通信,可以这么理解吗?

一周热门 更多>

相关问题

    相关文章