微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > 使用ADuCM3027/ADuCM3029串行端口实现UART

使用ADuCM3027/ADuCM3029串行端口实现UART

时间:05-20 来源:3721RD 点击:

异步SPORT接收器(SPORT_B模块)
接收端相比发送端更为复杂,因为SPORT_B模块接收的是过采样数据。对于8-N-1传输格式,由于数据的过采样系数为3,因此必须对串行端口进行编程将其设定为接收27位,从而可以丢弃三个采样的起始位。在进行帧同步(SPORT_BFS)时需要考虑到这一点。接收到的27位代表UART器件发送的数据包以及8个数据位和1个停止位(过采样系数为3)。

随后,通过位操作运算将实际数据从过采样数据中提取出来。UART器件每发送一位,就会从已接收数据的3位序列中提取出值正确的中间位。提取出来的位会被汇编成一个字节的数据。


图3.预期的UART帧和SPORT接收帧的数据格式

驱动程序函数原型
下列函数适用于8位异步数据,但也可以轻松更改为支持其他数据宽度。在"SPORT_UART_Emulator专用代码"一节中对该用例专用的C函数进行了详细介绍。

SPORT_UART_Tx_Initialise函数用于在ADuCM3029/ADuCM3027 处理器上配置并部署SPORT_A模块以便进行UART发送仿真。SPORT_A内部时钟来自时钟频率配置为6.5 MHz(默认值)的PCLK。发送所需的波特率已设定,另外还使用SPORT_CTL_A寄存器对发送进行了配置。对发送数据缓冲区为空时产生的中断信号使用SPORT_IEN_A寄存器进行配置。在使能SPORT_A模块之前,使用SPORT_ NUMTRAN_A寄存器对要传输的字数进行编程设定。

SPORT_UART_Tx_Initialise函数用于在ADuCM3029/ADuCM3027 处理器上配置并部署SPORT_B模块以便进行UART接收仿真。SPORT_B模块配置为对输入数据流进行过采样(过采样系数为3)。帧同步配置用于外部低电平有效状态。对接收数据缓冲区已满时产生的中断信号使用SPORT_IEN_B寄存器进行配置。另外,在使能SPORT_B模块之前,对SPORT_CTL_B寄存器的SLEN字段进行配置,具体情况如下:

3 × (字大小 + 停止位数)– 1

SPORT_UART_Tx_Transfer函数通过修改缓冲区中位置指向的数据来创建UART发送数据格式。修改后的数据随后在SPORT_A_TX寄存器上输出用于发送。该函数使用位掩码和位移位运算。

SPORT_UART_Rx_Transfer函数接收来自SPORT_B_RX寄存器的过采样数据。位操作运算提取SPORT_B_RX数据每个3位序列的中间位(UART器件每发送1位会接收到3位)。提取出来的位被汇编成按字节计算大小的数据。该函数会返回表示实际已接收数据的汇编字节。下列代码示例显示如何从27位SPORT寄存器中提取数据并将其转换为8位UART数据:

软件流程图
SPORT_A模块发送

SPORT_A模块仿真UART Tx端口。要使用SPORT_A模块仿真UART Tx端口,必须对SPORT模块进行发送初始化并将其使能。使能后,如果有待处理数据要发送,则检查SPORT_STAT寄存器。如果有数据要发送,则根据待处理数据创建UART数据包,然后将该数据包写入SPORT发送寄存器。


图4.SPORT_A模块发送流程图

SPORT_B模块接收
SPORT_B模块仿真UART Rx端口。要将SPORT_B用作UART Rx端口,必须首先对SPORT_B模块进行接收初始化并将其使能。SPORT使能后,在SPORT_B数据寄存器中检查SPORT_STAT寄存器是否存在待处理数据。如果存在数据,则检索该数据并提取8位UART数据。


图5.SPORT_B模块接收流程图

波形
图6显示SPORT_A模块的发送波形和UART器件的接收波形(比特率:9600 bps,单帧8位数据(0x96))以及UART发送仿真所需的其他格式化位。

图7显示UART器件的发送波形和SPORT_B模块的接收波形(比特率:9600 bps,单帧8位数据(0x96),带一个起始位和一个停止位,采样速率是发送波特率的3倍,可正确进行UART接收仿真)。


图6.SPORT_A模块发送和UART器件接收( 单帧)


图7.UART器件发送和SPORT_B模块接收( 单帧)

这些图中的红色走线表示单帧传输。

SPORT_UART_EMULATOR专用代码
本节中所示的代码为典型代码,适用于下列情形:

lSPORT_A模块发送和UART接收

lUART发送和SPORT_B模块接收

单帧传输使用的数据格式为8-N-1(1个起始位、8位数据、0奇偶校验位和1个停止位)采用PCLK = 26 MHz和多个波特率对这些情形进行了测试。

SPORT_UART_EMULATOR.H

SPORT_UART_EMULATOR_TRANSMIT.C

SPORT_UART_EMULATOR_RECEIVE.C

SPORT_UART_EMULATOR_RECEIVE.C

结语
本应用笔记介绍如何使用ADuCM3029/ADuCM3027处理器的SPORT通信协议来仿真全双工UART通信,以便与任何标准的UART器件实现接口。

本应用笔记所述用例在内核模式和直接存储器访问(DMA)模式下针对所有标准波特率进行了测试。根据可靠的测试结果,SPORT发送周期的波特率高达115,200 bps,SPORT接收周期的波特率高达57,600 bps。经过测试,两个方向上传输5到8位数据大小可用于正确运算。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top