完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你们有没有在使用RTthread uart tx_poll的时候遇到问题,我要用485通信,然后我要发送数据之前会设置max3485为发送模式,然后调用rt_device_write之后我立即设置为接收模式,一直有问题,后来我发现rt thread里面串口轮询发送的判断逻辑是以发送数据寄存器空认为发送完成了,并不是以移位寄存器发送完成来判断的。
我后来通过逻辑分析仪先看波形发现EN引脚提前被拉低了,所以倒推过来查发送逻辑的,我的疑问是这种问题已经很常见,为什么他们的驱动里面没有考虑这种事情 |
|
相关推荐
1个回答
|
|
您遇到的问题确实比较常见,尤其是在使用RS485通信时。RS485通信是一种差分信号通信方式,通常用于工业环境中,因为它具有较好的抗干扰能力。MAX3485是一款常用的RS485收发器芯片,它具有发送和接收两种模式。在发送数据时,需要将MAX3485设置为发送模式,而在接收数据时,需要将其设置为接收模式。
关于您的问题,我将从以下几个方面进行分析: 1. **RT-Thread UART TX轮询发送机制**: RT-Thread的UART驱动通常采用轮询发送的方式,即在发送数据时,会不断检查发送数据寄存器(TX FIFO)是否为空,一旦为空,就认为数据已经发送完成。这种机制在大多数情况下是有效的,但在某些特定情况下,可能会导致数据未能全部发出。 2. **MAX3485的发送和接收模式切换**: 在发送数据之前,需要将MAX3485的RE#引脚拉低,以进入发送模式;发送完成后,需要将RE#引脚拉高,以进入接收模式。这个过程需要一定的时间,因为MAX3485内部需要完成发送模式和接收模式的切换。 3. **EN引脚的作用**: EN引脚是MAX3485的使能引脚,用于控制芯片的工作状态。在发送数据时,需要将EN引脚拉高,以使能芯片;发送完成后,需要将EN引脚拉低,以关闭芯片。这个过程同样需要一定的时间。 4. **可能的问题原因**: 您提到在调用`rt_device_write`之后立即设置为接收模式,这可能导致MAX3485在发送数据的过程中被切换到接收模式,从而导致数据未能全部发出。这是因为RT-Thread的UART驱动以发送数据寄存器空为判断依据,而没有考虑到MAX3485内部的发送和接收模式切换时间。 5. **解决方案**: 为了解决这个问题,您可以尝试以下方法: - 在发送数据之前,确保MAX3485处于发送模式,并且EN引脚被拉高。 - 在调用`rt_device_write`之后,不要立即切换到接收模式,而是等待一段时间(例如1ms),以确保MAX3485完成发送数据的过程。 - 在等待时间结束后,再将MAX3485切换到接收模式,并拉高EN引脚。 6. **关于RT-Thread驱动的改进**: 您提到的问题是一个很好的反馈,可以考虑向RT-Thread社区提交一个改进建议或者自己修改驱动代码,以解决这个问题。在修改驱动代码时,可以考虑增加一个参数,用于控制发送完成后的延时时间,以便更好地适应不同的硬件和应用场景。 总之,您遇到的问题可能是由于RT-Thread UART驱动的发送机制和MAX3485的发送/接收模式切换时间不匹配导致的。通过调整发送完成后的延时时间,或者改进驱动代码,应该可以解决这个问题。同时,也可以考虑向RT-Thread社区反馈这个问题,以促进驱动的改进和完善。 |
|
|
|
只有小组成员才能发言,加入小组>>
150个成员聚集在这个小组
加入小组【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
849 浏览 0 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
1055 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
822 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
1132 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board使用7寸屏设置为RGB666大端模式模式成功显示摄像头图案
1112 浏览 0 评论
STM32F407ZGT6 spi flash片选引脚无法被拉低的原因?怎么解决?
1170浏览 2评论
移植RT-THREAD在stm32开发板上,使用rt_kprintf不能正常打印的原因是什么?怎么解决?
494浏览 2评论
stm32f103zet用rtthread studio生成带finsh的项目程序,串口输入help没有反应是为什么?
503浏览 2评论
rtthread studio已经成功编写了外部flash下载算法,程序也能下载进去但是不能进行调试怎么办?
422浏览 2评论
rt-thread 4.1.1的pin的实际引脚编号和内核引脚编号的对应关系在哪个文件里面能找到?
419浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 13:43 , Processed in 0.367564 second(s), Total 47, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号