我用的2812的scib通讯,RS485,modbus协议,FIFO中断方式,用了01和03两个功能码,01功能码总共19个字节,前面16个字节电脑能收到,后面3个字节电脑收不到,03功能共37个字节,前面32字节电脑能收到,后面5个字节电脑收不到,请问是什么原因?
Jason Wu4:
你的FIFO发送中断级位设定为多少?
我用的2812的scib通讯,RS485,modbus协议,FIFO中断方式,用了01和03两个功能码,01功能码总共19个字节,前面16个字节电脑能收到,后面3个字节电脑收不到,03功能共37个字节,前面32字节电脑能收到,后面5个字节电脑收不到,请问是什么原因?
zhaogong zhao:
回复 Jason Wu4:
ScibRegs.SCIFFTX.bit.TXFFILIL=0;
我用的2812的scib通讯,RS485,modbus协议,FIFO中断方式,用了01和03两个功能码,01功能码总共19个字节,前面16个字节电脑能收到,后面3个字节电脑收不到,03功能共37个字节,前面32字节电脑能收到,后面5个字节电脑收不到,请问是什么原因?
zhaogong zhao:
回复 zhaogong zhao:
当scififo里的数据发送完毕后,哪个寄存器的哪个位会置1?
我想在程序里检测这个位,如果检测到这个位为1,延时后就关掉RS485的发送。
我用的2812的scib通讯,RS485,modbus协议,FIFO中断方式,用了01和03两个功能码,01功能码总共19个字节,前面16个字节电脑能收到,后面3个字节电脑收不到,03功能共37个字节,前面32字节电脑能收到,后面5个字节电脑收不到,请问是什么原因?
Jason Wu4:
回复 zhaogong zhao:
您可以尝试检测缓存中的状态标志位TXFFST
我用的2812的scib通讯,RS485,modbus协议,FIFO中断方式,用了01和03两个功能码,01功能码总共19个字节,前面16个字节电脑能收到,后面3个字节电脑收不到,03功能共37个字节,前面32字节电脑能收到,后面5个字节电脑收不到,请问是什么原因?
zhaogong zhao:
回复 Jason Wu4:
谢谢,我是在ADC中断程序里发送最后几个字节数据时,做了一个标志位,然后在主程序里监测这个标志,同时还监测TXFFINT这个位,一旦监测到这个标志为1就延时DELAY_US(550l);然后关掉RS485的发送使能,已正常。
我用的2812的scib通讯,RS485,modbus协议,FIFO中断方式,用了01和03两个功能码,01功能码总共19个字节,前面16个字节电脑能收到,后面3个字节电脑收不到,03功能共37个字节,前面32字节电脑能收到,后面5个字节电脑收不到,请问是什么原因?
Jason Wu4:
回复 zhaogong zhao:
顺便问一句,当您中断标志为1时,说明发送缓存内发送完成,经过一段延迟后你为啥要关掉RS485的发送呢?