0x00 前言
首先介紹RPI3中的兩個(gè)串口
/dev/ttyAMA0:
RPI3配備了藍(lán)牙蜘醋,為了保證藍(lán)牙的正確使用咏尝,/dev/ttyAMA0則不再為GPIO串口服務(wù),而是為藍(lán)牙模塊服務(wù)胎食。/dev/ttyS0:
被稱為"mini uart"允懂,此串口代表了"Physical pin 8|10 BCM pin 14|15Wiring Pi pin 15|16".
但是由于次串口波特率收到cpu頻率影響,并不穩(wěn)定蕾总,所以實(shí)際上無法被用來串口通信。
workaround思路:將ttyAMA0和ttyS0互換递雀,那么gpio tx\rx串口映射給ttyAMA0蚀浆,ttyS0則映射給藍(lán)牙設(shè)備搜吧。
這樣gpio 14杨凑、15串口就擁有了穩(wěn)定,強(qiáng)大的通信功能蜒程。
而藍(lán)牙串口則無法正常使用鹦牛。
0x01 激活串口功能
$ sudo nano /boot/config.txt
改變使得:enable_uart=1.
若無此參數(shù),則在最后一行添加:enable_uart=1.
重啟設(shè)備曼追。
0x02 查看串口別名
ls -l /dev
會(huì)發(fā)現(xiàn):
lrwxrwxrwx 1 root root 7 Aug 28 07:41 serial0 -> ttyS0
lrwxrwxrwx 1 root root 5 Aug 28 07:41 serial1 -> ttyAMA0
0x02 禁用/dev/ttyS0的console功能
$ sudo systemctl stop serial-getty@ttyS0.service
$ sudo systemctl disable serial-getty@ttyS0.service
并且修改cmdline.txt文件
$ sudo nano /boot/cmdline.txt
刪除“console=serial0,115200”礼殊,保存并重啟
0x03 交換串口
$ sudo nano /boot/config.txt
在最下面添加:dtoverlay=pi3-miniuart-bt
保存并重啟。
此時(shí)查看串口別名則發(fā)現(xiàn):
lrwxrwxrwx 1 root root 7 Aug 28 07:41 serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 Aug 28 07:41 serial1 -> ttyS0
此時(shí)碟狞,ttyAMA0串口可以正常用于串口通信婚陪,ttyS0則無法被用于串口通信,藍(lán)牙功能失效泌参。