在实现MODBUS通讯时遇到问题,请高手指点。谢谢!
1.协议偶 8 1,中断接收中断发送(后来改查询发送,效果一样)。SCI配置:
SciaRegs.SCICTL1.bit.RXENA=1;
SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
SciaRegs.SCICTL1.bit.SWRESET=1;
2 问题:上位机标准MODBUS设备(触摸屏)。字节数少(13bytes)正常。发送字节较多时(实例71字节),通过中断查看发送前缓存数据表正常,继续发送后串口助手接收到的数据经常少一个(触摸屏也不能正常接收),而且数据内容在35字节后出现错误。
3查询发送在main函数主循环中:
if(DIR==1)
{
if(UARTa.TxNUM>0)
{
while(SciaRegs.SCICTL2.bit.TXRDY==0){}
SciaRegs.SCITXBUF=UARTa.Buff[UARTa.TxCount];
UARTa.TxNUM–;
UARTa.TxCount++;
}
else
{
DIR = 0;
SciaRegs.SCICTL1.bit.TXENA=0;
SciaRegs.SCICTL1.bit.RXENA=1;
UARTa.RxCount = 0;
UARTa.TxNUM = 0;
}
}
Seven Han:请问您的波特率设置是多少?
串口的tx与rx以及gnd的接线是双绞屏蔽线么?
在实现MODBUS通讯时遇到问题,请高手指点。谢谢!
1.协议偶 8 1,中断接收中断发送(后来改查询发送,效果一样)。SCI配置:
SciaRegs.SCICTL1.bit.RXENA=1;
SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
SciaRegs.SCICTL1.bit.SWRESET=1;
2 问题:上位机标准MODBUS设备(触摸屏)。字节数少(13bytes)正常。发送字节较多时(实例71字节),通过中断查看发送前缓存数据表正常,继续发送后串口助手接收到的数据经常少一个(触摸屏也不能正常接收),而且数据内容在35字节后出现错误。
3查询发送在main函数主循环中:
if(DIR==1)
{
if(UARTa.TxNUM>0)
{
while(SciaRegs.SCICTL2.bit.TXRDY==0){}
SciaRegs.SCITXBUF=UARTa.Buff[UARTa.TxCount];
UARTa.TxNUM–;
UARTa.TxCount++;
}
else
{
DIR = 0;
SciaRegs.SCICTL1.bit.TXENA=0;
SciaRegs.SCICTL1.bit.RXENA=1;
UARTa.RxCount = 0;
UARTa.TxNUM = 0;
}
}
JIANGBO WANG:
回复 Seven Han:
波特率19200 非严格通讯连接方式。实验室调试状态:线长1米左右4个设备,3#站、本机4#站、USB485转换器、上位机。双绞屏蔽线菊连方式。