使用SCI FIFO中断模式接收数据,数据包每包含8个8位数,每接收到一个数据即产生一个中断,也就是每一个数据包会产生8个中断。上位机最快每隔20ms左右发一包数据。但是接收到的数据的顺序被打乱了,我因此设置了一个包头和包尾,当判断包头和包尾不符合时复位FIFO指针,再重新发,但接收到的数据顺序还是错的。
请问大家有没有遇到这种情况呢?以下是我判断包头或包尾不对时调用的程序,但依然不起作用。
if(sci_rx[0]!=0x55||sci_rx[7]!=0x00)//如果帧头或帧尾不对
{
SciaRegs.SCIFFRX.bit.RXFIFORESET=0;//接收FIFO指针复位
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;//接收FIFO使能
}
Tong Daniel:
我用的是485通讯,属于半双工,意味着发的时候就不能收,会不会因为这个原因导致收到的数据顺序不对呢?
使用SCI FIFO中断模式接收数据,数据包每包含8个8位数,每接收到一个数据即产生一个中断,也就是每一个数据包会产生8个中断。上位机最快每隔20ms左右发一包数据。但是接收到的数据的顺序被打乱了,我因此设置了一个包头和包尾,当判断包头和包尾不符合时复位FIFO指针,再重新发,但接收到的数据顺序还是错的。
请问大家有没有遇到这种情况呢?以下是我判断包头或包尾不对时调用的程序,但依然不起作用。
if(sci_rx[0]!=0x55||sci_rx[7]!=0x00)//如果帧头或帧尾不对
{
SciaRegs.SCIFFRX.bit.RXFIFORESET=0;//接收FIFO指针复位
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;//接收FIFO使能
}
HH Y:
又说是FIFO中断,怎么又一个数据中断一次?FIFO深度是多少?
使用SCI FIFO中断模式接收数据,数据包每包含8个8位数,每接收到一个数据即产生一个中断,也就是每一个数据包会产生8个中断。上位机最快每隔20ms左右发一包数据。但是接收到的数据的顺序被打乱了,我因此设置了一个包头和包尾,当判断包头和包尾不符合时复位FIFO指针,再重新发,但接收到的数据顺序还是错的。
请问大家有没有遇到这种情况呢?以下是我判断包头或包尾不对时调用的程序,但依然不起作用。
if(sci_rx[0]!=0x55||sci_rx[7]!=0x00)//如果帧头或帧尾不对
{
SciaRegs.SCIFFRX.bit.RXFIFORESET=0;//接收FIFO指针复位
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;//接收FIFO使能
}
rui liu4:
回复 Tong Daniel:
你好,我用的也是485通信,FIFO中断,但是一直没法进入接收中断,大神能给指导一下吗