野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5496|回复: 3

繁星开发板485通讯接收数据丢字节

[复制链接]
发表于 2022-6-17 18:55:42 | 显示全部楼层 |阅读模式
用485和一个编码器通讯,发送读取命令后立即使能接收(不加延时),编码器返回的5个字节只能收到4个,收到的后三个字节是对的,而收到的第一个字节并不是发的第一或第二个字节。正常情况下返回的前两个字节是0x0208,收到的是0x84或0x42。上电时和校准时能正确收到5个字节,只有发送读取命令后接收有问题。
发送命令后增加延时再使能,收到的字节就更少了。
也怀疑过传感器,但使用usb转485接传感器,发读取命令收到的数据是正常的。
回复

使用道具 举报

发表于 2022-6-18 17:45:37 | 显示全部楼层
拔掉485那个并联的电阻试下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-18 21:02:57 | 显示全部楼层
本帖最后由 李四 于 2022-6-19 09:30 编辑
WishWish 发表于 2022-6-18 17:45
拔掉485那个并联的电阻试下

这个试过了,包括输入模式和电阻的各种组合都试了。
现在怀疑是不是PH9到485芯片RE的光耦EL357N延迟太大,第一时间使能接收也收不到传感器返回来的第一个字节。
怀疑的另一个理由是,在485通讯实验例程里,把发送使能和接收使能的所有延迟都去掉,甚至把发送字节后对UART_FLAG_TXE的判断也去掉。也就是说发送使能后立刻用HAL_UART_Transmit发送一个读取指令字节,然后立刻使能接收。按时序来说这个字节应该发不出去,但实际上发出去了并且能够收到传感器返回的数据(前两个字节不对)。这说明发送和接收使能的实际响应比较慢。
软件上我已经直接用_485_RE_GPIO_PORT->BSRR = _485_RE_PIN进行接收使能了,所以我觉得延迟应该在PH9的GPIO输出或光耦上。
如果GPIO输出设置上解决不了,我可能要拆光耦试试了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-20 14:44:01 | 显示全部楼层
拆了EL357N光耦解决问题。拆了芯片将原pin2、pin3连上,PH9的使能信号取反。发送指令UART_FLAG_TC后使能接收,不加任何延迟,终于收到完整传感器数据。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-3 20:46 , Processed in 0.034978 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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