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 协议。
经过多次尝试和论坛的帮助、我终于成功地正确接收了帧、但我遇到了另一个问题。
当我在中断中拾取帧时、我必须将 RS485切换到发送模式(我使用连接到 DE RS485的 GPIO19执行此操作)。
当我执行这些操作时、我会得到 FE 和 PE 等错误标志。 有没有人知道会发生什么错误?
我输入我的代码
此致
Szymon
中断 void scicRxFifoIsr (void) { Uint16i = 0; uint16 z = 0; while (ScicRegs.SCIFFRX.bit.RXFFST!= 0){ RxMODBUS[I]=ScicRegs.SCIRXBUF.ALL; i++;//读取数据} for (z=0;z<500;z++){ } } 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; }
您好 Devin、
我使用了 ISO3082。
当我读取 FIFO 时、帧是我所期望的、但错误标志会出现、这样我就不能再次处理中断
。 当我移除 GPIO19状态更改部件时、一切正常。
此致
Szymon