硬件
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)用于标记状态。