串口 i2c
i2cdetect -y -a 1
首先在raspi-config 关闭串口调试
将树莓派3的硬件串口与mini串口默认映射对换
树莓派可以配置文件来修改设备树,我的理解是可以通过配置文件来修改管脚的映射关系,这在许多Cortex-M3内核的单片机中也很常见,可以将同一个串口映射到不同的管脚上,以方便PCB的布线。
为了在树莓派3中通过GPIO使用高性能的硬件串口,我们必须将分配给蓝牙使用的硬件串口与分配给IO排针的mini串口进行对换,这必然会使得蓝牙模块的功能受到影响,但还好,蓝牙并不是必须的。
在树莓派系统中
1
|
/boot/overlays/
|
目录下,提供了一个pi3-miniuart-bt-overlay.dtb的文件,这个文件的作用可以通过该目录下的README文件查看
README文件中说明了这个文件的功能是将树莓派3的蓝牙切换到mini串口(ttyS0),并且恢复硬件串口(ttyAMA0)到GPIO 14&15脚中。并且给出了载入的方法。
首先在树莓派命令终端中通过命令查看树莓派3当前的串口映射关系
1
|
ls -l /dev
|
红色框中体现的应该是一种映射关系,此处暂时没有做深究,简单理解 serial0 就是GPIO映射的串口,此时GPIO映射的串口是默认的/dev/ttyS0这个mini串口。
使用下面这条指令编辑 /boot/config.txt 文件
1
|
sudo nano /boot/config.txt
|
在该文件中增加一行代码
1
|
dtoverlay=pi3-miniuart-bt
|
然后保存文件,重启树莓派使之生效。
再通过 ls -l /dev 命令查看修改后的映射关系
对比修改前的关系,可以看出serial0和serial1 与 ttyAMA0和ttyS0的映射关系对换完成了,也就是ttyAMA0映射到了引出的GPIO Tx Rx上。
禁用串口的控制台功能
前面的步骤已经交换了硬件串口与mini串口的映射关系,但现在想使用树莓派外接串口模块进行通信还不行,因为树莓派IO引出的串口默认是用来做控制台使用的,它的初衷是为了在没有网络接口时,通过串口对树莓派进行相关的配置。因此需要禁用这个默认功能,使得串口为我们自由使用。
在树莓派命令窗口中分别通过如下两个命令停止和禁用串口的控制台功能
1 2 |
sudo systemctl stop [email protected] sudo systemctl disable [email protected] |
由于我们前面已经交换了串口的映射关系,因此这里注意是ttyAMA0。
然后通过下列指令编辑cmdline.txt文件
1
|
sudo nano /boot/cmdline.txt
|
然后看到里面类似如下的内容
1
|
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
|
把console=serial0,115200删掉 console=serial0,115200 ,剩下的内容类似如下
1
|
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
|
然后重新启动树莓派,使修改生效