大家新年好,我有一个问题不太明白,希望大家多多指教:
28035SCI的接收FIFO中断最大只能设为4个字节,但我的上位机协议设置为发送8个字节,如何解决这个问题呢?
PINRAN LIAO:
用中断一个字节一个字节接收吧!以前用FIFO会出现数据顺序打乱的现象。
大家新年好,我有一个问题不太明白,希望大家多多指教:
28035SCI的接收FIFO中断最大只能设为4个字节,但我的上位机协议设置为发送8个字节,如何解决这个问题呢?
rookiecalf:
回复 PINRAN LIAO:
接受完4个,取出,再接收剩余4个,为防止数据顺序问题,需要加看门狗,超过一定时候,作为新的一帧数据。如果必要,重新设计数据帧,做起止判断,以及纠错功能。
大家新年好,我有一个问题不太明白,希望大家多多指教:
28035SCI的接收FIFO中断最大只能设为4个字节,但我的上位机协议设置为发送8个字节,如何解决这个问题呢?
Tong Daniel:
回复 rookiecalf:
你好,非常感谢你的回复,我想请教下纠错的思路大概是什么样的呢?谢谢了!
大家新年好,我有一个问题不太明白,希望大家多多指教:
28035SCI的接收FIFO中断最大只能设为4个字节,但我的上位机协议设置为发送8个字节,如何解决这个问题呢?
rookiecalf:
回复 Tong Daniel:
也不算什么真正的纠错了,只要能判断是不是有效数据就成,可以添加个CRC校验
大家新年好,我有一个问题不太明白,希望大家多多指教:
28035SCI的接收FIFO中断最大只能设为4个字节,但我的上位机协议设置为发送8个字节,如何解决这个问题呢?
Tong Daniel:
回复 rookiecalf:
为了避免上一次数据接收顺序错误影响到下次数据的接收,我接收到一个完整的数据后,判断帧头和帧尾,如果数据不对则将SCI接收FIFO寄存器指针复位,然后再重新是能接收FIFO。但这种方法行不通,只要有一次数据顺序错误,那么以后每一次的数据接收都是错误的。请问你是怎么避免数据发生错误的呢?
我的接收FIFO复位程序如下:
if(sci_rx[0]!=0x55||sci_rx[7]!=0x00)//如果帧头或帧尾不对 { SciaRegs.SCIFFRX.bit.RXFIFORESET=0;//接收FIFO指针复位 SciaRegs.SCIFFRX.bit.RXFIFORESET=1;//接收FIFO使能 }}
大家新年好,我有一个问题不太明白,希望大家多多指教:
28035SCI的接收FIFO中断最大只能设为4个字节,但我的上位机协议设置为发送8个字节,如何解决这个问题呢?
rookiecalf:
回复 Tong Daniel:
Tong Daniel
为了避免上一次数据接收顺序错误影响到下次数据的接收,我接收到一个完整的数据后,判断帧头和帧尾,如果数据不对则将SCI接收FIFO寄存器指针复位,然后再重新是能接收FIFO。但这种方法行不通,只要有一次数据顺序错误,那么以后每一次的数据接收都是错误的。请问你是怎么避免数据发生错误的呢?
我的接收FIFO复位程序如下:
if(sci_rx[0]!=0x55||sci_rx[7]!=0x00)//如果帧头或帧尾不对 { SciaRegs.SCIFFRX.bit.RXFIFORESET=0;//接收FIFO指针复位 SciaRegs.SCIFFRX.bit.RXFIFORESET=1;//接收FIFO使能 }}