【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

目录

前期准备:关闭蓝牙

1.树莓派串口配置

2.禁用串口的控制台功能

 3.测试(连接电脑进行测试)

参考文献


这里使用的是树莓派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【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

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*

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

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

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

输入完成后,ctrl+o进行写入,不修改文件名称,直接回车即可完成写入,最后ctrl+x退出该文件。可以再次输入之前指令进入文件检查是否正确修改。 

修改完成后 sudo reboot 重启树莓派后使用 ls -l /dev/serial* 查看映射如下:

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

如上图所示: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  (没有的话就不需要此步骤)

保存之后其内容如下:

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

接下来再次重启树莓派即可。

最终的/boot/config.txt文件内容如下:

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

 3.测试(连接电脑进行测试)

1.硬件连接,将UART的TXD与树莓派的RXD连接,UART的RXD与树莓派的TXD连接,UART的GND与树莓派GND连接即可。

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

2.电脑端用xcom这款软件进行串口调试。(注意电脑和树莓派的波特率都配置为:9600

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

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”点击发送,上方返回同样的字符串,说明发送与接受都成功啦!

【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信

参考文献

[1] 树莓派3B+ 串口使用大全(实现串口通信功能)_Stay Hungry Stay Foolish-CSDN博客

上一篇:Jvm垃圾收集器总结(ParNew收集器)


下一篇:几个常用的linux命令(操作服务器时会用到)