gpt4 book ai didi

linux - UART 软件和硬件流控制,linux

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:44 26 4
gpt4 key购买 nike

目前,我正在测试2个RS485 UART端口之间的流控(只连接Rx和RX,Tx和Tx,DTS/CTS不连接)。

标志设置(在get和set属性之间)

  • 硬件流量控制:

tty.c_cflag |= CRTSCTS;//实时传输/连续传输tty.c_iflag &= ~(IXOFF|IXON|IXANY);

  • 软件流量控制:

tty.c_cflag &= ~CRTSCTS;tty.c_iflag |= (IXOFF|IXON|IXANY);

我假设如果我将 UART1 和 UART2 都设置为硬件流控制并且波特率很高(例如 460800 bps)或者以更高的波特率写入 UART1,从 UART2 以更低的波特率读取(), FIFO(目前是64byte)会随着内核发送一些通知而溢出。

但实际上,总是write()和read()成功。谁能告诉我如何观察缓冲区溢出的建议?

抱歉,如果我的问题有点乱,因为我是 Linux 新手。

非常感谢。

最佳答案

RS485标准中应该没有硬件流控。
由于API与RS232C标准共享,可以调用但不能有效工作。

另外,你写的64字节的FIFO是硬件(接口(interface)芯片)缓冲区,设备驱动也有软件缓冲区。缓冲区通常以千字节为单位存在。

难怪即使是高速,短数据大小的发送和接收也能正常结束。

通过检查接收数据的格式,检查命令和响应的平衡和顺序来进行溢出等判断。

关于linux - UART 软件和硬件流控制,linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com