各位,我最近指导一个南京理工的研究生实现【树莓派4B+Ubuntu24.04 LTS串口通信】,结果她搞了一个星期没有搞定,我现在写一个保姆级教程,教大家怎么搞定。
1. 看看你的树莓派有几个串口
dtoverlay -a | grep uart
可以看到,最新的树莓派4B
有uart0, 到uart5, 有6个UART。 至于uartx-pi5, 我也不知道是什么。
2. 装载几个串口
树莓派的板子上虽然有这么多串口,但是没有装载,必须先装载起来
sudo vim /boot/firmware/config.txt #(ubuntu是这个,raspiberrypi是/boot/config)
在配置文件中增加如下内容:
重启后,看是否有效
sudo reboot
ls /dev/ttyAMA*
看到有AMA2 - AMA5, 与uart2- uart5对应
3. 接线和编程确认
各 UART 串口与 GPIO(对应的是BCM编码) 对应关系:
UART2: GPIO0 = TXD2 -> ttyAMA2 GPIO1 = RXD2 -> ttyAMA2
UART3: GPIO4 = TXD3 -> ttyAMA3 GPIO5 = RXD3 -> ttyAMA3
UART4: GPIO8 = TXD4 -> ttyAMA4 GPIO9 = RXD4 -> ttyAMA4
UART5: GPIO12 = TXD5 -> ttyAMA5 GPIO13 = RXD5 -> ttyAMA5
这个不要搞错了,很多人容易搞错。
对UART2进行自收自发测试如下:
硬件连线上,需要将GPIO0和GPIO1连接起来
已经成功了
C程序
编译
gcc -Wall uart_test.c -o uart_test.exe -lwiringPi
执行
sudo ./uart_test.exe
用minicom来看结果
minicom -D /dev/ttyAMA2
大功告成