485总线拖死求助
STM32+485通信,大部分时间工作正常,如果485总线通信频繁提高,偶发出现485总线挂了,也就是串口调试助手看数据是发送出去了,但是示波器看总线上没有电平变化,必须重启才能正常。求助各位分析下硬件是不是有什么缺陷隐患原因? 硬件原理图发出呗,这玩意没有啥保密的,基本上网络都有。
一般情况,软件从机通讯错误处理不当占比率较高。
有些,上位机发送间隔一定要长。否则会死机。
有些是多读几个寄存器就让从机一直处于发送状态,造成通讯堵塞。 lb0857 发表于 2024-4-27 18:35
硬件原理图发出呗,
这玩意没有啥保密的,基本上网络都有。
一般情况,软件从机通讯错误处理不当占比率较高 ...
(引用自2楼)
这种问题是软件引起的,与硬件无关。 can总线比485优先就提现出来了,can ip有仲裁 估计是总线上某个节点收发器一直处于发送状态导致 同意楼上,应该是程序问题,让某个节点一直处于发送状态了
lb0857 发表于 2024-4-27 18:35
硬件原理图发出呗,
这玩意没有啥保密的,基本上网络都有。
一般情况,软件从机通讯错误处理不当占比率较高 ...
(引用自2楼)
你好。
发送的图纸:
接收的图纸:
foxpro2005 发表于 2024-4-28 08:32
同意楼上,应该是程序问题,让某个节点一直处于发送状态了
(引用自6楼)
软件应该没问题 一主几从机?
同意5楼,大概率是某一个节点的DE引脚失控了,一直处于发送状态占住总线。 C22 C23 电容多了容易导致波形畸变,硬件上看上去问题不大,重启哪个能恢复,是单片机还是转换器,说不定是STM32卡死了独占了总线,或者本身转换器垃圾发多了就要死 本帖最后由 hz_fujian 于 2024-4-28 17:49 编辑
第二张图,485总线远距离肯定不可靠,必须增加一条地线,共3根线。(参照西门子) 一般是软件问题,一主一从的时候估计不出问题吧。估计就是多个从机的时候才出现问题的 honami520 发表于 2024-4-28 17:58
一般是软件问题,一主一从的时候估计不出问题吧。估计就是多个从机的时候才出现问题的 ...
(引用自13楼)
485主机轮询多从机我也搞不定,现在索性不搞了。 你这485硬件电平接口规范有些乱,一会儿3.3V系统,一会儿5V系统
另外一般情况下接口上也会把GND也引出去,A,B,GND,避免不同系统中的电势差。(注: 有的系统中还要用带隔离的485电路)
本帖最后由 hugohehuan 于 2024-4-29 01:13 编辑
线上串个小电阻,看看电流流向,是谁出的幺蛾子
还有,那个三角形的地有问题 tingfengqilang 发表于 2024-4-28 16:39
软件应该没问题
(引用自8楼)
确定?MCU的TXD波形正常?
485芯片的DE方向控制信号波形正常? tingfengqilang 发表于 2024-4-28 16:39
软件应该没问题
(引用自8楼)
相反{:lol:} 应该是软件问题 出问题后复位stm32后就好了,复位的是主机还是从机?万用表看是不是有发送器在发送状态呢?发送状态点个灯咯。 是不是收发延时时间太短??? 半双工通信,平时所有机都处于接收(/监听)状态;
只有主机发送查询命令(主机发送完毕转监听状态),地址对应的从机才应答/发送,发送完毕也转为监听状态;
lb0857 发表于 2024-4-29 11:24
相反
(引用自18楼)
那你就自以为是吧哈哈 youkebing 发表于 2024-4-29 12:20
应该是软件问题
(引用自19楼)
软件很简单,一个发送,一个接收。 Arm2048 发表于 2024-4-29 16:42
半双工通信,平时所有机都处于接收(/监听)状态;
只有主机发送查询命令(主机发送完毕转监听状态),地址对应 ...
(引用自22楼)
是的。就是这样啊 Elex 发表于 2024-4-29 01:04
确定?MCU的TXD波形正常?
485芯片的DE方向控制信号波形正常?
(引用自17楼)
是的,示波器测了 本帖最后由 XIE2099 于 2024-4-29 19:55 编辑
tingfengqilang 发表于 2024-4-29 17:12
是的,示波器测了
(引用自26楼)
1.建议用逻辑分析仪捕获数据分析,对比.改不同波特率试试
2.若是怀疑硬件问题,直接替换(买几个周立功的485模块,还会有技术支持的)https://item.taobao.com/item.htm?id=611871028495&skuId=4479643410666&spm=a1z10.5-c-s.w4002-21261668766.12.45de686bpydpbt 100%是软件问题, 就是控制方向的引脚被锁高电平了. 485是用的cubemx 生成的底层吗?cubemx生成的 UART代码底层 频繁接收和发送 会直接把中断卡死,之前遇到过 然后就再也进不去了 。 解决方法 好像是去底层里修改 示波器测量的ttl还是差分? ackyee 发表于 2024-4-30 08:47
485是用的cubemx 生成的底层吗?cubemx生成的 UART代码底层 频繁接收和发送 会直接把中断卡死,之前遇 ...
(引用自29楼)
哦哦哦波特率多少的应用场景出现 lb0857 发表于 2024-4-30 09:40
哦哦哦波特率多少的应用场景出现
(引用自31楼)
哪怕9600 都出现过只要 发送的时候 被接收打断,还是说接收的时候被发送打断, 串口中断就再也进不去了
修改底层就好 先检查软件,电路看着没啥问题。
如果软件确实没问题,换个485芯片试试。
之前遇到过一批采购不知道从哪家搞的485很容易就被静电或者强干扰搞死了。要么发不出要么收不到偶尔485还发热。
换正品就没问题 ackyee 发表于 2024-4-30 10:19
哪怕9600 都出现过只要 发送的时候 被接收打断,还是说接收的时候被发送打断, 串口中断就再也进不去了 ...
(引用自32楼)
485的发送逻辑如何能被接收打断?
收发器的模式设为发送,就无法接收了。
接收的时候被发送打断也不会发生啊,软件逻辑应该默认就是收,除非自己软件要发数据了才变成发。这并不是打断,而是你主动执行发送动作。
综上所述,只可能是写程序的自己逻辑混乱了 tingfengqilang 发表于 2024-4-29 17:12
是的,示波器测了
(引用自26楼)
示波器测cpu发送脚的同时,也应当测方向脚。如果确认了自己的方向是发,发送数据也有,然后总线上的波形不是你期望的,那就是别人也在发,跟你冲突了。 485芯片的地和tvs的地改成一个地试试
我猜测是软件问题,看看软件的故障寄存器...尤其是好几个中断类的.....发送前都清除..... 死机的时候一个一个的把从站拔掉看看是哪个不听话{:lol:} ackyee 发表于 2024-4-30 08:47
485是用的cubemx 生成的底层吗?cubemx生成的 UART代码底层 频繁接收和发送 会直接把中断卡死,之前遇 ...
(引用自29楼)
是听说么,还是自己碰到过 akey3000 发表于 2024-4-30 18:12
是听说么,还是自己碰到过
(引用自39楼)
有可能说的是全双工的488电路 akey3000 发表于 2024-4-30 18:12
是听说么,还是自己碰到过
(引用自39楼)
自己碰到过 我还发帖子过
页:
[1]