打印

详析串口TX的可选延迟功能

[复制链接]
501|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xyz549040622|  楼主 | 2024-1-19 05:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
可选延迟(Optional Delay)是一个功能,它允许在开始新的传输之前确保UART(通用异步收发传输器)TX(发送线)处于空闲状态。这个功能通常用在需要等待上一个数据包完全发送完成后,才能开始新的数据包传输的场景中。

UART传输涉及到的空闲状态检测通常是基于以下几个步骤:

1. 检测停止位:在串行通信中,一个字符的发送是以起始位开始,紧接着是数据位,可能的奇偶校验位,最后是停止位结束。当检测到停止位,表示当前的数据字节已经发送完毕。

2. 确认发送移位寄存器为空:UART模块通常具有一个发送移位寄存器,用于保存正在发送的数据。如果移位寄存器为空,意味着没有数据正在发送。

3. 等待UART空闲:某些UART模块提供了一个状态标志,用来指示UART是否空闲。如果UART状态表明空闲,那么它就可以开始发送新的数据。

实现可选延迟确保UART TX空闲的方法可能包括:

- 软件轮询:定期检查UART的状态寄存器,以确定是否所有数据都已发送完毕,并且UART处于空闲状态。

- 使用硬件流控制:如RTS/CTS(请求发送/清除发送)信号,这些硬件信号可以自动管理发送和接收器之间的数据流,确保不会在上一个传输未完成时开始新的传输。

- 使用中断:配置UART发送完毕中断,当一个数据包发送完成后,UART会触发一个中断信号,通过中断服务程序来管理下一次数据的发送。

- 延时函数:在发送函数中加入一个固定的延时,尽管这种方法简单,但不够灵活,可能会浪费处理器时间,特别是在不同的波特率设置下。

确保UART TX空闲状态的方法取决于具体的应用需求、处理器的能力和可用的UART硬件特性。在设计系统时,需要平衡性能、可靠性和资源的使用,以选择最适合的方法。

使用特权

评论回复
沙发
t1ngus4| | 2024-1-26 17:56 | 只看该作者
串口的可选延迟?第一次听过,有点意思

使用特权

评论回复
板凳
liu96jp| | 2024-1-26 19:08 | 只看该作者
这种延迟有意义么?

使用特权

评论回复
地板
ex7s4| | 2024-1-26 20:13 | 只看该作者
我觉得不如加协议包,直接按照协议接收数据就好了

使用特权

评论回复
5
cen9ce| | 2024-1-26 21:16 | 只看该作者
这延迟功能没听过,咋实现啊?用delay么?

使用特权

评论回复
6
su1yirg| | 2024-1-26 22:33 | 只看该作者
串口可以直接接收的,没听说还带延迟的

使用特权

评论回复
7
q1ngt12| | 2024-1-27 08:22 | 只看该作者
不理解你的串口发送延迟功能是什么应用场景

使用特权

评论回复
8
suw12q| | 2024-1-27 09:17 | 只看该作者
一般就加延迟函数应该就行了

使用特权

评论回复
9
q1d0mnx| | 2024-1-27 09:24 | 只看该作者
正常发送呗,对方接收部分好好处理就好了

使用特权

评论回复
10
l1uyn9b| | 2024-1-27 10:15 | 只看该作者
做成协议吧,就比如接收端说自己能收数据了,你发送端再发送就好了

使用特权

评论回复
11
b5z1giu| | 2024-1-27 12:06 | 只看该作者
不会玩,一般都是实时发送和接收的,没做过可选延迟功能

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2754

主题

19237

帖子

104

粉丝