找回密码
 立即注册
楼主: huiyo***

【已解决】基于STC32G12K128芯片的MODBUS-RTU通信MAX485收发控制问题请教

[复制链接]
  • TA的每日心情
    开心
    昨天 11:48
  • 签到天数: 160 天

    [LV.7]常住居民III

    17

    主题

    370

    回帖

    1313

    积分

    荣誉版主

    积分
    1313
    发表于 2024-3-12 09:38:51 | 显示全部楼层
    huiyong828 发表于 2024-3-12 09:30
    是这样接二极管吗?

    就是这样。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    7

    主题

    46

    回帖

    385

    积分

    中级会员

    积分
    385
    发表于 2024-3-12 21:58:50 | 显示全部楼层
    huiyong828 发表于 2024-3-12 00:00
    期待老师的指点,硬件部分之前用其它型号单片机测试过没问题的。
    问题还是出在收发控制部分逻辑问题 ...

    楼主问题解决了吗  我看了下我的原理图正如楼上所说确实也加了一个二极管。。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 2 天

    [LV.1]初来乍到

    6

    主题

    27

    回帖

    138

    积分

    注册会员

    积分
    138
     楼主| 发表于 2024-3-12 22:02:59 | 显示全部楼层
    本帖最后由 huiyong828 于 2024-3-12 23:15 编辑
    huiyong828 发表于 2024-3-12 09:30
    是这样接二极管吗?

    截图202403122229305684.jpg


    截图202403122155512528.jpg

    截图202403122156162575.jpg

    串口发送模式选用阻塞模式,可以正常接收发送数据,如下图
    截图202403122158427847.jpg
    截图202403122159282419.jpg

    谢谢各位朋友的大力协助!
    现在问题:
    1.是为什么在芯片接受端接肖特基二极管能正常工作?还请各位老师指点,这颗芯片与其它型号芯片区别在哪里??
    2.工程中如发送选用队列模式,如何实现?
    下图是选用队列模式下,可以看到是收发控制IO问题,发送时P24没有持续高电平导致的问题.




    串口2中断收发函数如下:
    截图202403122249416226.jpg
    在发送中断函数中添加也没有测试通过。



    截图202403122155111917.jpg
    截图202403122223258965.jpg
    截图202403122223534427.jpg
    截图202403122224183551.jpg
    截图202403122224493095.jpg
    截图202403122231394093.jpg
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:48
  • 签到天数: 160 天

    [LV.7]常住居民III

    17

    主题

    370

    回帖

    1313

    积分

    荣誉版主

    积分
    1313
    发表于 2024-3-13 14:22:40 | 显示全部楼层
    阻塞模式,可以正常接收发送数据------说明串口OK了。
    选用队列模式下,可以看到是收发控制IO问题,
    发送时P24没有持续高电平导致的问题-------是代码问题。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 2 天

    [LV.1]初来乍到

    6

    主题

    27

    回帖

    138

    积分

    注册会员

    积分
    138
     楼主| 发表于 2024-3-14 00:00:34 | 显示全部楼层
    社区闲人 发表于 2024-3-13 14:22
    阻塞模式,可以正常接收发送数据------说明串口OK了。
    选用队列模式下,可以看到是收发控制IO问题,
    发送时 ...

    双串口单独配置,发送选用队列模式已经调试通过了
    截图202403132352114304.jpg

    截图202403140000212494.jpg

    数据解析后发送数据前现配置MAX485芯片发送模式,主函数中判断发送忙碌标志为零,即发送接受,配置MAX485芯片接受模式。
    截图202403132355236084.jpg

    截图202403132355434188.jpg


    截图202403132356159204.jpg

    数据正确。
    现在的问题需要整合两个串口函数,实现两个RS485通讯可以同时工作操作对应的变量。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-22 08:53
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    7

    主题

    37

    回帖

    251

    积分

    等待验证会员

    积分
    251
    发表于 2024-3-19 09:31:27 | 显示全部楼层
    这个问题是发送窗口开放时间太短造成的。特别是非阻塞发送!你可以在发送完成后,延时足够的时间来等待数据发送完成,然后芯片再配置为接收试试。比如9600bps,一字节完成发送需要时间0.1ms
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:48
  • 签到天数: 45 天

    [LV.5]常住居民I

    0

    主题

    13

    回帖

    206

    积分

    中级会员

    积分
    206
    发表于 2024-3-19 10:17:10 来自手机 | 显示全部楼层
    485通讯简单的。而且他们也是这么商用的。家里创就有真正正确的例子。简单的很。程序不对啥都白费。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-24 13:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    8

    主题

    623

    回帖

    1036

    积分

    超级版主

    积分
    1036
    发表于 2024-3-19 16:13:51 | 显示全部楼层
    STC官网:https://www.stcai.com/
    QQ:2593903262
    微信号:18106296598
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 2 天

    [LV.1]初来乍到

    6

    主题

    27

    回帖

    138

    积分

    注册会员

    积分
    138
     楼主| 发表于 2024-3-20 07:00:18 来自手机 | 显示全部楼层
    STCAI-32位8051 发表于 2024-3-19 16:13

    谢谢各位老师的指点,modbus双串口带max485芯片使能通讯问题解决了
    1,芯片接收端口到max485接收需接二极管,修改硬件部分
    2,max485芯片收发控制引脚,初始化使能接收,发送数据前使能控制引脚发送,主函数中判断发送忙标志位空闲使能控制引脚接收。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-6 09:19 , Processed in 0.068828 second(s), 61 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表