通过 stty 对串行设置进行故障排除

通过 stty 对串行设置进行故障排除

硬件

PHYTEC Mira 板MX6处理器

操作系统

使用 PHYTEC 提供的 BSP 创建的 Yocto 映像来源里面有最小的包。

该板有一个 UART 板,称为串口3其操作系统内的软件接口是/dev/ttymxc2 硬件手册。唯一可用于检查/设置板上串行端口的是stty

任务

我希望连接一个Adafruit 终极 GPS串口3在 Mira Board 上读取其中的信息。

尝试1

我按照以下方式连接了两个组件。

UART3_RXD_RS232 (MIRA) --> TX pin (GPS)
UART3_TXD_RS232 (MIRA) --> RX pin (GPS)

设置串口如下:

 stty -F /dev/ttymxc2 speed 9600

读取值:

 cat /dev/ttymxc2

结果:垃圾值。尝试了所有可能的设置,但仍然获得垃圾值。编写了一个简单的node脚本来尝试读取来自端口的信息,但出现错误,指出无法识别字符(垃圾值)。

尝试2

最初,我尝试将 GPS 连接到一个简单的 Arduino Nano,以从 GPS 获取值,结果成功,确认 GPS 发送信息并且没有发生缺陷。

我连接 Mira 和 Arduino 的串行端口,并尝试将信息从 Mira 发送到 Arduino 的串行接口,并通过串行控制台读取它。

设置

   MIRA_Board (serial UART3) ---> Arduino Nano (Serial Pins) --USBCable--> Computer

针脚

 UART3_RXD_RS232 (MIRA) --> RX PIN NANO
 UART3_TXD_RS232 (MIRA) --> TX PIN NANO

我通过 SSH 登录 Mira 板。触发以下命令,希望通过Arduino在计算机的串行控制台上期望相同的值

 echo 'hello' > /dev/ttymxc2

结果:控制台上仍然是垃圾值。 腻子上的结果

的配置/dev/ttymxc2如下

stty -F /dev/ttymxc2 -a                       
speed 9600 baud;stty: /dev/ttymxc2 line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;   -parenb -parodd cs8 hupcl -cstopb cread clocal –crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8  
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0   
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

如果此问题是由于串行配置不匹配造成的,如何使用 进行故障排除stty

聚苯乙烯:GPS的波特率应该是9600这样的

答案1

您可以尝试在 Mira 板上使用 UART1 或 UART2。根据手册他们使用TTL电平信号。 GPS 模块输出 3 V,但输入可承受 5 V。 +3 V 应足以被解释为 TTL 输入上的“1”。 RS-232 信号不适合没有缓冲器,因为 RS-232 指定 +3..+12 V 表示空间状态,-3..-15 V(即15 V)用于标记状态。

相关内容