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