赞
踩
为了去掉usb转ttl接口,充分利用单片机本身的性能,因此需要配置相应的引脚作为串口进行与stm32的通信。
dtoverlay -a | grep uart
上面的命令可以查看串口资源如下图所示
各 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
树莓派串口重要常识:
硬件串口(PL011 UART0)serial1(/dev/ttyAMA0)该串口由硬件实现,有单独的波特率时钟源,可靠性高。
mini串口(mini UART1)serial0(/dev/ttyS0)该串口没有波特率专用的时钟源,而由CPU内核时钟提供。波特率容易受到内核时钟的影响,性能低,功能简单。
注:UART0 对应的 ttyAMA0,UART1 对应的 ttyS0,UART2 到 UART5 对应的 ttyAMA1-ttyAMA4。
(树莓派3是没有uart2—uart5,已有的串口都被配置成其他功能,因此直接看下面的引脚映射部分,树莓派4有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串口。
输入下面的命令可以看到serial*->tty*的对应关系
ls /dev/tty* -al
但是我执行的时候看不到对应的关系,只能看到ttys0在AMA0的上方
sudo nano /boot/firmware/config.txt
找到enable_uart=0这一行,有的用户是enable_uart=1,如果=0则改成1,如果为1则保持不变。在这一行的下面加上dtoverlay=disable-bt //看自己的文件下蓝牙硬件串口失能文件是哪个。将disable-bt替换掉即可。
sudo systemctl disable bluetooth
再执行上面这个命令把蓝牙给禁用了。
再步骤2完成后重启树莓派,再执行第一步的代码查看对应的映射关系,可以看到两者更换了位置。
ls /dev/tty* -al
①、编辑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)这个串口
以上文章主要引用以下两个博主的文章(特此说明)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。