计算机与外部设备之间的通信一般采用两种方式:并行方式和串行方式。所谓的并行方式就是各个位同时进行传输的通信方式,这种方式通信主要特点是通信的速度快,但当距离远且位数多的时候并行通信的成本就会高很多。 串行通信分为异步与同步串行通信。UART(通用异步收发器)就是所谓的异步串行通信协议。只要通信的双方采用相同的数据帧格式(数据位,开始位,校验位,停止位)和波特率就能在未共享同步时钟信号的情况下通过两根据数据线(RX 和TX)进行数据通信。采用这种方式,当数据传输结束后可以通过置位中断位通知处理器进行相应的处理。 STELLARIS 系列 ARM 芯片的UART 具有完全可编程,16C550 型串口接口的特性(但并不兼容)。独立发送 FIFO(16B)和接收的FIFO(16B)(first in first ou t),可以将两个 FIFO 配置成不同程序的触发中断,可供选择的触发深底见下图中。如:接收 FIFO 配置成 1/4 触发深度,则当 UART 收到 4 个数据时,产生接收中断。 UART 模块的特性如下: 下面是PC 机的COM 接口与ARM 芯片的UART 接口的典型电路。注意:图中的电阻不能省略,否则会影响数据的传输。U1是Exar(原sipex)公司出产的UART转 RS232C 的接口芯片SP3232E。可在 3.3V 下工作。 UART 的功能概述: 发送:发送逻辑从发送 FIFO 读取的数据执行并->串转换。控制逻辑执行输出起始位在前的串行流,根据控制寄存器中已编程的配置,后面紧跟数据位(注:LSB 最低位先输出),奇偶校验位,停止位。 接收:在检测到一个有效的起始脉冲时,接收逻辑对收到以的位流执行串->并转换,此外还会对溢出错误,奇偶校验错误,帧错误和线中止(line-break)错误进行检测。并将检测到的状态一起写入到接收FIFO 中。 波特率的产生:baud-rate divisor(波特率除数)是一个22 位数,16 位整数和6 位小数。波特率发生器利用这个数来决定位周期。在带有小数的波特率发生器下,UART 可以产生所有标准的波特率,且误差小。 数据的收发过程: #define UARTConfigSet(ulBase,ulBand-rate,ulConfig) UARTConfigSetExpClk(ulBase,ulUARTClk,ulBaud,ulConfig) 在调用这个宏函数之前,应先调用时钟配置函数,不要使用误差太大的内部振荡器IOSC、IOSC/4、INT30 等。 关于 ulConfig 这个参数的配置:数据位 UART_CONFIG_WLEN_5/6/7/8,停止位UART_CONFIG_STOP_ONE/TWO, 校验位 UART_CONFIG_PAR_NONE/ODD/EVEN/ONE/ZERO UARTE...