树莓派教程 - 1.5 树莓派GPIO库wiringPi 使用硬件串口ttyAMA0与ttyS0

Git例程源码仓库https://github.com/ZhiliangMa/raspberry.git

上一篇介绍 ttyS0串口的用法,说到了此串口利弊,可能会出现乱码,但绝对能满足绝大部分的要求。

本节使用 /dev/ttyAMA0 的方法,实际使用过程中慎用。可能造成无法启动的情况,概不负责,仅供参考。

本节硬件连接和c程序,参考我的上一篇:https://blog.csdn.net/Mark_md/article/details/107143057

 

一开始我是参照下面这篇文章进行的修改,但很快发现了端倪,文件不一致。看到评论区很多都是修改后无法开机。

https://shumeipai.nxez.com/2016/08/08/solution-raspberry-pi3-serial-uart-use-issues.html

于是一顿搜索比对,翻到了这种修改方法。从修改原理上讲,应该是更安全的方法

不需修改启动文件,修改物理映射的方法

输入命名,查看 serial0 和 serial1 链接的对象。

ls -l /dev/serial*

树莓派默认将 serial0 映射到 外接GPIO的15、16脚。默认将 serial1 映射到 BT蓝牙 上。

所以如果想要将 ttyAMA0映射到外部 GPIO上,只需要将 serial0 和serial1 他俩链接的对象互换。

 

配置开启硬件串口

sudo raspi-config

可能会提示重启。选择 YES。

 

修改 serial0 和 serial1 的物理映射

sudo vi /boot/config.txt

末尾添加一行:dtoverlay=pi3-miniuart-bt

之后手动重启。

 

再次查看 serial0 和 serial1 的映射。他俩已经被互换,如果需要使用GPIO上的串口,现在需要指定外设 /dev/ttyAMA0

 

硬件连接/c程序

硬件连接和c程序,参考我的上一篇:https://blog.csdn.net/Mark_md/article/details/107143057

只需要 serialOpen 修改为下面即可:

hs1 = serialOpen("/dev/ttyAMA0", 115200); // 打开 /dev/ttyAMA0 串口设备,波特率115200

 

/dev/ttyS0 与 /dev/ttyAMA0 现象不同,区别

从我写的这两个测试代码来看,/dev/ttyS0 和 /dev/ttyAMA0的现象不完全相同

/dev/ttyS0 更像是单片机中的一个一个字节去查询串口中断。

/dev/ttyAMA0 更像是串口开启了硬件的 FIFO/DMA 。

同样是第一个测试代码,接收串口缓存区读取10个字节,并完整输出接收到的数据。

/dev/ttyS0 的结果是这样的:

/dev/ttyAMA0的结果是这样的:

/dev/ttyAMA0并没有因为我发送了多出10个字节的数据而跳转出来,而是直到这一段数据全部发送完成后才跳出的 do while。

这也就是为什么我说

/dev/ttyS0 更像是单片机中的一个一个字节去查询串口中断。

/dev/ttyAMA0 更像是串口开启了硬件的 FIFO/DMA 。

树莓派4B 是一款单板计算机,它作为一个强大而灵活的开源平台,被广泛应用于物联网、嵌入式系统、教育等领域。其中的/dev/ttyama0树莓派4B上的一个串口设备。 串口是一种用于串行数据传输的通信接口,它可以用于连接各种外部设备,如传感器、打印机、调试工具等。而/dev/ttyama0树莓派4B上的第一个串口设备,它通过GPIO引脚实现了数据的收发。 通过/dev/ttyama0,可以实现与其他设备之间的数据交换和通信。用户可以通过编程语言(如Python)或者命令行工具(如minicom)来访问/dev/ttyama0,并使用相应的协议进行数据传输。在物联网项目中,可以利用/dev/ttyama0与传感器进行通信,获取传感器的数据并进行处理。在嵌入式系统开发中,可以使用/dev/ttyama0进行调试,输出调试信息,或者与其他设备进行交互。 当我们在树莓派4B上使用串口通信时,需要注意一些配置和设置。首先,我们需要确认树莓派上的串口是否已经启用,并且与/dev/ttyama0 对应。在树莓派操作系统中,可以使用命令行工具raspi-config来对串口进行配置。其次,我们需要按照相应的通信协议编写代码,以实现数据的发送和接收。不同的设备和应用场景可能需要不同的协议和参数设置,因此需要根据具体情况进行配置。 总而言之,树莓派4B上的/dev/ttyama0 是一个串口设备,它提供了与其他设备进行数据交换和通信的接口。通过适当的配置和编程,我们可以实现与传感器、工具等设备的连接和数据交互。这为我们在物联网、嵌入式系统等领域的开发和应用带来了更多的可能性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值