开发环境:


(相关资料图)

主机:Ubuntu12.04

开发板:RT5350

Openwrt:Openwrt15.05

1 硬件原理

从RT5350的芯片手册上可以得知, RT5350一共有两个串口, 分别为UARTLite、 UART Full,详细定义如下。

表1

UART Lite 就是我们惯称为的串口 1,作为系统调试串口,通过这个串口,我们可以看到 OpenWrt(Linux)系统的启动信息,并且可以通过该串口来控制开发板。 UART Full 就是我们惯称为的串口 2,我们通常就是用它来做 Wi-Fi串口,然后用来控制其他串口设备。

表2

通过上表,我们发现串口 1 是和 GPIO15、16 复用的,而串口 2 是和 GPIO7~14 复用的。如果我们再详细的看芯片手册,我们就会发现,串口 2 其实也是和 I2S 复用的,具体如下。

表3

通过这张表格,我们就能找出串口 2 对应的管脚了。对于串口,我们其实也只用关系发送(TXD)、接受(RXD)和地(GND)三个引脚。因此,对于串口 2,也就是 I2SSDI、I2SWS、GND 三个引脚了。

2 OpenWrt 支持串口 2

为了使用开发板的串口 2,必须首先把串口使能,由于我们是使用的 MPRA2 这款路由的配置, 在它的配置上串口被配置成了 GPIO, 用于控制 LEDs, 所以这里需要把它改为串口模式。修改非常简单,只要修改 dts 配置文件就可以,这里就不啰嗦了,直接讲述如何修改串口的配置。

首先修改 target/linux/ramips/dts 目录下的 rt5350.dtsi 配置文件。默认的 rt5350.dtsi 配置文件,是将那个扩展串口状态给禁用了,所以我们看不到扩展串口。这里需要把那行去掉或者将状态改为 okay,详细如下。

rt5350.dtsi 配置文件中除了修改扩展串口状态外,还需要修改设备节点。

因为我们把扩展串口状态使能后,它将在调试串口的前面,扩展串口变为 ttyS0,而调试串口变为 ttyS1,所以这里需要把调试串口的 ttyS0,变为 ttyS1,具体如下。

修改后:

这样,rt5350.dtsi 配置文件就改完了,但是扩展串口相应引脚被设置为了 GPIO 模式,怎么样才能变为串口模式了呢?需要修改 MPRA2.dts 这个配置文件,同样位于源码target/linux/ramips/dts 目录下。

把 GPIO 模式去掉,把设置 GPIO 的设置项中 uartf 去掉,详细如下

修改后:

3 串口2 的简单测试

注意:开发板上必须进行如下短接。

图1

经过前面的努力,扩展串口 2 就可以使用了,扩展串口 2 的名字为 ttyS0,我们可以通过 echo hello f403tech > /dev/ttyS0 这个命令进行测试,如果对方接收到 hello f403tech这个字符串,那说明串口 2 已经可以正常使用了。注意,此时串口 2 默认的波特率是 9600。

图2审核编辑:汤梓红