当前位置: 首页 > 新闻中心
返回
列表

敏矽微电子Cortex-M0学习笔记07——串口通信详解

发表时间: 2024-03-08 作者: 新闻中心

  串口最重要的功能就能让单片机和外部设备进行数据交互。例如在我们学习敏矽微相连,通过串口调试助手来调试程序、观察程序运行结果。还有很多其他的串口模块,比如

  在正式学习之前,我们先对UART串口的通信格式做一个了解。UART的全称是:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。串行传输数据是按照字节为单位做移位传输的,因此通信速度较低。但其拥有线路简单、通信距离远的优点,使用两条线就可以实现双向通信,一条用于发送,一条用于接收。因此在工业应用中受到广泛应用。其通信格式也十分简单,如下图所示:

  数据位:数据位就是实际要传输的数据,一般都是按照字节传输数据的,即一次传输8 位数据的。一般都是低位在前,高位在后。当然也有相反的传输协议,但平时很少会遇到。

  奇偶校验位:这是对数据中“1”的位数进行奇偶校验用的,能够准确的通过需求进行选择。

  停止位:数据传输完成标志位,停止位的位数可以再一次进行选择 1 位、1.5 位或 2 位高电平,一般都选择 1 位停止位。

  波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数,一般选择 9600、19200、115200 等。

  随着电脑日新月异的升级换代,现在很多电脑都不带传统的COM口,开始大范围的应用。所以就有了USB转串口芯片来解决这一个难题,常用的U转串芯片有CH340、PL2303 等。通过这一些芯片就能轻松实现串口 TTL 转 USB。

  ME32F030开发板使用的是PL2303 芯片来完成串口和电脑之间的连接,只需要一条USB 线即可。在使用前必须要格外注意两件事:第一,先下载并安装PL2303的驱动程序。第二,检查开发板的USB跳线帽是否接到COM、USB这边。正确的接法如下:

  时钟都受 SYSAHBCLKCTRL寄存器控制。同时每个 UART 有独立的时钟分频器来产生波特率,并使之不受系统时钟和PCLK影响。UART对应的管脚映射图如下:

  UART 接收/发送缓冲寄存器包含着 UART 接收到/将发送的字节,接收到的数据和待发送的串口数据都在该寄存器中。

  该寄存器用于提供 UART 接收发送缓存器的状态。大概能归类为以下几种状态:

  接下来就要着重讲解下UART控制寄存器了。0-5位属于基本的接收、发送中断使位,这里不再累述。

  既然刚才在介绍UART控制寄存器的时候,介绍了不少中断使能控制。肯定就会有相应的中断状态的管理。UART中断状态寄存器从低位开始依次管理着:①、发送结束中断状态,②、接收完成中断状态,③、发送FIFO满中断,④、接收FIFO满中断,⑤、发送FIFO半满中断,⑥、接收FIFO半满中断,⑦、奇偶校验错误中断,⑧、接收溢出中断。

  UART 波特率分频器寄存器 (BAUDDIV) 用于时钟分频由此产生相应的波特率。该寄存器可读写。该分频器的时钟源是由UARTnCLKDIV 控制 UART 的波特率源时钟(SCLK)。

  在例程LIB->

  common->

  Drivers->

  Source文件夹内有uart.c文件,这个就是提供的UART驱动文件,里面包含了一些基本的驱动函数,用起来十分方便。下面会对每个函数进行讲解。

  在每段源代码的后面,笔者对其进行一下注释,方便大家快速掌握和使用这个函数。这个函数的4个参数

  这段函数用来关闭UART0或者UART1,只需要传入需要关闭的串口即可。

  有两个参数项,第一个是选择需要使能的UART,第二个选择触发中断的条件。

  介绍完UART常用的驱动函数,接下来用个小例程来演示下UART的驱动。测试程序的功能是:通过串口助手发送一个字节的数据到单片机,单片机收到该数据后,将该数据通过单片机的串口发送到串口助手。

  随后将UART0初始化为波特率115200,无奇偶校验,接收非空触发中断。

  编写完程序,首先要在编译环境下进行编译、连接。没有错误后(最好连警告也没有)。就可以实际连接到电路板进行程序调试运行了。