[求助] MSP432 spi接收中断寄存器问题

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


我这就不太懂了,不知道接收这出了什么问题,是我翻译有问题?
不知道有没有大牛研究过这段地方,谢谢解答。
还有图1最后一句话,说“为了在主模式下接收到数据,数据必须被写入UCxTXBUF,因为发送和接收操作是同时进行的。”这是啥意思,同时进行我懂,为什么为了收到数据,要写发送缓冲区。谢谢

回复评论 (9)

2推荐 cangsang 

spi的发送接收是同时的,有发送就有接收。就像两个设备中各有一个盒子,发送与接收实际上是把两个盒子中的内容置换。你只要发送了,接收中断就会触发。你想要接收就得发一个与移位寄存器位数相等的数据去把对面的移位寄存器中的数据冲过来。
点赞  2017-6-14 10:48
这么说可能没讲清楚,看清楚图1中的流向,你在发送时,主设备Tx shift register 一位一位进入从设备的rx shift register 时,会把从设备的移位寄存器中的东西一位一位的冲到主设备的接收移位寄存器。这时你只有发送动作但是同时也会触发接收动作。
  • Inked152203ctaee8naeteqawet_LI.jpg
点赞  2017-6-14 11:01
从设备没法写代码让它主动发送(主动发送是需要主动提供时钟信号的),它的数据只会在合适的时候进入从设备的移位寄存器等待主设备的获取。主设备只能通过上面的步骤随便往里面写个无关紧要的数据把对面的数据冲过来。
点赞  2017-6-14 11:05
引用: cangsang 发表于 2017-6-14 11:05
从设备没法写代码让它主动发送(主动发送是需要主动提供时钟信号的),它的数据只会在合适的时候进入从设备 ...

就是你说的这个意思,厉害了大哥!
点赞  2017-6-17 16:10
引用: cangsang 发表于 2017-6-14 10:48
spi的发送接收是同时的,有发送就有接收。就像两个设备中各有一个盒子,发送与接收实际上是把两个盒子中的 ...

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

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

这时某些型号的单片机的spi方式,例如stm32f4系列,它们的发送接收缓冲区共用一个移位寄存器。但是你给的这个msp43x系列从上面图片上看不是共用移位寄存器的,但是道理都是一样的。是你所说的那样。
点赞  2017-6-18 10:09
引用: cangsang 发表于 2017-6-18 10:09
这时某些型号的单片机的spi方式,例如stm32f4系列,它们的发送接收缓冲区共用一个移位寄存器。但是你给的 ...

我也感觉MSP43*好像有俩移位寄存器,但是这是怎么工作的啊,这个回路是怎么闭合连接的?主的发送移位连的从的接收移位,那主设备发送怎么把从设备发送移位寄存器的内容压过来呢?难道从设备的发送移位和从设备的接收移位连着的?然后主设备发送就可以把从设备发送移位的东西压过来了?还是说这个就是TI的事了,我们用这个的不用管这么细,只要明白原理就可以了?
点赞  2017-6-20 09:06
印象中SPI不是正真意义上的全双工,另外一条线上的数据是用来保持通信时钟的
点赞  2017-6-22 19:31
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复