串口是单片机与其他功能模块(如蓝牙)或者另一个单片机进行通信的模块,串行通信是指数据一位一位地按顺序传送,适用于远距离通信,通信线路简单,只需要一对数据线就可以实现双向通信,而串行通信又分为同步和异步,这里介绍通用异步收发器(UART)的数据接收与发送。
使用UART时,通信双方只需配置相同的波特率,就能在同一时钟下使用RXD和TXD两根信号线(当然通信双方需要共地)就可以完成通信。一个收一个发,可以实现双向通信功能。电脑台式机DB9接口有9根线,9线的串口一般用来开发调制解调器控制器很方便,但是与电脑通信,2根就够了。但是需要RS232转换器(如MAX232)完成电平转换,因为一般单片机是TTL电平,而PC机COM口是EIA电平,两个电平不一样,无法通信,因此要进行电平转换,但对通信数据没有影响。
下面分享使用LPC1114来完成UART发送与接收的代码(查询方式)
1、前面提到,串口通信时,需要通信双方配置同一波特率才能完成数据交互,因此对于UART初始化来说,最重要的工作就是设置其波特率。设置波特率按如下公式:
其中PCLK为UART分频后的时钟,例如对48M主时钟4分频后PCLK=12M;
U0DLM和U0DLL 分别为除数锁存器的高八位和第八位;
DIVADDVAL和MULVAL在小数分频寄存器的前八位配置;
另外很重要的一点是需要配置好线控制寄存器LCR(这些寄存器的配置说明见下面链接的手册&