I.MX6UL裸机开发(九)—— 串口

1、UART简介
(1)UART通信格式
         串口全称叫做串行接口,通常也叫做COM接口,串行接口指的是数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。
     串口通信距离远,但是速度相对会低,串口是一种很常用的工业接口。I.MX6U自带的UART外设就是串口的一种,UART全称是Universal Asynchronous Receiver/Transmitter,
     也就是异步串行收发器。既然有异步串行收发器,那肯定也有同步串行收发器。USART的全称是Universal Synchronous/Asynchronous Receiver/Transmitter,也就是同步/异
     步串行收发器。相比UART多了一个同步的功能,在硬件上体现出来的就是多了一条时钟线。一般USART是可以作为UART使用的,也就是不使用其同步的功能。
         UART 作为串口的一种,其工作原理也是将数据一位一位的进行传输,发送和接收各用一条线,因此通过 UART 接口与外界相连最少只需要三条线: TXD(发送)、 RXD(接
     收)和GND(地线)。
         空闲位:数据线在空闲状态的时候为逻辑“1”状态,也就是高电平,表示没有数据线空闲,没有数据传输。
         起始位:当要传输数据的时候先传输一个逻辑“0”,也就是将数据线拉低,表示开始数据传输。
         数据位: 数据位就是实际要传输的数据,数据位数可选择 5~8 位,我们一般都是按照字节传输数据的,一个字节 8 位,因此数据位通常是 8 位的。低位在前,先传输,高位最后传输。
         奇偶校验位: 这是对数据中“1”的位数进行奇偶校验用的,可以不使用奇偶校验功能。
         停止位:数据传输完成标志位,停止位的位数可以选择 1 位、 1.5 位或 2 位高电平,一般都选择 1 位停止位。
         波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数,一般选择 9600、19200、 115200 等。
(2)UART电平标准
         UART一般的接口电平有TTL和RS-232,一般开发板上都有TXD和RXD这样的引脚,这些引脚低电平表示逻辑0,高电平表示逻辑1,这个就是TTL电平。RS-232采用差分线,-3V
     ~-15V表示逻辑1,+3V~+15V表示逻辑0。
         USB转TTL模块,TTL接口部分有VCC、GND、RXD、TXD、RTS和CTS。RTS和CTS基本用不到,使用的时候通过杜邦线和其他模块的TTL接口相连接即可。
         RS-232电平需要DB9接口,I.MX6U-ALPHA开发板上的COM3(UART3)口就是RS-232接口的。I.MX6UALPHA开发板就使用CH340 芯片来完成UART1 和电脑之间的连接,只需要一
     条USB 线即可。

2、I.MX6U UART简介
(1)I.MX6U一共有8个UART,其主要特效如下:
     ①、兼容TIA/EIA-232F标准,速度最高可到5Mbit/S。
     ②、支持串行IR接口,兼容IrDA,最高可到115.2Kbit/s。
     ③、支持9位或者多节点模式(RS-485)。
     ④、1或2位停止位。
     ⑤、可编程的奇偶校验(奇校验和偶校验)。
     ⑥、自动波特率检测(最高支持115.2Kbit/S)。
(2)UART寄存器:
     ①、CCM_CSCDR1的UART_CLK_SEL 和 CCM_CSCDR1的UART_CLK_PODF 用于设置UART的时钟源和分频值
     ②、UARTx_UCR1(x=1~8):控制寄存器1
     ③、UARTx_UCR2(x=1~8):控制寄存器2
     ④、UARTx_UCR3(x=1~8):控制寄存器3
     ⑤、UARTx_USR2(x=1~8):状态寄存器2
     ⑥、UARTx_UFCR、UARTx_UBIR和UARTx_UBMR:这三个寄存器用于设置UART的波特率
     ⑦、UARTx_URXD:接收数据寄存器
     ⑧、UARTx_UTXD:发送数据寄存器

3、UART1的配置步骤如下:
(1)设置UART1的时钟源
     设置UART1的时钟源为pll3_80m,设置寄存器CCM_CSCDR1的UART_CLK_SEL位为0即可。
(2)初始化UART1
     初始化UART1所使用IO,设置UART1的寄存器UART1_UCR1~UART1_UCR3,设置内容包括波特率,奇偶校验、停止位、数据位等等。
(3)使能UART1
     UART1初始化完成以后就可以使能UART1了,设置寄存器UART1_UCR1的位UARTEN为1。
(4)编写UART1数据收发函数
     编写两个函数用于UART1的数据收发操作。

你可能感兴趣的:(I.MX6UL)