打印

freemodbus的调试问题

[复制链接]
1216|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bearfw|  楼主 | 2024-11-6 16:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bearfw 于 2024-11-6 17:03 编辑

最近在使用freemodbus的时候遇到了些问题与大家分享

freemodbus的波特率问题
在移植完freemodbus之后,尝试了一下进行通讯,发现上位机先是显示Timeout error,根据网上的建议,将#define RT_TICK_PER_SECOND这个值调整到1000,但是依旧没有效果(这里的CPU主频是72Mhz)。
在看到一篇帖子说可能是usTimerT35_50us的问题时间过快导致来不及判断于是我将他调大,直接给了350,上位机显示Checksum error,这个是校验错误
然后又看了一个帖子,说在vMBPortSerialEnavle(BOOL xRxEnable ,BOOL xTxEnable)这个函数中,切换485控制引脚的时候要进行时间延时,我添加了rt_hw_us_delay();这个函数进行延时,发现可以读到寄存器了,但是这时候我将读取寄存器的个数变成10个,马上又变成了Checksum error。
在后面突然灵感一闪,怎么只有写的时候有延时,读的时候没有延时,要切换引脚,两个都要有延时

加完之后,把之前的usTimerT35_50u调回来,不需要延迟那么多,然后10个寄存器也能读写了。

39897672b2f292a6ed.png (13.78 KB )

39897672b2f292a6ed.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

17

帖子

0

粉丝