树莓派使用串口

树莓派使用串口

树莓派默认将 serial0 映射到 外接GPIO的15、16脚。默认将 serial1 映射到 BT蓝牙上。所以如果想要将 ttyAMA0映射到外部 GPIO上,只需要禁用蓝牙,并将 serial0 和serial1 他们链接的对象互换。

但树莓派4B的更改方式与旧版本不同,终端输入ls -l /dev/serial*,发现只有serial1->ttyAMA0,没有serial0也没有ttyS0,更没有二者的映射。

解决方法

不要去修改config.txt里的配置!!!网上很多教程误人子弟,此文件开头就明确声明了禁止修改,用户的修改均要放置到usercfg.txt中!打开config.txt可以看到这个文件引用了syscfg.txt,这个文件里面写了enable_uart=0,也就是说即便在config.txt中修改了enable_uart=1,下面还是会被重新赋值为enable_uart=0。而usercfg.txt是在syscfg.txt后引用的,所以用户的修改项会覆盖上面的所有配置。

正确方法如下

cd /boot/firmware
sudo vi usercfg.txt

在里面添加

enable_uart=1
dtoverlay=disable-bt

保存,然后禁用跟蓝牙有关的开机启动项

sudo systemctl disable bluetooth

重启树莓派

reboot

然后再次ls -l /dev/serial*就可以看到正确的映射关系

### 关于 `null` 和 GPIO 串口通信的理解 在讨论树莓派上的 GPIO 串口通信之前,先澄清一下关于 `null` 的概念。 在 JavaScript 中,`null` 表示一个有意不存在的对象引用[^1]。而在 C 或其他低级编程语言中,`NULL` 是一种特殊的指针值,通常被解释为零地址 `(void *)0`,用于表示空指针[^2]。 尽管 `null` 和 `NULL` 来自不同的上下文,但在嵌入式开发(如树莓派的 GPIO 编程)中,理解这些基础概念有助于编写更健壮的程序。 --- #### 树莓派 GPIO 串口通信的基础知识 树莓派支持通过通用输入/输出 (GPIO) 引脚实现串口通信。以下是几个关键点: 1. **硬件配置**: 树莓派默认提供两个 UART 接口:一个是 mini-UART,另一个是 PL011 UART。PL011 更适合高波特率的应用场景。可以通过修改 `/boot/config.txt` 文件启用或禁用特定的 UART 设备[^3]。 2. **软件设置**: Python 是常用的树莓派编程语言之一,可以借助库如 `pyserial` 实现串口通信功能。安装方法如下: ```bash pip install pyserial ``` 3. **代码示例**: 下面是一个简单的 Python 脚本,展示如何使用 `pyserial` 库读取和写入数据到串口设备。 ```python import serial # 配置串口参数 ser = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # 发送数据 message = b'Hello from Raspberry Pi!' ser.write(message) # 接收数据 response = ser.read(ser.in_waiting or 1) print(f'Received: {response.decode()}') # 清理资源 ser.close() ``` 4. **注意事项**: - 如果使用的是树莓派 3B+ 及更高版本,默认情况下 mini-UART 可能会连接蓝牙模块。需要调整配置文件以释放该接口供外部设备使用[^4]。 - 在某些操作系统下可能需要管理员权限才能访问串口设备,建议尝试命令前加上 `sudo` 测试。 --- #### 结合 `null` 的思考 虽然上述内容主要涉及树莓派的 GPIO 和串口操作,但从编程的角度来看,处理返回值时可能会遇到类似于 `null` 的情况。例如,在读取串口缓冲区时如果没有任何可用的数据,则函数可能返回空字符串 (`''`) 或者 None 值。此时应采用严格相等运算符 (`===`, `!==`) 判断条件,避免因隐式类型转换引发逻辑错误。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范子琦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值