社区闲人 发表于 2024-3-12 09:38:51

huiyong828 发表于 2024-3-12 09:30
是这样接二极管吗?

就是这样。

琪琪鸭 发表于 2024-3-12 21:58:50

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

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

huiyong828 发表于 2024-3-12 22:02:59

本帖最后由 huiyong828 于 2024-3-12 23:15 编辑

huiyong828 发表于 2024-3-12 09:30
是这样接二极管吗?







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



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




串口2中断收发函数如下:

在发送中断函数中添加也没有测试通过。



社区闲人 发表于 2024-3-13 14:22:40

阻塞模式,可以正常接收发送数据------说明串口OK了。
选用队列模式下,可以看到是收发控制IO问题,
发送时P24没有持续高电平导致的问题-------是代码问题。

huiyong828 发表于 2024-3-14 00:00:34

社区闲人 发表于 2024-3-13 14:22
阻塞模式,可以正常接收发送数据------说明串口OK了。
选用队列模式下,可以看到是收发控制IO问题,
发送时 ...

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




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







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

55337575 发表于 2024-3-19 09:31:27

这个问题是发送窗口开放时间太短造成的。特别是非阻塞发送!你可以在发送完成后,延时足够的时间来等待数据发送完成,然后芯片再配置为接收试试。比如9600bps,一字节完成发送需要时间0.1ms

18713087862 发表于 2024-3-19 10:17:10

485通讯简单的。而且他们也是这么商用的。家里创就有真正正确的例子。简单的很。程序不对啥都白费。

AI-32位8051 发表于 2024-3-19 16:13:51


ModBus从入门到实战视频回放

ModBus-STC开源原码 下载链接:

【新提醒】求STC8系列4个串口同时通信的程序,Modbus 演示程序 - 串行口,DMA支持的4组串口 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)



huiyong828 发表于 2024-3-20 07:00:18

STCAI-32位8051 发表于 2024-3-19 16:13


谢谢各位老师的指点,modbus双串口带max485芯片使能通讯问题解决了
1,芯片接收端口到max485接收需接二极管,修改硬件部分
2,max485芯片收发控制引脚,初始化使能接收,发送数据前使能控制引脚发送,主函数中判断发送忙标志位空闲使能控制引脚接收。
页: 1 [2]
查看完整版本: 【已解决】基于STC32G12K128芯片的MODBUS-RTU通信MAX485收发控制问题请教