S3C2410的UART控制(RS232)

发布者:Jinghua6666最新更新时间:2016-12-03 来源: eefocus关键字:S3C2410  UART控制  RS232 手机看文章 扫描二维码
随时随地手机看文章

一、UART简介

 

       UART(Universal Asynchronous Receiver/Transmitter)即通用异步收发传输器,工作于数据链路层。包含了RS-232、RS-422、RS-485串口通信和红外(IrDA) 等等。UART协议作为一种低速通信协议,广泛应用于通信领域等各种场合。UART基本可分为并口通信及串口通信两种。

 

         异步串口通信协议作为UART的一种,工作原理是将传输数据的每个字符一位接一位地传输。图给出了其工作模式:

 S3C2410的UART控制(RS232) - jj8510 - 山到极顶我为峰

其中各位的意义如下:
起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特

 

2:RS-232简介

 

    RS-232串口通信是UART采用频繁的一种,一般的PC机上都带有两个基于RS-232的串口。

RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。RS-232只限于PC串口和设备间点对点的通信。它有两种模式DB-9(9针接口) 和DB-25(25针接口),支持全双工通信。

      RS-232完成通信一般使用3根线:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。其模型图(DB-9)如下:S3C2410的UART控制(RS232) - jj8510 - 山到极顶我为峰

                           

RS-232针脚的功能:

数据:                                           地线:
TXD(pin 3):串口数据输出(Transmitter)        GND(pin 5):地线
RXD(pin 2):串口数据输入(Receiver)

握手:
RTS(pin 7):发送数据请求
CTS(pin 8):清除发送
DSR(pin 6):数据发送就绪
DCD(pin 1):数据载波检测
DTR(pin 4):数据终端就绪

其他
RI(pin 9):铃声指示

 

3:握手协议
RS-232通行方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。RS-232有三种最常用握手形式:软件握手、硬件握手和Xmodem。

对于软件握手和硬件握手就不做讨论,主要了解bootloader中用到的Xmodem传输协议

Xmodem

XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个认可字节。然而,这种对每个块都进行认可的策略将导致低性能,特别是具有很长传播延迟的卫星连接的情况时,问题更加严重。

4:S3C2410中UART的数据资料

S3C2410中提供三个独立的异步收发串口,能运转在中断或DMA模式下。系统支持最高波特率 230.4K bps,每个UART 信道都包含两个16位的FIFOs(first in first out)用于收发。每个串口都包含可编程的波特率,红外收发,1~2个停止位,5~8个数据位,和奇偶校正位,UART由波特率发生器,收发单位和控制单元构成。

自动控制流模式(AFC)

S3C2410的UART0和UART1都可以通过各自的nRTS和nCTS信号来实现自动流控。

禁止自动流控制可以通过写UMCONn register and control the signal of nRTS by software
在自动流控(AFC)模式下nRTS取决于接收端的状态,而nCTS控制了发送端的操作。具体地说:只有当nCTS有效时(表明接收方的FIFO已经准备就绪来接收资料了),UART才会将FIFO中的资料发送出去。在UART接收资料之前,只要当接收FIFO有至少2-byte空余的时候,nRTS就会被置为有效。

NOTE: UART 2 does not support AFC function, because the S3C2410X has no nRTS2 and nCTS2

中断/DMA请求产生
S3C2410的每个UART都有7种状态,分别是:溢出覆盖(Overrun)错误、奇偶校验错误、帧出错、断线错误、接收就绪、发送缓冲空闲、发送移位器空闲。它们在UART状态寄存器 UTRSTATn / UERSTATn 中有相应的标志位。

波特率发生器
每个UART控制器都有各自的波特率发生器来产生发送和接收资料所用的序列时钟,波特率发生器的时钟源可以CPU内部的系统时钟,也可以从CPU的 UCLK 管脚由外部取得时钟信号,并且可以通过 UCONn 选择各自的时钟源。
波特率产生的具体计算方法如下:
当选择CPU内部时钟时:
UBRDIVn=(int)(PCLK/(bps*16))-1,bps为所需要的波特率值,PCLK为CPU内部外设总线(APB)的工作时钟。
当需要得到更精确的波特率时,可以选择由 UCLK 引入的外部时钟来生成。
UBRDIVn=(int)(UCLK/(bps*16))-1

LoopBack操作模式
S3C2410 CPU的UART提供了一种测试模式,也就是这里所说的LoopBack模式。在设计系统的具体应用时,为了判断通讯故障是由于外部的数据链路上的问题,还是CPU内驱动程序或CPU本身的问题,这就需要采用LoopBack模式来进行测试。在LoopBack模式中,资料发送端TXD在UART内部就从逻辑上与接收端RXD连在一起,并可以来验证资料的收发是否正常

UART控制寄存器

1:ULCONn (UART Line Control Register)

保留位 [7]  

红外模式选择位 【6】                    0 = Normal mode operation(基本模式)

                                                    1 = Infra-Red Tx/Rx mode(红外模式)

 

奇偶校正模式选择  [5:3]                0xx = No parity  (不设置)

                                                   100 = Odd parity  (奇校正)

                                                   101 = Even parity    (偶校正)

                                                   110 = Parity forced/checked as 1

                                                   111 = Parity forced/checked as 0

 

停止位设置 [2]                             0 = One stop bit per frame(每祯一个停止位)

                                                  1 = Two stop bit per frame (每祯两个停止位)

 

数据位长度[1:0]                             00 = 5-bits      01 = 6-bits

                                                   10 = 7-bits       11 = 8-bits

2:UART CONTROL REGISTER

 

选择时钟源: [10]        0=PCLK : UBRDIVn = (int)(PCLK / (bps x 16) ) -1

                                  1=UCLK(@GPH8) : UBRDIVn = (int)(UCLK / (bps x 16) ) -1

 

发送中断类型选择 [9]    0 = 脉冲式中断 (Interrupt is requested as soon as the Tx buffer becomes

empty in Non-FIFO mode or reaches Tx FIFO Trigger Level in FIFO

mode.)

                                  1 =电平式中断(Interrupt is requested while Tx buffer is empty in Non-FIFO

mode or reaches Tx FIFO Trigger Level in FIFO mode.)

 

接收中断类型选择   [8]  0 = Pulse (脉冲式/边沿式中断。非FIFO模式时,一旦接收缓冲区中有资料,即产生一个中断;为FIFO模式时,一旦当FIFO中的资料达到一定的触发水平后,即产生一个中断)

                                 1 = Level (电平模式中断。非FIFO模式时,只要接收缓冲区中有资料,即产生中断;为FIFO模式时,只要FIFO中的资料达到触发水平后,即产生中断.)

 

接收超时中断使能   [7]   0 = Disable 1 = Enable

 

接收错误中断使能  [6]   0 = Do not generate receive error status interrupt.

                                  1 = Generate receive error status interrupt.

 

Loopback Mode(使能该位使其处于进入测试模式)    

                            [5]    0 = Normal operation 1 = Loopback mode

 


选择发送暂停信号 [4]   (在发送完该位的后,自动清零)

                                   0 = Normal transmit 1 = Send break signal

发送模式选择        [3:2]    00 = Disable

                                     01 = Interrupt request or polling mode

                                     10 = DMA0 request (Only for UART0),

                                     DMA3 request (Only for UART2)

                                      11 = DMA1 request (Only for UART1)

 

接收模式选择         [1:0]  00 = Disable

                                        01 = Interrupt request or polling mode

                                       10 = DMA0 request (Only for UART0),

                                       DMA3 request (Only for UART2)

                                       11 = DMA1 request (Only for UART1)

 

3:UART FIFO CONTROL REGISTER

选择发送FIFO的触发水平[7:6]  00 = Empty 01 = 4-byte
                                             10 = 8-byte 11 = 12-byte

选择接收FIFO的触发水平 [5:4]  00 = 4-byte 01 = 8-byte
                                             10 = 12-byte 11 = 16-byte

Reserved          [3]

选择当复位发送FIFO时是否自动清除FIFO中的内容

                       [2] 0 = Normal 1= Tx FIFO reset

选择当复位接收FIFO时是否自动清除FIFO中的内容

                       [1]  0 = Normal 1= Rx FIFO reset

FIFO使能选择  [0]  0 = Disable 1 = Enable 0


 

4:UART MODEM CONTROL REGISTER(UART2不支持AFC)

 

Reserved                    [7:5]          保留位但必须为 000

自动控制流使能选择: [4]        0 = Disable 1 = Enable 0

Reserved                    [3:1]           保留位必须位000              

接收请求位选择          [0]          如果AFC使能该位被忽视,那种情况下S3C2410X UART接收由nRTS自动控制,但是如果AFC禁止,  nRTS 必须由该位设置

                                                0 = 'H' level (Inactivate nRTS) 1 = 'L' level (Activate nRTS)

 

5:UART TX/RX STATUS REGISTER

Transmitter empty      [2] 当发送缓冲器中已经没有有效资料时,自动置“1”;反之表明尚有资料未发送

 

Transmit buffer empty [1] 当发送缓冲寄存器中为空,自动置“1”;反之表明缓冲器中正有资料等待发送

 

Receive buffer data ready [0]  当接收缓冲寄存器从UART接收端口接收到有效资料时将自动置“1”。反之为“0”则表示缓冲器中没有资料

 

 

6:UART ERROR STATUS REGISTER(初始时其自动为【3:0】=0000)

Reserved  [3]  保留位


帧错误     [2]  自动置1当发生帧错误

                   

Reserved [1] 保留位

溢出中断 [0] 如果发生溢出错误自动置1

 

 

7:UART FIFO STATUS REGISTER

 

Reserved            [15:10] 保留位

Tx FIFO Full       [9] 为“1“表明接收FIFO已满

Rx FIFO Full       [8] 为“1“表明接收FIFO已满


Tx FIFO Count    [7:4] 发送FIFO中当前存放的字节数
Rx FIFO Count   [3:0] 接收FIFO中当前存放的字节数

 

8:UART MODEM STATUS REGISTER

 

Reserved         [3]     保留

Delta CTS        [2]    指示自从上次CPU访问该位后,nCTS的状态有无发生改变。
为“0”则说明不曾改变;反之表明nCTS信号已经变化了

Clear to Send   [0]    为“0”表示CTS无效;为“1”表示CTS有效

 

 

9:UTXHn 和 URXHn 分别是UART发送和接收资料寄存器
这两个寄存器存放着发送和接收的资料,当然只有一个字节8位资料。需要注意的是在发生溢出错误的时候,接收的资料必须要被读出来,否则会引发下次溢出错误


10:UBRDIVn :(UART Baud Rate Divisor Register)



关于UART波特率的计算方法,在前面的内容中已经有详细的阐述,此处不做多余说明。

小结:读写状态寄存器UTRSTAT 以及错误状态寄存UERSTAT,可以反映芯片目前的读写状态以及错误类型。FIFO 状态寄存器UFSTAT 和MODEM 状态寄存器UMSTAT,通过前者可以读出目前FIFO 是否满以及其中的字节数;通过后者可以读出目前MODEM 的CTS状态


关键字:S3C2410  UART控制  RS232 引用地址:S3C2410的UART控制(RS232)

上一篇:UDA1341框架分析
下一篇:mini2440触摸屏驱动详解

推荐阅读最新更新时间:2024-03-16 15:22

用C51单片机把只带的ADC(12bit)转换为RS232输出
#include reg51.h // STC8G1K08A-SOP8 #include intrins.h /* STC8G1K08A-SOP8 读取 VCC值 ,先发送出去 然后 循环开始 读取ch4的 (P55 ,第3脚)值 发送出去 */ sfr ADC_CONTR = 0xbc; sfr ADC_RES = 0xbd; sfr ADC_RESL = 0xbe; sfr ADCCFG = 0xde; sbit EADC = IE^5; sfr P3M1=0xb1; sfr P3M0=0xb2; sfr P5M1=0xc9; sfr P5M0=0x
[单片机]
RS232转RS485转换器在485总线系统施工时的注意事项
在长距离通信的诸多方案中,RS485(RS232转RS485转换器)因其独特的电器性能,可靠的应用于主控机之间、主控机与单片机或外设之间构成点到点、点到多点远程多机通信网络,实现多机应答通信。但RS485总线在抗干扰、自适应、通信效率等方面仍存在缺陷,一些细节的处理不当常会导致通信失败甚至系统瘫痪等故障,因此提高RS485总线稳定性不容小觑。 在485总线系统施工时必须严格按照施工规范施工,特别应注意下面几点。     1、485+和485-数据线一定要互为双绞。     2、布线一定要布多股屏蔽双绞线。多股是为了备用,屏蔽是为了便于出现特殊情况时调试,双绞是因为485通讯采用差模通讯原理,双绞的抗干扰性较好。不采用双绞线是错误的
[嵌入式]
MCU_S3C2410之ADC分析
基本概念: 1.采样定理,又称香农采样定理,奈奎斯特采样定理:即采样频率要大于模拟信号最高频率的两倍 2.A/D的位数,即A/D的分辨率,决定量化误差的大小(LSB)1LSB=1/2的N次方 3.转换速率:指一次A/D转换所需的时间,从接收转换开始控制信号到输出数字信号所花费的时间 A/D是高速还是低速皆以此为依据 4.量化误差(分辨率) 为了减小量化误差,通常输入端会加入0.5LSB的偏移量。 5.A/D的精度(DNL和INL) 用直尺来形象的描述,平常用的直尺,其最小刻度是1 毫米,然而,由于工艺等因素,使得直尺上的每个刻度并非都是精确的1 毫米,可能偏大,也可能偏小,DNL
[单片机]
MCU_<font color='red'>S3C2410</font>之ADC分析
基于ARM技术的服装舒适性检测系统的设计
随着生活水平的提高,人们对服装的舒适性有了更高的要求。服装舒适性的研究范围涉及三个基本领域:物理、生理和主观心理。现阶段,国内外的服装舒适性研究主要集中在生理舒适性领域。服装生理舒适性领域的研究主要集中在热湿舒适性、接触舒适性和压感舒适性三大领域。服装压力、温湿度的状态是评价服装生理舒适性的重要指标。不适当的服装压力会影响着装者的疲劳感和工作效率,且关系到人体的健康。一般来说,当人体皮肤温湿度处于热湿舒适性状态时,人们的智力、体力(手工)或感觉方面的表现均处于高水平状态,另外热湿舒适性是人们处于最佳健康状态的必要条件。通过对人体不同状态下不同部位的服装压力、温度湿度的测量,可以得到人体着装后的不同部位的压力、温湿度的分布状况
[单片机]
基于ARM9芯片S3C2410异常中断程序设计
引言 计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。而中断则带有向处理器主动申请的意味。但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。若无特别说明,对“异常”和“中断”都不作严格的区分。本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。 1.异常中断响应和返回 系统运行时,异常可能会随时发生。当一个异常出现以后,ARM微处理器会执行以下几步操作: 1) 将下一条指令的地址存入相应连接寄存器LR,以便程序在处
[单片机]
基于ARM9芯片<font color='red'>S3C2410</font>异常中断程序设计
S3C2410看门狗watchdog寄存器介绍与使用
看门狗应用实验 1、实验目的 了解watchdog 的作用 掌握S3C2410 的watchdog 定时器的使用方法 2、实验内容 实现看门狗复位 编程实现看门狗喂狗 3、实验设备 S3C2410 开发板 ADS1.2 集成开发环境,JTAG 调试器、串口连接线 4、实验原理 4.1 看门狗功能简述 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗 (watchdog )电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 4.2 看门狗的工作原理 其基
[单片机]
s3c2410汇编启动代码与中断跳转分析
最开始的代码,大家都很熟悉 ,最基本的中断跳转 b ResetHandler b HandlerUndef ;handler for Undefined mode b HandlerSWI ;handler for SWI interrupt b HandlerPabort ;handler for PAbort b HandlerDabort ;handler for DAbort b . ;reserved b HandlerIRQ ;handler for IRQ interrupt b HandlerFIQ ;handler for FIQ interrupt 跳转的标号是一系列的宏 LTORG HandlerFIQ
[单片机]
基于S3C2410的TFT-LCD驱动电路设计
引言   随着电子技术的迅猛发展,具有耗电少、亮度高、体积小等特点的液晶显示器被广泛应用于嵌入式系统中。S3C2410是三星公司开发的一款以ARM920T为核心的16/32位嵌入式处理器。它主要面向手持设备以及高性价比、低功耗的应用。LTS350Q1-PE1是三星电子公司生产的一款非晶硅有源矩阵TFT-LCD,它具有功耗低、亮度高和体积小等特点,目前在嵌入式设备中应用非常广泛。   基于S3C2410,采用LTS350Q1-PE1作为显示设备可以构成一个基于嵌入式平台的液晶显示系统,如图1所示,该系统可以满足大多数嵌入式手持设备的功能要求。但是,要想S3C2410的LCD控制器可以正确有效地控制TFT-LCD,需要设计两者之间的
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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