UART 软件和硬件流控制,linux

UART SW and HW flow control, linux

目前正在测试2个RS485串口之间的流控(只接Rx和RX,Tx和Tx,DTS/CTS没接)

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

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

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

我假设如果我将 UART1 和 UART2 都设置为硬件流控制并且波特率很高(例如 460800 bps)或者以更高的波特率写入 UART1,从 UART2 以较低的波特率读取()- rate, FIFO (currently is 64byte) will overflow as same kernel send some notification.

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

抱歉,如果我的问题有点乱,因为我是新 linux 瘦者。

非常感谢。

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

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

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

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