更改硬件串口映射
ttyAMA0是硬件接串口,ttyS0是软件串口
- 输入sudo raspi-config 打开串口,关闭串口登录,后重启raspberry.
- 查看串口映射关系 ls -l /dev 如 serial0 -> ttyS0 serial1 -> ttyAMA0
ttys0为软件串口,默认GPIO映射到软件串口 - 查看 /boot/overlays/ 目录下有没有 pi3-miniuart-bt-overlay.dtb 这个
文件,如果有,那么就是已经把硬件串口重新分配给了GPIO,没有的话下载一个放到 /boot/overlays/路径下
4.关闭蓝牙服务sudo systemctl disable hciuart。 - 编辑/boot/config.txt 文件添加 dtoverlay=pi3-miniuart-bt 命令,并重启。
lrwxrwxrwx 1 root root 7 Sep 1 20:25 serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 Sep 1 20:25 serial1 -> ttyS0 - 停止和禁用串口的控制台功能
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service - 编辑cmdline.txt文件 sudo nano /boot/cmdline.txt删除console=serial0,115200 。后保存重启。
存在问题
树莓派串口测试,最大通讯速率为921600bit/s,在该速率下通讯有两种错误:
- 是片选信号相对于发送帧有相位偏差和定时器设定片选宽度有波动,相位偏差主要原因可能是串口数据发送不及时,宽度不稳定是时钟存在偶尔的误差,这个问题增大片选脉宽,延迟工具与回复还能解决。
- 就是树莓派有时出现发送的帧中间存在错误的00字段。这个不太好解决。可能是串口字段发送不连续导致的。