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.
最近在做dsp与HMI之间基于Modbus的通讯,期望实现的功能是通过HMI实时监测显示dsp运行时的一些参数,比如电压,电流。dsp为从站,HMI为主站。当主站发送指令读取从站参数时,指令能够被接收并作帧解析,并构造应答帧。指令接收用的是SCI的FIFO接收中断;DSP向上位机回传应答帧的时候没有使用中断,当应答帧构造好后(应答帧能够正确构造)调用发送函数,发送函数如下,(应答帧为8字节,存储在数组ModbusMoudle.Buf[ ]中)
void sciaTx(void)
{int i;
for(i=0;i<ModbusModule.TxLen;i++)
{
SciaRegs.SCITXBUF = ModbusModule.Buf[ModbusModule.Point];
//DELAY_US(1000L);
ModbusModule.Point++;
}
ModbusModule.TxLen=0;
}
通过串口调试助手可以看到发送出来的应答帧有三个字节丢失,比如正确的应答帧为 01 03 00 02 82 04 85 99,在串口调试助手中看到的却是01 91 04 85 99;