查看: 14843|回复: 13

Freemodbus在051开发板移植成功

    [复制链接]
  • TA的每日心情
    开心
    2013-1-26 15:13
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-1-26 14:21:21 | 显示全部楼层 |阅读模式
    分享到:
    从21号开始计划移植Freemodbus到清风051的开发板上,找了一些资料,主要是参考了《STM32 移植FreeModbus 详细过程》这篇文字,http://www.amobbs.com/thread-5491615-1-1.html,阿莫是个比较不错的论坛,建议大家多去转转,会很有帮助。
    详细的解释就不说了,上文提到的那篇帖子已经讲的很详细了,这里就说说移植过程中遇到的问题:
    开始移植的时候我对定时器就不是很了解,于是看了版主的文档,也在群里问了一下,知道了定时器工作频率分频器和定时器内部分频器是两个不同的分频器,当时觉得反正两个都可以分频,随便用一个好了,选了外部那个分频器,TIM_PrescalerConfig(TIM3, PrescalerValue, TIM_PSCReloadMode_Immediate);  然后再调试的时候一直出现在收到一个数据后就进入了3.5T的超时中断,怎么搞也搞不定,耗费了很多时间,后来没办法了,想想要不试试只用内部那个分频器,就把这句话注释掉了,用了分频器内部做了预分频,结果居然就可以了,完整的一帧收到了,而且CRC校验也正确,真是有点无语了,有没有人知道为啥?

    当接收数据正确之后发现modbuspoll还是收不到数据,再设中断找原因,有个小插曲:发现居然发送帧也并不是预期的帧,而是一个地址错误帧,后来回想起起始地址的问题,因为PLC系统起始地址为1,而很多单片机系统都是0,这个在上述那个帖子里也有提到,而freemodbus又是按起始1开始的,超出了地址边界了,所以出现地址错误帧,于是在回调函数中再将地址减一,这样回复帧的数据就正确了。

    但是modbupoll还是收不到数据,仔细查了软件代码,端口设置,什么的都应该没问题,因为485之前调的也比较多了,感觉软件也不会出问题了,怀疑是不是硬件有问题,就打算用万用表量一下485芯片读写控制引脚的电平,发送时的高电平应该为高,可是一量居然2、3引脚没连着一起,后来看了版主的原理图,原来也没有黑点点,确实没连,这个确实很容易出错,各位做硬件设计的以后也要小心。最后补锡,上电,开modbuspoll终于看到了正确的回复。

    另外,在串口中断处理函数中增加了一些错误处理,貌似发生溢出错误时会一直进中断,这是个小bug?参考http://blog.csdn.net/love_maomao/article/details/8234039 这篇文章。

    还有如果用IAR的编译是出现大量Error[Pa045]: function "xxx" has no prototype这种错误时,在Options里去掉Require prototype选项就可以了



    评分

    参与人数 1与非币 +5 收起 理由
    小菜儿 + 5 赞一个!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2013-1-26 15:13
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-1-26 14:26:48 | 显示全部楼层
    上一下IAR的工程代码

    testFreeModbus_STM32F051.zip

    9.76 MB, 下载次数: 609

    IAR工程代码

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-1-26 14:38:19 | 显示全部楼层
    gwtaa 发表于 2013-1-26 14:26
    上一下IAR的工程代码

    干嘛自己做沙发。下次让我来抢哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-1-26 14:43:37 | 显示全部楼层
    相当不错
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-1-26 15:13
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-1-26 15:10:32 | 显示全部楼层
    刚才用modbus poll测试了10000多个数据包,没有错误
    2013-1-26 15-08-27.jpg
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2013-1-26 15:49:57 | 显示全部楼层
    gwtaa 发表于 2013-1-26 15:10
    刚才用modbus poll测试了10000多个数据包,没有错误

    学习了~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-9-27 18:00
  • 签到天数: 327 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-1-27 10:31:14 | 显示全部楼层
    来看看   
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-1-26 15:13
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-2-2 15:47:00 | 显示全部楼层
    折腾啊,在stm8s207上也算差不多了,但是有个小bug:就是上电后第一次发送过来的数据,再回复主机时,主机收到那帧的第一个字节(从地址)丢掉了,之后的包都是好的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-12 10:32
  • 签到天数: 295 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-9-7 12:11:23 | 显示全部楼层
    学习了~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-6-2 01:53
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-9-28 10:58:21 | 显示全部楼层
    多謝樓主!!加緊練功!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 22:08 , Processed in 0.229769 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.