找回密码
 立即注册
楼主: huiyong828

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-07 03:58:34

24

主题

517

回帖

1014

积分

荣誉版主

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

就是这样。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:48
  • 最近打卡:2025-05-05 22:08:38

9

主题

62

回帖

701

积分

高级会员

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

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-05-07 14:11:58

6

主题

27

回帖

150

积分

注册会员

积分
150
发表于 2024-3-12 22:02:59 | 显示全部楼层
本帖最后由 huiyo*** 于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-07 03:58:34

24

主题

517

回帖

1014

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-05-07 14:11:58

6

主题

27

回帖

150

积分

注册会员

积分
150
发表于 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通讯可以同时工作操作对应的变量。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:381
  • 最近打卡:2025-05-07 09:00:14

1

主题

29

回帖

420

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:34
  • 最近打卡:2025-05-07 09:55:45

25

主题

1159

回帖

2409

积分

超级版主

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-05-07 14:11:58

6

主题

27

回帖

150

积分

注册会员

积分
150
发表于 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, 2025-5-7 15:05 , Processed in 0.126763 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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