1.Modbus协议
我理解他就相当于一个字典,作用就是:我发送的一帧数据,你能够明白我的意思,然后快速的给我回个话。
2.DSP端
使用DSP其实就是用了他的SCI通信,通过串口与PC上的Modbus Slave通信。讲白了,Modbus仅仅规定了 发送数据 的内容。如地址,功能码,操作的寄存器地址,操作的寄存器的值,CRC16校验。在使用的时候一定要注意,CRC16校验码一定不能出错,如果错了,Modbus Slave是不能识别的,就会回传错误的数据。
这边要注意的是:
- 发送数据时,发送的是16进制的数据,所以可以直接将这个数据写到SCITXBUF中去发送,不能放在发送字符串的程序中混用。
- 接收数据时,创建一个数组,注意数组的长度其实是与发送的命令字相关的。需要判断RXFFST是不是等于0。RXFFST本质是显示FIFO的使用量,然后你读走一个FIFO,这个RXFFST就减少1。这边的判断条件就可以设置为下边。
3.Modbus Slave端
这个端口的操作比较少,就是设置波特率,通信的数据模式。
4.验证
4.1 DSP读Slave的数据——功能码03
从图中可以看到:成功的读到了第一个寄存器的值2