树莓派串口通讯
前言
由于需要使用树莓派与stm32进行通讯,因此记录一下树莓派与stm32的串口通讯过程。
树莓派一共有两个串口把玩,一个是稳定的硬件串口,一个是mini串口,受内部原因影响,mini串口的速率并不稳定,因此一般情况下使用的都是硬件串口,但是在树莓派3以后(不知道有没有记错),官方将原本的硬件串口分配给了板载的蓝牙,所以在使用串口前不得不对树莓派做一些配置。
步骤如下:
1、打开第二个串口
2、交换两个串口的映射关系
3、代码编写
打开ttyAMA0
在终端输入sudo ls -la /dev/
可以看到默认情
况下只有一个串口在使用。
输入以下命令进行配置
sudo raspi-config
选择Interface
选择Serial
后面的Yes即可,提示重启则重启树莓派,没有的话手动重启一下,之后就可以看到如下两个串口都已经打开。
交换映射
使用如下命令进入修改文件
sudo nano /boot/config.txt
//在最后添加以下语句
dtoverlay=pi3-miniuart-bt
随后查看可以发现两个串口的顺序交换了。
在终端执行以下命令
sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service
sudo nano /boot/cmdline.txt
随后使用以下代码替换原先的cmdline文件
console=tty1 root=PARTUUID=ea7d04d6-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
至此,基本配置完成。
代码编写
由于使用串口需要root权限,所以我们在使用IDE进行编写时需要修改一下执行命令,在前面添加上sudo,如图
最后打开PC端的串口助手进行连接树莓派(顺序标号法的8【TX】、10【RX】号引脚)。
输入以下代码进行测试
#include "wiringPi.h"
#include "wiringSerial.h"
int main()
{
int ser;
//开启wiringPi
wiringPiSetup();
//设置串口及波特率
ser = serialOpen("/dev/ttyAMA0", 115200);
//发送字符串
serialPrintf(ser, "hello I am Pi\n");
//释放资源
serialClose(ser);
return 0;
}
从PC端的串口助手可以观察到如下现象
结尾
至此,树莓派串口基础使用完成。
参考自
大佬博客1