S3C2410 通用异步收发UART 串口通信

发布者:CrystalRose最新更新时间:2019-09-06 来源: eefocus关键字:S3C2410  通用异步收发  UART  串口通信 手机看文章 扫描二维码
随时随地手机看文章

一、UART原理说明


通用异步收发器简称UART,用来传输串行数据。


发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出。


接收数据时,CPU检测另一根电线上的信号,讲串行收集放在缓冲区中,CPU即可读取UART获得这些数据。


UART之间通过全双工方式传输数据,最简单只有三根线TxD(发送数据),RxD(接收数据),GnD(双方参考电平),连线如下图所示。

(PS:单工、半双工、全双工 

单工数据传输只支持数据在一个方向上传输;

半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信


全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力)


硬件连接图如下:

UART使用标准的TTL/CMOS逻辑电平(0~5V 、0~3V、 0~2.5V 或 0~1.8V)来表示数据 ,高电平表示1,低电平表示0。


为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOS逻辑电平转换为RS-232逻辑电平(3~12V表示0,-3~-12V表示1)。


其中, MAX3232为电平转换芯片, 利用双电荷泵在3.0V至5.5V电源供电时能够实现真正的RS-232性能,将ARM处理器芯片输出的


电压转换为符合RS232规范的串口电压。 即TXD0引脚经MAX3232芯片电压转换后成为串口引脚RS232TXD0, RXD0引脚经


MAX3232芯片电压转换后成为串口引脚RS232RXD0。


TXD 和RXD以”位“为最小传输数据,一帧数据由不可分割的若干位组成,它包含开始位、数据位、校验位(可选)和停止位。


二、UART的使用


发送数据之前,UART之间要约定好数据的传输速度(每位所占的时间,即波特率),数据的传输格式(有多少数据位、是否使用校验位、


是奇校验还是偶校验、有几位停止位、是否使用流量控制)。


对于S3C2410和S3C2440,还有选择所涉及管脚为UART功能,选择UART通道的工作模式为中断或者DMA模式。设置好之后,往某个寄存器写入数据即可发送,读取某个寄存器即可得到接收到的数据。可以通过查询状态寄存器或者设置中断来获知数据是否已经发送完毕。是否已经收到数据。


所用的寄存器如下:


1、设置涉及管脚为UART功能


2、UBRDIVn寄存器:设置波特率


3、ULCONn寄存器:设置传输格式


4、UCON寄存器:设置时钟源、中断方式等


5、UFCONn寄存器、UFSTATn寄存器:FIFO设置


6、UMCONn寄存器、UMSTATn寄存器:流量控制


7、UTRSTATn寄存器:数据是否发送完毕、是否收到数据


8、UERSTATn寄存器:错误是否发生


9、UTXHn寄存器:数据写入,然后自动放入缓存区,然后发送。


10、URXHn寄存器:收到数据时,读该寄存器即可得到数据。


PS:详细的寄存器信息去芯片手册查找。


三、UART操作实例


目的:


在PC机上通过键盘敲入任意字符,ARM将接受到的字符通过串口发出并在PC端的secureCRT上显示。


开发板通过串口输出字符串。

代码详解:


本实例串口参数设置如下:


使用串口0,三线连接,波特率115200,PCLK为50MHZ,一位起始位,八位数据位,没有校验位,一位停止位,不使用FIFO缓存,普通轮询模式,不使用中断。




1、UART初始化


#define GPHCON *(volatile unsigned int *)0x56000070

#define ULCON0 *(volatile unsigned int *)0x50000000

#define UCON0 *(volatile unsigned int *)0x50000004

#define UTRSTAT0 *(volatile unsigned int *)0x50000010

#define UTXH0 *(volatile unsigned int *)0x50000020

#define URXH0 *(volatile unsigned int *)0x50000024

#define UBRDIV0 *(volatile unsigned int *)0x50000028

 

#define TXD0READY   (1<<2)

#define RXD0READY   1

 

#define GPH_URAT 10<<4

#define GPH_MSK 15<<4

 

void uart_init(void)

{

GPHCON=(~GPH_MSK)&GPHCON;         //GPH2 3位清零

GPHCON=GPH_URAT|GPHCON;   //GPH2 3赋值设为TXD0和RXD0

 

UBRDIV0=0x1A; //设置波特率为115200

 ULCON0=0x03;//设置8数据位,1停止位,无校验位UCON0=0x05;//设置为普通轮询}



2、发送字符函数

本实例不使用FIFO,发送字符前需要先判断上一个字符是否已经被发送出去。如果没有,则不断查询UTRSTAT0寄存器的位[2],当他为1时表示已经发送完毕。这时可向UTXH0寄存器中写入要发送的字符。

void uart_txd(char c) //发送字符

{

while(! (UTRSTAT0&TXD0READY));    //等待,直到发送缓冲区中的数据已经全部发出去

UTXH0=c;   //写入欲发送的字符,UART自动发送

}



3、发送字符串函数


void uart_txd(char *c) //发送字符串

{

 

 

    for (; *c != ''; c++)

    {

    while(!(UTRSTAT0 & TXD0READY));     //不断查询,直到可以发送数据

        UTXH0 = *c ;                        //发送数据

    }

 

 

}


4、接收字符函数

读取数据之前,要先查询UTRSTAT0寄存器的[1]位,当为1的时候,表示接收缓存区中有数据。于是,即可读取URXH0得到数据。

char uart_rxd(void)//接收字符

{

while(! (UTRSTAT0&RXD0READY));      //等待,直到接收缓存区中有数据来到

return URXH0;     //直接读取URXH0,即可获得数据

}


5、主函数

int main(void)

{

uart_init();  //初始化(波特率115200,8N1)

/*        S3C2440可以,但2410乱码

**                                     

char ch[]="===========nrhello word!nr===========nr";      //    /n为换行   /r为跳到行首

char c;

int j;

for(j=0;j<39;j++)    //显示字符串

{

uart_txd(ch[j]);         

}

**

*/

uart_txd("===========nrhello word!nr===========nr");    //显示字符串

 

while(1)                          //串口接收数据后,再发送到PC secureCRT

{

c=uart_rxd();

uart_txd(c);

}

 

return 0;

}


关键字:S3C2410  通用异步收发  UART  串口通信 引用地址:S3C2410 通用异步收发UART 串口通信

上一篇:ARM9 SWI软件中断
下一篇:S3C2410 UART 发送变量字符

推荐阅读最新更新时间:2024-11-07 23:47

单片机C语言之串口通信协议
现实生活中, 我们总是要与人打交道,互通有无。单片机也一样,需要跟各种设备交互。例如汽车的显示仪表需要知道汽车的转速及电动机的运行参数,那么显示仪表就需要从汽车的底层控制器取得数据。而这个数据的获得过程就是一个通信过程。类似的例子还有控制器通常是单片机或者PLC与变频器的通信。通信的双方需要遵守一套既定的规则也称为协议,这就好比我们人之间的对话,需要在双方都遵守一套语言语法规则才有可能达成对话。 通信协议又分为硬件层协议和软件层协议。硬件层协议主要规范了物理上的连线,传输电平信号及传输的秩序等硬件性质的内容。常用的硬件协议有串口,IIC, SPI, RS485, CAN和 USB。软件层协议则更侧重上层应用的规范,比如modbus
[单片机]
U-Boot在S3C2410上的移植
引言   U-Boot是用于初始化目标板硬件,为嵌入式操作系统提供目标板硬件配置信息,完成嵌入式操作系统装载、引导和运行的固件程序。它能够将系统的软硬件紧密衔接在一起。S3C2410是三星公司的一款基于ARM920T核的嵌入式通用处理器。本文将详细介绍U-Boot在S3C2410开发板上的移植与运行。 U-BOOT简介   U-Boot支持ARM、PowerPC等多种架构的处理器,也支持Linux、NetBSD和VxWorks等多种操作系统。它提供启动加载和下载两种工作模式。启动加载模式也称自主模式,一般是将存储在目标板Flash中的内核和文件系统的镜像装载到SDRAM中,整个过程无需用户的介入。在使用嵌入式产品时,一般工作
[应用]
串口通信详解(51单片机)
计算机串行通信基础 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 串行通信的基本概念 异步通信 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”
[单片机]
<font color='red'>串口通信</font>详解(51单片机)
教你ARM芯片S3C2410的TFT-LCD驱动方法
引言 S3C2410是三星公司生产的基于ARM920T内核的RISC微处理器,主频率可达203MHz,适用于信息家电、Smart Phone、Tablet、手持设备、移动终端等领域。其中,集成的LCD控制器具有通用性,可与大多数的LCD显示模块接口。 PD064VT5是一种用非晶硅TFT作为开关器件的有源矩阵液晶显示器,该模块包括TFT-LCD显示屏、驱动电路和背光源,其接口为TTL电平。分辨率为640 x480像素,可通过18bit数据信号显示262 144种色彩。 1 S3C2410的LCD控制器 S3C2410中的LCD控制器可用于传输视频数据并产生必要的控制信号(像VFRAME、VLINE、VCLK、VM等)。S3
[单片机]
教你ARM芯片<font color='red'>S3C2410</font>的TFT-LCD驱动方法
串口通信之点阵左移
(*注:图中各595的pin10脚相连接后与+Vcc相连。) 驱动程序可根据本人的16*16点阵程序改编,另外还有一个本人对程序中显示数据生成函数的解释资料一并录于此处,也欢迎切磋。 语句temp=(h1 tempcol)|(h2 (8-tempcol));的设计原理: 下面我们以程序进行左移3位的运算为例解释一下语句temp=(h1 tempcol)|(h2 (8-tempcol));的设计原理;我们知道,在8位二进制数据进行运算时,若要将一个3位的二进制数据置入另一个8位二进制数据后3位的空位中,(注:这里所说的数据置入,是指当一个显示数据显示后,这个数据经左移以后变成了下一个要显示的新数据,而这个新的数据实际上就是由
[单片机]
S3C2410看门狗
1. 看门狗原理 Watchdog原理上就是一个定时器。定时器timer对时钟进行计数,当定时器溢出时,产生复位信号,使得整个系统复位。在程序或嵌入式系统中,需要定期的对看门狗timer进行复位重新计数,定时器不会溢出复位系统,从而保证系统的正常运行。当某种原因(例如干扰)引起程序跑飞或者进入死循环时,程序不能定期的复位看门狗timer, 计数溢出产生复位信号,导致系统复位。 设本系统程序完整运行一周期的时间是T1,看门狗的定时周期为T2,T2 T1,在程序运行一周期后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若因为程序“跑飞”或者进入死循环,那么系统不能在T1时刻修改时间的计数值,一直计数直到T2时刻溢出,
[单片机]
<font color='red'>S3C2410</font>看门狗
ARM-Linux s3c2440 之UART分析(一)
在分析ARM-Linux s3c2440中UART的时有必要先了解 s3c2440A中串口的硬件知识。也就是本文---- 硬件篇: S3c2440A串口提供三个独立的异步串行通信I/O端口(asynchronousserial I/O ports)。每一个串口均可以以普通中断方式或者DMA方式进行数据收发,采用系统时钟时,最大速率为115.2kbps.如果采用外部时钟(UEXTCLK),UART速度可以更快。每个串口包含有2个64-byte的FIFO缓存区用来发送或传输数据。 S3c2440A 串口具有可编程波特率,红外(IR)收发数据,1或者2 位的停止位(stop),5/6/7/8 位数据宽度和奇偶校验功能(parity c
[单片机]
ARM-Linux s3c2440 之<font color='red'>UART</font>分析(一)
S3C2410设计的无线数据采集系统
手持终端的功能越来越强大,数据处理能力也越来越强,人们对其无线通信功能的要求也越来越高。为此,各种无线设备进入人们的生活,在此基础之上,大量的无线设备业已进入工业生产领域。在工业或者工厂底层环境中,使用无线技术具有很多优势;利用无线技术可以解决工业生产中线路布局烦琐的困境,也可以避免恶劣环境对线路腐蚀等问题。 1 系统设计 在此,把嵌入式技术与无线电台通信技术相结合,设计一种无线数据采集系统。该系统分为数据采集模块、数据传输/接收模块、数据处理模块,如图1所示。数据采集模块通过将传感器得到的模拟信号转换成数字信号,再用无线芯片发送出去。A/D转换芯片采用MAX132;数据传输芯片采用无线传输/接收芯片IA4421。用单片机配置
[模拟电子]
<font color='red'>S3C2410</font>设计的无线数据采集系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved