树莓派装Ubuntu系统配置串口引脚与stm32通信

说明

为了去掉usb转ttl接口,充分利用单片机本身的性能,因此需要配置相应的引脚作为串口进行与stm32的通信。

初始引脚

dtoverlay -a | grep uart

上面的命令可以查看串口资源如下图所示

树莓派装Ubuntu系统配置串口引脚与stm32通信_第1张图片

各 UART 串口与 GPIO(对应的是BCM编码) 对应关系:

UART0: GPIO14 = TXD0 -> ttyAMA0 GPIO15 = RXD0 -> ttyAMA0
UART2: GPIO0 = TXD2 -> ttyAMA1 GPIO1 = RXD2 -> ttyAMA1
UART3: GPIO4 = TXD3 -> ttyAMA2 GPIO5 = RXD3 -> ttyAMA2
UART4: GPIO8 = TXD4 -> ttyAMA3 GPIO9 = RXD4 -> ttyAMA3
UART5: GPIO12 = TXD5 -> ttyAMA4 GPIO13 = RXD5 -> ttyAMA4
树莓派装Ubuntu系统配置串口引脚与stm32通信_第2张图片

树莓派串口重要常识:

  1. 硬件串口(PL011 UART0)serial1(/dev/ttyAMA0)该串口由硬件实现,有单独的波特率时钟源,可靠性高。

  1. mini串口(mini UART1)serial0(/dev/ttyS0)该串口没有波特率专用的时钟源,而由CPU内核时钟提供。波特率容易受到内核时钟的影响,性能低,功能简单。

注:UART0 对应的 ttyAMA0,UART1 对应的 ttyS0,UART2 到 UART5 对应的 ttyAMA1-ttyAMA4。

(树莓派3是没有uart2—uart5,已有的串口都被配置成其他功能,因此直接看下面的引脚映射部分,树莓派4有uart2—uart5,因此掌握配置串口,然后用这四个空闲的串口即可,有特殊需求的可以看后面的串口映射部分。)

配置uart2-uart5

vim /boot/firmware/config.txt

添加以下内容:

dtoverlay=uart2
dtoverlay=uart3
dtoverlay=uart4
dtoverlay=uart5

配置完成后重启

ls /dev/ttyAMA*

执行上面的命令看到以下内容:

可能有些用户执行第一条命令重启后并不能查看到以下信息,仅仅只能看到AMA0这个串口的信息,此时的解决办法是换下面这句命令添加相同的内容,保存后重启即可查询到五个串口:

sudo vim /boot/firmware/usercfg.txt

这步完成之后即可顺利运用uart2-uart5(AMA1-AMA4)的串口。

串口映射

目的是将硬件串口设置为GPIO的串口,将ttyS0设置为mini串口。

1.查看原始映射

输入下面的命令可以看到serial*->tty*的对应关系

ls /dev/tty* -al

但是我执行的时候看不到对应的关系,只能看到ttys0在AMA0的上方

2.修改映射

sudo nano /boot/firmware/config.txt

找到enable_uart=0这一行,有的用户是enable_uart=1,如果=0则改成1,如果为1则保持不变。在这一行的下面加上dtoverlay=disable-bt //看自己的文件下蓝牙硬件串口失能文件是哪个。将disable-bt替换掉即可。

sudo systemctl disable bluetooth

再执行上面这个命令把蓝牙给禁用了。

3.查看复用映射

再步骤2完成后重启树莓派,再执行第一步的代码查看对应的映射关系,可以看到两者更换了位置。

ls /dev/tty* -al

4.串口功能配置

①、编辑cmdline文件

sudo nano /boot/firmware/cmdline.txt

如果没有cmdline这个文件,就执行vim /boot/firmware/config.txt找一下这几句话,框出来的文件名就是对应的UART0(AMA0)串口控制台的配置文件,把上面的cmdline文件改为这个文件执行上面这个命令即可。

②、添加文件内容,把下面的内容替换原始文件内容

dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

③、再执行一次禁用蓝牙的命令后重启即可。

sudo systemctl disable bluetooth

这步完成后,即可顺利使用uart0(AMA0)这个串口

参考文献:

以上文章主要引用以下两个博主的文章(特此说明)

串口配置方法1

串口配置方法2

串口映射方法

你可能感兴趣的:(树莓派,Ubuntu,嵌入式硬件,ubuntu,stm32)