树莓派的串口配置

在树莓派3B的外设里面一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了,在树莓派3代中,由于板载蓝牙模块,因此这个硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO Tx Rx ,下图为树莓派3B的引脚图:


上图中的TXD和RXD就是引出的串口,如果我们需要通过UART外接模块,默认情况下必须得使用性能很低的mini串口了,而且随着内核主频的变化,还会造成波特率的变化导致通信的失败,几乎很难使用。所以我们希望恢复硬件串口与GPIO 14/15的映射关系,使得我们能够通过GPIO使用高性能的硬件串口来连接我们的串口设备。

将树莓派的硬件串口与mini串口的默认映射对换:

为了在树莓派3中通过GPIO使用高性能的硬件串口,我们必须将分配给蓝牙使用的硬件串口与分配给IO排针的mini串口进行对换,这必然会使得蓝牙模块的功能受到影响,但还好,蓝牙并不是必须的。

首先在树莓派命令终端中通过命令查看树莓派3当前的串口映射关系  ls -l /dev/

可以看到这是最开始的映射关系,serial0就是GPIO映射的串口,此时对应的是mini串口。

下面我们就要改变这种映射关系,sudo vim /boot/config.txt 

在该文件的最后加入一行,dboverlay=pi3-miniuart-bt ,然后保存文件后,重启树莓派 ls -l /dev,你会看到

串口的映射关系发生了改变,你现在已经将硬件串口对应到了GPIO上了。

前面的步骤已经交换了硬件串口与mini串口的映射关系,但现在想使用树莓派外接串口模块进行通信还不行,因为树莓派IO引出的串口默认是用来做控制台使用的,它的初衷是为了在没有网络接口时,通过串口对树莓派进行相关的配置。因此需要禁用这个默认功能,使得串口为我们自由使用。

  在树莓派命令窗口中分别通过如下两个命令停止和禁用串口的控制台功能  

sudo systemctl stop serial-getty@ttyAMA0.service 

sudo systemctl disable serial-getty@ttyAMA0.service  

由于我们前面已经交换了串口的映射关系,因此这里注意是ttyAMA0。 

 然后通过下列指令编辑cmdline.txt文件  sudo nano /boot/cmdline.txt  然后看到里面类似如下的内容  

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait  

把console=serial0,115200删掉,剩下的内容类似如下  dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

然后重启树莓派使修改生效。




下面的内容将是在树莓派上安装wiringPi库了:

在有网络的情况下可以使用git工具,可以输入以下命令:

sudo apt-get install git-core

来让系统自动安装git工具,如果在这个过程中出现了错误,尝试更新软件

sudo apt-get update

sudo apt-get upgrade

紧接着通过git获得wiringPi的源码

git clone git://git.drogon.net/wiringPi

如果需要更新wiringPi

cd wiringPi

git pull origin

否则直接运行./build

会帮你编译和安装wiringPi

测试wiringPi是否安装成功,可以使用gpio -v  

也可以用gpio readall来查看引脚分布情况。

可以进入到cd wiringPi/example目录下编译几个程序,来使用该库。

我们也可以使用gpio命令操作树莓派GPIO,下面我们可以gpio命令控制LED。

 输入命令:    gpio -g mode 26 out 

设置管脚为输出模式,-g参数表示是以BCM编号方式,如果去掉这个参数测以wiringPi编号方式,即为25。

 输入命令:    gpio -g write 26 1 设置管脚为高电平,点亮LED; 

 输入命令:    gpio -g write 26 0 设置管脚为低电平,熄灭LED。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值