Loopback/Echo 字节通过串口接收

Loopback/Echo bytes received over serial port

在嵌入式 Linux 系统上 运行 Busybox 我正在尝试通过串行端口接收字节并回显接收到的所有内容。

系统设置是这样的: Linux <-USB-> FTDI 芯片 <-UART-> MCU 在 UART 线上,我有一个逻辑分析仪监控 FTCI 芯片和 MCU 之间的数据。 MCU 和 Linux 具有相同的 UART 配置。

我编写的脚本在 Linux 系统上运行并且应该发回它从 MCU 接收到的所有数据。

到目前为止,我已经有了这个简单的 Bash 脚本,它可以接收 62 字节长的突发数据。超时设置为 5 秒作为一种活动信号。

#!/bin/bash

# Enable debugging
set -x

# Set the baudrate of the port 
stty -F /dev/ttyUSB0 1500000

while true
do 
  # Read 62 bytes with a timout of 5 seconds to variable RESP.
  read -N62 -t5 RESP < /dev/ttyUSB0

  # Print out how many bytes we received
  echo ${#RESP}

  # Send back the data, -n for no trailing new line
  echo -n $RESP > /dev/ttyUSB0
done

我在使用这个脚本时遇到了一些问题:

  1. 并非所有字节都能一致接收。我已经测试了一段时间,一次只看到完整的字节数。
  2. 它在UART总线上只输出0xFF值,这是通过逻辑分析仪观察到的。

为了接收正确的数据并将其正确发回,我在这里缺少什么?

通过@sawdust 的建议,我得到了一个有效的脚本。 最后我停止使用 read 命令。我无法让它在原始模式下工作。我无法在我的 Busybox 系统上使用 termios 作为它。我使用 dd:

得到了一个有效的设置
#!/bin/bash

stty -F /dev/ttyUSB0 raw
stty -F /dev/ttyUSB0 1500000

dd if=/dev/ttyUSB0 count=62 of=/dev/ttyUSB0