OrangePi香橙派 开启Uart串口

1.WiringPi串口示例程序报错:No Such File or directory

香橙派虽然是一款性价比很高的Linux开发板,但是和树莓派相比,其开发文档、社区资源都相对匮乏,而且很多库都是从树莓派那移植过来的,比如控制IO的库:WiringPi,而这往往会导致一些错误的发生,比如这个让我头痛的串口错误:

OrangePi香橙派 开启Uart串口_第1张图片

 分析错误的原因,不难发现问题出在/dev/ttyAMA0这,ls /dev后发现香橙派的ubuntu系统下居然没有这个设备:

OrangePi香橙派 开启Uart串口_第2张图片

于是我就开始在网络上搜索,然而给出的解决方案多是树莓派的,因为树莓派蓝牙串口会与硬件串口冲突,而boot/overlays里有个文件是可以恢复硬件串口的,但是对于香橙派,我只想说连这个文件夹都木有啊!

2.香橙派的串口设备dev/ttySx

经过一系列的折腾,终于搞明白香橙派串口设备在哪

cat /proc/tty/drivers

OrangePi香橙派 开启Uart串口_第3张图片

香橙派的硬件串口Uart的设备名称为ttySx,usb串口名称为ttyUSBx ,而不是树莓派的设备名称ttyAMA0!

但是新的问题又来了,为什么没有ttyS1,ttyS2,ttyS3?

3.修改香橙派硬件配置文件script.fex

多谢https://blog.csdn.net/renpeng009672/article/details/85100828这篇文章的答案,真是网上找了好久好久都没有找到解决办法,真是要吐槽香橙派技术文档真是少,系统也BUG很多!

香橙派硬件配置可以通过修改script.fex完成(类似树莓派raspi-config的操作)

香橙派使用的是全志的芯片,该类芯片的硬件配置可以参考这份H3芯片手册

http://www.doc88.com/p-9681502404051.html

具体的操作方法:

(1)下载sunxi-tools并编译(如果没有git指令需要安装git)

git clone git://github.com/linux-sunxi/sunxi-tools.git
cd sunxi-tools
make

(2)复制/media/boot/script.bin文件,并用bin2fex工具转换为fex

cp /media/boot/script.bin /media/boot/script.bin.bak
cp /media/boot/script.bin ./
./bin2fex script.bin > ./script.fex

(3)fex文件就是文本文件可以直接编辑,里面包含了各种硬件的配置信息,参照全志H3芯片的配置手册,简直发现了新天地,以后有机会探索一下这个文件,这里我们先解决串口问题

我的设备是orangepi-pc-plus,找到uart的相关项目

[uart0]
uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PA04<2><1>
uart_rx = port:PA05<2><1>

[uart1]
uart_used = 0
uart_port = 1
uart_type = 4
uart_tx = port:PG06<2><1>
uart_rx = port:PG07<2><1>
uart_rts = port:PG08<2><1>
uart_cts = port:PG09<2><1>

[uart2]
uart_used = 0
uart_port = 2
uart_type = 4
uart_tx = port:PA00<2><1>
uart_rx = port:PA01<2><1>
uart_rts = port:PA02<2><1>
uart_cts = port:PA03<2><1>

[uart3]
uart_used = 0
uart_port = 3
uart_type = 4
uart_tx = port:PA13<3><1>
uart_rx = port:PA14<3><1>
uart_rts = port:PA15<3><1>
uart_cts = port:PA16<3><1>

对照手册的内容

OrangePi香橙派 开启Uart串口_第4张图片

uart1、2、3的used全部为0?????搞笑呢?????全部把串口屏蔽了,我还用啥啊。。。也不知道香橙派的工程师咋想的,全部打开,其中uart_port就是设备名称dev/ttySx中的x ,uart_type就是串口类型,我们一般就用TX/RX模式,所以其实给2就行,然后rts和cts都可以不用的,我们用;注释掉,修改后长这样:

[uart0]
uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PA04<2><1>
uart_rx = port:PA05<2><1>

[uart1]
uart_used = 1
uart_port = 1
uart_type = 2
uart_tx = port:PG06<2><1>
uart_rx = port:PG07<2><1>
;uart_rts = port:PG08<2><1>
;uart_cts = port:PG09<2><1>

[uart2]
uart_used = 1
uart_port = 2
uart_type = 2
uart_tx = port:PA00<2><1>
uart_rx = port:PA01<2><1>
;uart_rts = port:PA02<2><1>
;uart_cts = port:PA03<2><1>

[uart3]
uart_used = 1
uart_port = 3
uart_type = 2
uart_tx = port:PA13<3><1>
uart_rx = port:PA14<3><1>
;uart_rts = port:PA15<3><1>
;uart_cts = port:PA16<3><1>

但是这里还要注意

配置中有一个关于GPIO的配置,要让引脚成为串口引脚,还得屏蔽GPIO的初始化设置

[gpio_para]
gpio_used = 1
gpio_num = 18
gpio_pin_1 = port:PA06<1><0>
gpio_pin_2 = port:PA13<1><0>
gpio_pin_3 = port:PA14<1><0>
gpio_pin_4 = port:PA01<1><0>
gpio_pin_5 = port:PD14<1><0>
gpio_pin_6 = port:PA00<1><0>
gpio_pin_7 = port:PA03<1><0>
gpio_pin_8 = port:PC04<1><0>
gpio_pin_9 = port:PC07<1><0>
gpio_pin_10 = port:PA02<1><0>
gpio_pin_11 = port:PA21<1><0>
gpio_pin_12 = port:PA07<1><0>
gpio_pin_13 = port:PA08<1><0>
gpio_pin_14 = port:PG08<1><0>
gpio_pin_15 = port:PA09<1><0>
gpio_pin_16 = port:PA10<1><0>
gpio_pin_17 = port:PG09<1><0>
gpio_pin_18 = port:PG06<1><0>
gpio_pin_19 = port:PG07<1><0>

找到串口的引脚,都给注释掉,然后总数变一下

[gpio_para]
gpio_used = 1
gpio_num = 14
gpio_pin_1 = port:PA06<1><0>
;gpio_pin_2 = port:PA13<1><0>
;gpio_pin_3 = port:PA14<1><0>
;gpio_pin_4 = port:PA01<1><0>
gpio_pin_5 = port:PD14<1><0>
;gpio_pin_6 = port:PA00<1><0>
gpio_pin_7 = port:PA03<1><0>
gpio_pin_8 = port:PC04<1><0>
gpio_pin_9 = port:PC07<1><0>
gpio_pin_10 = port:PA02<1><0>
gpio_pin_11 = port:PA21<1><0>
gpio_pin_12 = port:PA07<1><0>
gpio_pin_13 = port:PA08<1><0>
gpio_pin_14 = port:PG08<1><0>
gpio_pin_15 = port:PA09<1><0>
gpio_pin_16 = port:PA10<1><0>
gpio_pin_17 = port:PG09<1><0>
;gpio_pin_18 = port:PG06<1><0>
;gpio_pin_19 = port:PG07<1><0>

这里一定要把串口引脚找到,包括之前对uart的配置,可以参考香橙派的硬件手册

OrangePi香橙派 开启Uart串口_第5张图片

到此,script.fex就修改完毕了

(4)将修改过的script.fex转回script.bin并放回原处

./fex2bin script.fex > ./script.bin
cp ./script.bin /media/boot/

(5)最后,重启系统,就可以看到所有的串口了,测试也是没问题的

reboot

OrangePi香橙派 开启Uart串口_第6张图片

4.关于i2c(twi)以及spi的配置完全可以参考本文进行,如果GPIO除了啥毛病没法执行底层命令,也可以找找script.fex这个脚本是不是有配置错的地方。最后还是得说:

                                             香橙派是个好派,就是得多费点心思

你可能感兴趣的:(香橙派)