搜索
bottom↓
回复: 5

问个STM32F407关于485延时的问题

[复制链接]

出390入22汤圆

发表于 2020-8-7 18:24:01 | 显示全部楼层 |阅读模式
本帖最后由 liudingding 于 2020-8-7 18:26 编辑

这几天在调试407的485,有个问题没弄明白,问一下,可能我的问题有问题,不要见怪
我用的波特率是57600,发送一个字节是10波特,发送1波特17点几微秒,发送一个字节10波特不到180微秒。
我的局部程序如下:
delay_us(20);
USART1->DR=u2;
delay_us(180);
USART1->CR1&=~(1<<3);            //关发送
rxd;
接收数据,延时20微秒,再发送u2,u2=2,rxd是切换485芯片至接收模式,现在的问题是:监控线上数据,如果延时180微秒,第一次监控到的数据是2,然后是0xFF,延时至260微秒,监控到的数据是0xE2,延时360微秒,监控到的数据才是2,我搞不明白,发送一个字节用不到180微秒,为什么要延时360微秒才能正确接受呢?

出0入16汤圆

发表于 2020-8-7 20:06:54 来自手机 | 显示全部楼层
第一读寄存器判断数据是否发送完成比延时来的靠谱。第二切换收发无需关闭发送控制485芯片的收发即可。最重要的485要用主从模式。

出0入50汤圆

发表于 2020-8-7 20:30:30 | 显示全部楼层
你这种用delay延时太特么对不起你用的407了,辣莫快的速度被你浪费不说,还会招来收发数据丢失的BUG。

使用发送完中断,在最后一个字节发完之后,立即切换到接收状态,包你高枕无忧,否则你毛估估的发送延时,如果遇上对方快速响应,485总线就会争抢了。

出0入31汤圆

发表于 2020-8-8 06:46:10 来自手机 | 显示全部楼层
示波器接上直接看看485方向控制信号以及收发信号

出190入0汤圆

发表于 2020-8-8 09:25:58 来自手机 | 显示全部楼层
像i2c或usart还用delay真是暴殄天物啊,估计都是从各开发板的demo代码学来的,责任很大啊!

出0入131汤圆

发表于 2020-8-8 10:28:12 | 显示全部楼层
不要用delay,用中断,开启发送完成中断,发完一个 在中断里发送下一个,最后一个发完,将485设置成接收状态
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 02:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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