硬件
带有i.MX6处理器的PHYTEC Mira 板
操作系统
Yocto Image 使用 PHYTEC Source提供的 BSP 创建,其中包含最少的包。
该板有一个称为UART3的 UART 板,其在操作系统中的软件接口是/dev/ttymxc2
Hardware Manual。唯一可用于检查/设置板上串行端口的是stty
.
任务
我希望将Adafruit Ultimate GPS连接到UART3,以在 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
?
PS:GPS的波特率应该是9600
这种情况
您可以尝试在 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)。