当前位置:首页 > 单片机 > 单片机
[导读]其实每个MCU的UART都差不多。设置好寄存器,往缓冲器写数据即可完成数据的发送,读缓冲器数据就能接收到外来的数据。下文摘自韦大哥《嵌入式linux应用开发完全手册》一、UART原理及UART部件使用方法1、UART原理通用异

其实每个MCU的UART都差不多。设置好寄存器,往缓冲器写数据即可完成数据的发送,读缓冲器数据就能接收到外来的数据。下文摘自韦大哥《嵌入式linux应用开发完全手册》

一、UART原理及UART部件使用方法
1、UART原理
通用异步收发器UART,用来传输串行数据:
发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;
接收数据时,UART检测到RxD线上的信号,将串行收集放到缓冲区中,CPU即可读取UART获得的这些数据。
UART最精简的连线只有3根电线,TxD用于发送,RxD用于接收,Gnd用于提供参考电平。TxD和RxD数据线以“位”为最小传输单位。
帧由具有完整意义的若干位组成,它包含开始位、数据位、校验位和停止位;发送数据之前,UART之间要约定好数据传输速率(波特率的倒数)、数据的传输格式(多少个数据位、是否使用校验位、奇校验还是偶校验、多少个停止位)。

数据传输流程如下:
1)通常数据线处于空闲状态(1状态)
2)当要发送数据时,UART改变TxD数据线的状态(0状态)并维持1位的时间,接收方检测到开始位后,再等待1.5位的时间开始一位一位地检测数据线的状态得到所传输的数据。
3)UART一帧中可能有5-8位的数据,发送方一位一位地改变数据线的状态将它们发出去,首先发送最低位
4)如果使用校验功能,UART发送完数据后,还要发送1个校验位。使用奇校验或者偶校验,即统计数据位连同校验位中,1的总数是奇数还是偶数
5)最后,发送停止位,数据线恢复到空闲状态(1状态),停止位长度有3种,1位、1.5位、2位

2、S3C2440 UART的特性
S3C2440的UART有3个独立通道,每个通道可以工作于中断模式或DMA模式,UART由波特率发生器、发送器、接收器、控制逻辑组成。
S3C2440 UART的FIFO深度为64,发送数据时,CPU先将数据写入发送FIFO中,然后UART会自动将FIFO中的数据复制到“发送移位器”中,发送移位器将数据一位一位发送到TxDn数据线上。接收数据时,“接收移位器”将RxDn数据线上的数据一位一位地接收进来,然后复制到接收FIFO中,CPU即可从中读取数据。

3、S3C2440 UART的使用
对于S3C2440,使用UART之前,需要设置波特率、传输格式(多少个数据位、是否使用校验位、奇校验或偶校验、多少个停止位、是否使用流量控制)、选择所涉及的管脚为UART功能、选择UART通道的工作模式为中断模式或DMA模式。设置好之后,往相关寄存器写入数据即可发送,读取相关寄存器即可接收到数据。通过查询状态寄存器或设置中断来获知数据是否发送完毕、是否接收到数据。
1)UART通道管脚设为UART功能
UART通道0中,GPH2、GPH3分别用于TxD0、RxD0,使用UART通道0时,先设置GPHCON寄存器将GPH2、GPH3引脚的功能设为TxD0、RxD0。
2)UBRDIVn寄存器:设置波特率
S3C2440 UART的时钟源有两种选择:PCLK、UEXTCLK、FCLK/n,其中n的值通过UCON0-UCON2联合设置
UBRDIVn = (int)(UART clock)/(buad rate × 16)) - 1
3)ULCONn寄存器:设置传输格式

4)UCONn寄存器
它用于选择UART时钟源、设置UART中断方式

5)UFCONn寄存器、UFSTATn寄存器
UFCONn寄存器用于设置是否使用FIFO,设置各FIFO的触发阙值,即发送FIFO中有多少个数据时产生中断、接收FIFO中有多少个数据时产生中断。并可以通过设置UFCONn寄存器来复位各个FIFO。
读取UFSTATn寄存器可以知道各个FIFO是否已经满,其中有多少个数据。
6)UMCONn寄存器、UMSTATn寄存器
这两类寄存器用于流量控制,具体看数据手册
7)UTRSTATn寄存器
它用来表明数据是否已经发送完毕、是否已经接收到数据

8)UERSTATn寄存器
用来表示各种错误是否发生

9)UTXHn寄存器
CPU将数据写入这个寄存器,UART即会将它保存到缓冲区中,并自动发送出去
10)URXHn寄存器
当UART接收到数据时,CPU读取这个寄存器,即可获得数据。

二.UART操作实例,代码摘自韦大哥代码。

1.UART初始化

#definePCLK 50000000// init.c中的clock_init函数设置PCLK为50MHz

#defineUART_CLK PCLK// UART0的时钟源设为PCLK

#defineUART_BAUD_RATE 115200// 波特率

#defineUART_BRD((UART_CLK/(UART_BAUD_RATE*16))-1)

/*
* 初始化UART0
* 115200,8N1,无流控
*/
voiduart0_init(void)
{
GPHCON|=0xa0;// GPH2,GPH3用作TXD0,RXD0

GPHUP=0x0c;// GPH2,GPH3内部上拉


ULCON0=0x03;// 8N1(8个数据位,无较验,1个停止位)

UCON0=0x05;// 查询方式,UART时钟源为PCLK

UFCON0=0x00;// 不使用FIFO

UMCON0=0x00;// 不使用流控

UBRDIV0=UART_BRD;// 波特率为115200

}


2.发送字符,接收字符

/*
* 发送一个字符
*/
voidputc(unsignedcharc)
{
/* 等待,直到发送缓冲区中的数据已经全部发送出去 */
while(!(UTRSTAT0&TXD0READY));

/* 向UTXH0寄存器中写入数据,UART即自动将它发送出去 */
UTXH0=c;
}
/*
* 发送字符串
*/
voidputstring(unsignedchar*str)
{
while(*str)
putc(*str++);
}
/*
* 接收字符
*/
unsignedchargetc(void)
{
/* 等待,直到接收缓冲区中的有数据 */
while(!(UTRSTAT0&RXD0READY));

/* 直接读取URXH0寄存器,即可获得接收到的数据 */
returnURXH0;
}

3.完整程序见附件。make 生成uart.bin烧进nandflash,串口即输出hello,baby!字符,在串口输入字符,实现发送数据给s3c2440,接到数据后回显。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

伴随物联网、车联网、人工智能等新兴应用领域的拓展和深化,智能家居、智慧楼宇、智慧城市和智能工业等行业快速发展,带动物联网无线模组需求释放,进而带动串口WiFi模块,BLE蓝牙模块以及ZigBee模块的需求增长

关键字: uart 串口通信 物联网

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种常用的串行通信协议,广泛应用于单片机或各种嵌入式设备之间的通信。

关键字: uart 串口通信 嵌入式

射雕英雄传中的裘千丈说,UART就是我的轻功水上漂过河。想从河上过(通信),提前布暗桩,行走时步伐按桩距固定(波特率提前确定),步幅太大或太小都会落水。为了不被二弟裘千仞识破,可以安排侍卫在对岸监视通知,没风险才开始表演...

关键字: uart 通信技术

射雕英雄传中的裘千丈说,UART就是我的轻功水上漂过河。想从河上过(通信),提前布暗桩,行走时步伐按桩距固定(波特率提前确定),步幅太大或太小都会落水。为了不被二弟裘千仞识破,可以安排侍卫在对岸监视通知,没风险才开始表演...

关键字: uart 通信技术

射雕英雄传中的裘千丈说,UART就是我的轻功水上漂过河。想从河上过(通信),提前布暗桩,行走时步伐按桩距固定(波特率提前确定),步幅太大或太小都会落水。为了不被二弟裘千仞识破,可以安排侍卫在对岸监视通知,没风险才开始表演...

关键字: uart 通信技术

还记得当年的打印机,鼠标和调制解调器吗?他们都有巨大笨重的连接器和粗电缆,并且必须拧到你的电脑上。这些设备正是使用UART协议与计算机进行通信。虽然USB几乎完全取代了旧的电缆和连接器,但UART绝对没有过时。你会发现目...

关键字: uart 通信技术

这篇基础的UART,献给刚好需要的您!

关键字: uart 嵌入式

针对UART通信端口上射频干扰的研究 有客户报告其中心位于840MHz左右的RF干扰影响配置成UART的串行通信端口,该接口位于包含一个AD6903(LeMansLCR+)数字式基带处理器的调制解调

关键字: uart 通信端口

  本文根据网络视频采集的需要,将网络传输与视频采集相结合,设计了以S3C2440为核心的USB摄像头视频采集和嵌入式Linux系统下的视频服务器,从而实现了远程网络视频信息采集。   

关键字: s3c2440 视频采集 usb摄像头

         之前在提起自动化或是智能化时,人们会不自觉的想到工业生产,这是因为自动化这个字眼进入中国,确实是以工业

关键字: 嵌入式 Linux s3c2440 视频采集
关闭