目录
这里使用的是树莓派4B
配置这个功能可以让我们的树莓派与其他设备例如stm32进行数据的交互和通信,实现两者之间的互相控制功能,这个还是非常实用的!
使用以下步骤即可:
树莓派包含两个串口
1.硬件串口(/dev/ttyAMA0),硬件串口由硬件实现,有单独的波特率时钟源,性能高,可靠。一般优先选择这个使用。
2.mini串口(/dev/ttyS0),mini串口时钟源是由CPU内核时钟提供,波特率受到内核时钟的影响,不稳定。
想要通过树莓派的GPIO引脚进行稳定的串口通信,需要修改串口的映射关系。
serial0是GPIO引脚对应的串口,serial1是蓝牙对应的串口,可以使用 ls -l /dev/serial* 查看当前的映射关系
————————————————
版权声明:本文为CSDN博主「galaxyzwj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zz531987464/article/details/83188189
前期准备:关闭蓝牙
在终端输入:
sudo systemctl disable hciuart
禁用蓝牙设备即可,若以后想开启可以将disable改成enable。
1.树莓派串口配置
输入以下指令后按照下面步骤进行配置
sudo raspi-config
Interfacing Options -> P6 Serial;
第一个选项(would you like a login shell to be accessible over serial?)选择NO;
第二个选项(would you like the serial port hardware to be enabled?)选择 YES。
输入以下指令可以查看树莓派的串口映射关系
ls -l /dev/serial*
serial0(GPIO串口)默认使用的是ttyS0(mini串口);
serial1(蓝牙)使用的是ttyAMA0(硬件串口)
如果想使用稳定可靠的硬件串口,就要将树莓派的硬件串口与mini串口默认映射对换。而这个需求官方也考虑到了,在系统中放了一个实现这个功能的文件---stretch版本系统中的文件为/boot/overlays/pi3-miniuart-bt.dtbo。
sudo nano /boot/config.txt
使用该文件发挥功能只需在/boot/config.txt文件末尾添加一行代码,在文件最后面添加一行:dtoverlay=pi3-miniuart-bt
输入完成后,ctrl+o进行写入,不修改文件名称,直接回车即可完成写入,最后ctrl+x退出该文件。可以再次输入之前指令进入文件检查是否正确修改。
修改完成后 sudo reboot 重启树莓派后使用 ls -l /dev/serial* 查看映射如下:
如上图所示:serial0(GPIO串口)使用的是ttyAMA0(硬件串口);而serial1(蓝牙)使用的是ttys0(mini串口)
————————————————
版权声明:本文为CSDN博主「galaxyzwj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zz531987464/article/details/83188189
2.禁用串口的控制台功能
前面步骤已经交换了硬件串口与mini串口的映射关系,但是,现在还不能使用树莓派串口模块与电脑进行通信,因为,树莓派io口引出串口默认是用来做控制台使用的,即是为了用串口控制树莓派,而不是通信。所以我们要禁用此默认设置。
首先执行命令如下:
sudo systemctl stop serial-getty@ttyAMA0.service sudo systemctl disable serial-getty@ttyAMA0.service
然后执行命令行:
sudo nano /boot/cmdline.txt
删除语句 console=serial0,115200 (没有的话就不需要此步骤)
保存之后其内容如下:
接下来再次重启树莓派即可。
最终的/boot/config.txt文件内容如下:
3.测试(连接电脑进行测试)
1.硬件连接,将UART的TXD与树莓派的RXD连接,UART的RXD与树莓派的TXD连接,UART的GND与树莓派GND连接即可。
2.电脑端用xcom这款软件进行串口调试。(注意电脑和树莓派的波特率都配置为:9600)
3.运行如下python程序来测试是否成功连接((网上很多方法都是用minicom进行测试,但是我的树莓派由于网络原因无法获取minicom的软件,所以就写了一个简单的python程序来测试是否成功实现串口功能。电脑端发送字符串,树莓派再返回电脑端发出的字符串,由此验证了字符串的收发)。
import numpy
import serial
import time
def main():
#length=mygpio.ama0_write('the serial is open successfully!\r\n')
#print(length)
com = serial.Serial('/dev/serial0', 9600, timeout=10)
while True:
time.sleep(2)
stri = com.readline().strip()
data = (stri.decode('utf-8'))#utf-8->unicode
if len(data)>0:
com.write(data.encode('ascii'))
if __name__=='__main__':
main()
4.运行程序并检验
在下方输入“the serial is ok”点击发送,上方返回同样的字符串,说明发送与接受都成功啦!
参考文献
[1] 树莓派3B+ 串口使用大全(实现串口通信功能)_Stay Hungry Stay Foolish-CSDN博客