CC3200 集成了两个全功能的通用异步收发传输器(Universal Asynchronous Receivers / Transmitters, UART),具有如下特征:
CC3200 UART执行并串和串并转换。传输逻辑从传输FIFO读取数据并执行并串转换。控制逻辑输出参照控制寄存器中的配置生成的以起始位开始,之后依次为数据位(低位在前)、奇偶位和停止位的串行位流。接收逻辑在检测到有效启动脉冲后接收位流数据并执行串并转换。同时,进行溢出检测、奇偶校验、帧错误检查和传输中断检测,接收数据及其状态信息被写入接收FIFO。UART接收的数据或传输的数据分别存储在两个 16 字节的FIFO,其中,对于每个字节,接收FIFO有额外的四个位用于表示信息状态。
UART可配置为采用UART控制寄存器(UARTCTL)的TXE和RXE位有效传输和接收。设备或模块重置之后,传输和接收均有效。在设置任何控制寄存器之前,必须先清除UARTCTL寄存器的UARTEN位来实现UART禁用。在TX和RX操作期间如果UART被禁用,当前传输完成之后才会停止UART。
UART产生中断的条件有溢出、传输中断、校验错误、帧错误、接收超时、传输错误、接收错误。以上所有中断事件采用线或的方式连接,因此在任何时候,UART只会产生一个中断请求给控制器。通过读取UART掩码中断状态寄存器(UARTMIS),软件在单个中断服务例程中将处理多个中断事件。
有效或初始化UART,需要遵循以下步骤:采用寄存器UART0CLKEN/UART1CLKEN有效UART模块;给GPIO_PAD_CONFIG CONFMODE位设置合适的引脚。
表 3.1 UART基地址
UART基地址如表 3.1。表 3.2 为UART的内存映射寄存器。表中所有未列出的偏移地址为保留位置,且相应位置寄存器内容无法修改。表中寄存器偏移地址为相对于UART基地址的十六进制增量。必需有效UART模块时钟,才可操作UART模块寄存器。在UART模块时钟有效之后,UART模块寄存器可访问之前,存在 3 个系统时钟的延迟。
表 3.2 UART寄存器内存映射
关于UART寄存器及详细编程信息,请参见CC3200 Technical Reference Manual技术参考手册 【1】 。
UART配置程序以UART0 为例,首先有效串口UART0 的时钟,其次分别设置PIN_55 和PIN_57 为串口 0 的数据发送接口和数据接收接口。
串口初始化程序中需指定串口UART的基地址,并设置数据传输波特率、数据长度、停止位、奇偶校验位等。相关通信参数设置需要与主机超级终端设置一致,才能确保串口数据的准确发送和接收。
函数UARTCharGet()用于从指定串口接收一个字符,如果接收FIFO无有效字符,函数将等待直到接收到一个字符后才返回。其中ulBase为串口的基地址,函数的返回值即为所接收的字符。
函数UARTCharPut()用于往指定串口发送一个字符,如果发送FIFO中无有效空间,函数将等待直到发送空间有效才返回。其中ulBase为串口的基地址,ucData为被发送的字符。
软件开发套件中提供了三个信息打印函数:Message()、Report()和UART_PRINT()。
函数Message()将输入字符串以字符的方式打印至控制台,一般情况下,控制台设置为指定串口的基地址。
函数Report()封装了函数Message(),将格式化的字符串打印至控制台。
函数UART_PRINT()与函数Report()相同。
在CCS中导入工程项目“uart_demo”,设置参数,例如编译器版本、处理器选项、符号定义等,编译程序。在程序编译无误后,可将目标文件下载至目标板进行程序调试,或将目标文件编程至目标板以运行程序。
CC3200-LAUNCHXL采用mini-USB接口转USB接口线缆连接至主机。设备连接如图 3.1。
图 3.1 CC3200-LAUNCHXL与PC连接
本实例中UART示例程序运行在目标板,采用USB接口从主机接收信息,将信息发送回主机。主机中输入和输出信息,以及显示信息均采用超级终端实现,例如Super Terminal、Hyper Terminal、Tera Term、SecureCRT等。本文中所有案例测试打印信息均采用Tera Term显示,如图 3.2。
图 3.2 uart_demo打印信息