赞
踩
引言
通常学习一块新的硬件平台,大家第一个工程便是流水灯,实际上这属于IO口的基本控制,这与上篇文章VS使用wiringPi库控制树莓派的GPIO是异曲同工的,接下来便应该是开始使用其通信接口,而通信接口里面最简单的又属串口(uart),虽然简单但目前仍然有很多模块是以串口作为通信接口的,如一些蓝牙模块、低速wifi模块、GPS模块、GPRS模块等。树莓派3代与之前的树莓派相比除了CPU性能上的提升外,还有一个显著的特色便是板载集成了WIFI及蓝牙,正是由于集成的这个蓝牙模块,又使得树莓派3代的串口使用相比于之前版本有了些麻烦,本文的目的便是解决这些麻烦并编写验证了一个简单的串口代码。
树莓派3代串口的麻烦
树莓派从大的方向来说一共出了3代,每一代的CPU外设基本相同,但内核不同,外设里面一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串口有个致命的弱点是:波特率受到内核时钟的影响。内核若在智能调整功耗降低主频时,相应的这个mini串口的波特率便受到牵连了,虽然你可以固定内核的时钟频率,但这显然不符合低碳、节能的口号。在所有的树莓派板卡中都通过排针将一个串口引出来了,目前除了树莓派3代以外 ,引出的串口默认是CPU的那个硬件串口。而在树莓派3代中,由于板载蓝牙模块,因此这个硬件串口被默认分配给与蓝牙模块通信了,而把那个mini串口默认分配给了排针引出的GPIO Tx Rx,下图是树莓派3的接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。