你好,专家。我在用McBSP作为SPI功能接收数据时, while(McbspaRegs.MFFRX.bit.RXFFST !=1 )此句不设置的话能够接收到数据(数据不对),可是如果设置上句的话就接收不到,利用的是FIFO功能,参考TI的例程
请问这是怎么回事
Forrest:
while(McbspaRegs.MFFRX.bit.RXFFST !=1的使用目的是确定McBsp中有收到数据。
楼主用的是281x系列芯片吧,请看一下下面的McBsp的user guide,里面2.3章有说要如何设置McBsp的相关寄存器.
www.ti.com/…/spru061d
此外也请楼主用示波器看一下时序。
你好,专家。我在用McBSP作为SPI功能接收数据时, while(McbspaRegs.MFFRX.bit.RXFFST !=1 )此句不设置的话能够接收到数据(数据不对),可是如果设置上句的话就接收不到,利用的是FIFO功能,参考TI的例程
请问这是怎么回事
Liu bingsheng:
回复 Forrest:
你好,Forrest,我又看了usee guide,然后借了参考书也看了一下,感觉寄存器设置的没有问题啊。现在的情况是:
McbspaRegs.MFFRX.bit.RXFFST的数值始终为16,我看guide说这是代表可用16个字,可是正常的是不是应该为0吧?我把while(McbspaRegs.MFFRX.bit.RXFFST !=1改为while(McbspaRegs.MFFRX.bit.RXFFST !=16就能接收到数据(也不正确),我现在不知道怎么办了?能帮我一下吗?谢谢!!
你好,专家。我在用McBSP作为SPI功能接收数据时, while(McbspaRegs.MFFRX.bit.RXFFST !=1 )此句不设置的话能够接收到数据(数据不对),可是如果设置上句的话就接收不到,利用的是FIFO功能,参考TI的例程
请问这是怎么回事
Forrest:
回复 Liu bingsheng:
RXFFST的值为16说明已经收到了数据,SPI有时钟和极性这需要注意一下,否则收到的数据会不正确。
while(McbspaRegs.MFFRX.bit.RXFFST ==0){};即可。你那里McBSP是主还是从?
此外也请楼主用示波器看一下时序。
你好,专家。我在用McBSP作为SPI功能接收数据时, while(McbspaRegs.MFFRX.bit.RXFFST !=1 )此句不设置的话能够接收到数据(数据不对),可是如果设置上句的话就接收不到,利用的是FIFO功能,参考TI的例程
请问这是怎么回事
Liu bingsheng:
回复 Forrest:
我按照你说的,看它的时序了,时序现在没有问题。McBSP设为从,用来接收数据。我刚才查看寄存器McbspaRegs.MFFRX.bit.RXFFOVF_FLAG为1,即说是溢出了,是不是正常的话,此位应该为0啊?
你好,专家。我在用McBSP作为SPI功能接收数据时, while(McbspaRegs.MFFRX.bit.RXFFST !=1 )此句不设置的话能够接收到数据(数据不对),可是如果设置上句的话就接收不到,利用的是FIFO功能,参考TI的例程
请问这是怎么回事
Liu bingsheng:
回复 Forrest:
我按照你说的,看它的时序了,时序现在没有问题。McBSP设为从,用来接收数据。我刚才查看寄存器McbspaRegs.MFFRX.bit.RXFFOVF_FLAG为1,即说是溢出了,是不是正常的话,此位应该为0啊?
你好,专家。我在用McBSP作为SPI功能接收数据时, while(McbspaRegs.MFFRX.bit.RXFFST !=1 )此句不设置的话能够接收到数据(数据不对),可是如果设置上句的话就接收不到,利用的是FIFO功能,参考TI的例程
请问这是怎么回事
Forrest:
回复 Liu bingsheng:
是的应该为0.
我写了一个小程序:)。在2812上McBSP为从,SPI为主互相通信。
你好,专家。我在用McBSP作为SPI功能接收数据时, while(McbspaRegs.MFFRX.bit.RXFFST !=1 )此句不设置的话能够接收到数据(数据不对),可是如果设置上句的话就接收不到,利用的是FIFO功能,参考TI的例程
请问这是怎么回事
Liu bingsheng:
回复 Forrest:
好的,我好好研究一下,真的谢谢啦!
TI中文支持网



