This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好!
我实施 Modbus 协议、我在用 FIFO 中断 RX 时遇到问题。
在我的应用中、传入的帧具有不同的长度(一旦帧的长度为12字节、第二次的长度为8字节)。 我在中断中接收到帧。
当我设置 RXFFIL = 7且帧长度为13时、会出现错误标志、例如 PE 和 FE。
总结如何设置中断,以便能够接收长度不同(只要 FIFO 大小允许,帧就会一样长)的帧而不会出现错误?
感谢你的帮助
此致
Szymon
您好!
我添加了设置
中断 void scicRxFifoIsr (void) { uint32 i = 0; while (ScicRegs.SCIFFRX.bit.RXFFST!= 0){ RxMODBUS[I]=ScicRegs.SCIRXBUF.ALL; i++;//读取数据} } GpioDataRegs.GPASET.bit.GPIO19=1; ScicRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清除溢出标志 scicRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除中断标志 PieCtrlRegs.PIEACK.All|=0x80; //发出 PIE ACK } void scia_fifo_init() { ScicRegs.SCICCR.all = 0x0067; // 1停止位,无环回 //无奇偶校验,8个字符位, //异步模式,空闲线协议 ScicRegs.SCICTL1.all = 0x0003; //启用 TX、RX、内部 SCICLK、 //禁用 RX ERR、SLEEP、TXWAKE ScicRegs.SCICT2.bit.TXINTENA=0; ScicRegs.SCICT2.bit.RXBUKINTENA=1; ScicRegs.SCIHBAUD.ALL = 0x0000; ScicRegs.SCILBENA.ALL = 0x00A2;ScicRegs.SCICCR.OAUD = 0.PO.AUD = 0x0000 //启用环回 ScicRegs.SCIFFTX.ALL = 0xC021; ScicRegs.SCIFFRX.ALL = 0x0028; ScicRegs.SCIFFCT.ALL = 0x00; ScicRegs.SCICTL1.ALL = 0x0023; //从复位 ScicRegs.SCIFFTX.bit.TXFIFORESET 中撤回 SCI = 1; ScicRegs.SCIFFRX.bit.RXFIFORESET = 1; }
您好!
感谢你的帮助。
我还有一个问题。
您是否有用于实现所写内容的示例代码?
此致
Szymon