ARM之光(3)-----UART

发布者:InspiredDreamer最新更新时间:2017-01-17 来源: eefocus关键字:ARM  UART 手机看文章 扫描二维码
随时随地手机看文章

       today,we will study the UART of S3C2410,there is no doubt that the datasheet of S3C2410 is very important.

       let’s go!

      UART special registers

     (1)UART LINE CONTROL REGISTER

       there are three UART line control registers including ULCON0.ULCON1.and ULCON2 in the UART block.the address of three register is here:

      image

    ok .let me introduce every bit of this register:

     this register decide the structure of data which will be transmmitted with UART:

image

(2)UART CONTROL REGISTER

there are three UARTcontrol register including UCON0,UCN1,UCON2 in the UART block.

image


image

以下位转载

         每一个uart都包含一个波特率发生器(Baudrate Generator),发送器(Transmitter),接收器(Receiver)以及一个控制逻辑(Control Unit)。如下图:11-1。

  波特率发生器使用的时钟可以为PCLK(默认)或者UEXTCLK(主要是为了达到更高的波特率,默认使用PCLK最高为230.4k bps)。发送器和接受器分别包括一个16-byte的FIFO以及一个数据移位器(data shifter)。数据通过发送引脚(TxDn)和接收引脚(RxDn)进行发送和接收。

发送数据时,CPU通过内部总线将要发送的数据写入Transmit buffer,对程序员来讲即将数据写入Transmit Holding Register(若使用FIFO Mode也是写入这个寄存器,硬件内部会自动判断)。然后Transmitter按照Buad-rate Generator产生的波特率将Transmit Buffer内的数据移入Transmit Shifter, 最后通过TXDn引脚发送出去。

接收数据时,接收引脚(RxDn)按一定波特率进行数据接收进来存放在 Receive Shifter然后再移入Receive Buffer。对程序员来讲即通过Receive Holding Register读取接收到的数据(类似发送,不管是否使用FIFO Mode都是读该寄存器获取接收到的数据)。

Transmit Holding Register和Receive Holding Register都是8 bit大小的寄存器,即每次可读写一个字节数据。

  3) 波特率的计算

  波特率时钟主要是用来提供串口数据发送和接收时所需要的时钟信号。

  计算方法为源时钟(默认为PCLK)除以16以及一个16位分频因子 (divisor)。分频因子的值存储在baudrate divisor register (UBRDIVn)内,由用户指定。通常我们计算波特率的方法为根据想要的波特率反过来计算divisor, 然后将该值写入Divisor Register(UBRDIVn)寄存器内。公式如下:

UBRDIVn = (int)(PCLK/(bps x 16) ) -1,

Bps为我们需要设置的波特率,比如115200。

 

串口通讯基础及S3C2410 UART控制器(转)

作者:深圳远峰

数据通信的基本方式可分为并行通信与串行通信两种:
并行通信:是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快,适用于短距离通信,但要求通讯速率较高的应用场合。
串行通信:是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。
一、异步通信及其协议
异步通信以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然而在同一个字符中的两个相邻位代码间的时间间隔是固定的。
通信协议(通信规程):是指通信双方约定的一些规则。在使用异步串口传送一个字符的信息时,对资料格式有如下约定:规定有空闲位、起始位、资料位、奇偶校验位、停止位。
异步通讯的时序,如图5-1。

其中各位的意义如下:
起始位:先发出一个逻辑”0”信号,表示传输字符的开始。
资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。
注:异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)。
二、资料传送方式
根据资料传送方向的不同有以下三种方式。如图5-2所示。

(1)单工方式
(2)半双工方式
(3)全双工方式

图5-2 资料传送方式

1、单工方式
资料始终是从A设备发向B设备。
2、 半双工方式
资料能从A设备传送到B设备,也能从B设备传送到A设备。在任何时候资料都不能同时在两个方向上传送,即每次只能有一个设备发送,另一个设备接收。但是通讯双方依照一定的通讯协议来轮流地进行发送和接收。
3、 全双工方式
允许通信双方同时进行发送和接收。这时,A设备在发送的同时也可以接收,B设备亦同。全双工方式相当于把两个方向相反的单工方式组合在一起,因此它需要两条数据传输线。在计算机串行通讯中主要使用半双工和全双工方式。
三、信号传输方式
1、基带传输方式
在传输线路上直接传输不加调制的二进制信号,如图所示。它要求传送线的频带较宽,传输的数字信号是矩形波。
基带传输方式仅适宜于近距离和速度较低的通信。

2、频带传输方式
传输经过调制的模拟信号
在长距离通信时,发送方要用调制器把数字信号转换成模拟信号,接收方则用解调器将接收到的模拟信号再转换成数字信号,这就是信号的调制解调。
实现调制和解调任务的装置称为调制解调器(MODEM)。采用频带传输时,通信双方各接一个调制解调器,将数字信号寄载在模拟信号(载波)上加以传输。因此,这种传输方式也称为载波传输方式。这时的通信线路可以是电话交换网,也可以是专用线。
常用的调制方式有三种:
调幅、调频和调相,分别如下图所示。

四、串行接口标准
串行接口标准:指的是计算机或终端(资料终端设备DTE)的串行接口电路与调制解调器MODEM等(数据通信设备DCE)之间的连接标准。
RS-232C标准
RS-232C是一种标准接口,D型插座,采用25芯引脚或9芯引脚的连接器,如图5-5所示。

图5-5

微型计算机之间的串行通信就是按照RS-232C标准设计的接口电路实现的。如果使用一根电话线进行通信,那幺计算机和MODEM之间的联机就是根据RS-232C标准连接的。其连接及通信原理如图5-6所示

图5-6

RS232信号定义
RS-232C标准规定接口有25根联机。只有以下9个信号经常使用.
引脚和功能分别如下:
1. TXD(第2脚):发送资料线,输出。发送资料到MODEM。
2. RXD(第3脚):接收资料线,输入。接收资料到计算机或终端。
3. (第4脚):请求发送,输出。计算机通过此引脚通知MODEM,要求发送资料。
4. (第5脚):允许发送,输入。发出 作为对 的回答,计算机才可以进行发送资料。
5. (第6脚):资料装置就绪(即MODEM准备好),输入。表示调制解调器可以使用,该信号有时直接接到电源上,这样当设备连通时即有效。
6. CD(第8脚):载波检测(接收线信号测定器),输入。表示MODEM已与电话线路连接好。
7. 如果通信线路是交换电话的一部分,则至少还需如下两个信号:
8. RI(第22脚):振铃指示,输入。MODEM若接到交换台送来的振铃呼叫信号,就发出该信号来通知计算机或终端。
9. (第20脚):资料终端就绪,输出。计算机收到RI信号以后,就发出 信号到MODEM作为回答,以控制它的转换设备,建立通信链路。
10. GND(第7脚):信号地
逻辑电平
RS-232C标准采用EIA电平,规定:
“1”的逻辑电平在-3V~-15v之间
“0”的逻辑电平在+3V~+15V之间。
由于EIA电平与TTL电平完全不同,必须进行相应的电平转换,MCl488完成TTL电平到EIA电平的转换,MCl489完成EIA电平到ITL电平的转换。还有MAX232可以同时完成TTL->EIA和EIA->TTL的电平转换。

除了RS-232C标准以外,还有一些其它的通用的异步串行接口标准,如:

RS-423A标准
为了克服RS-232C的缺点,提高传送速率,增加通信距离,又考虑到与RS-232C的兼容性,美国电子工业协会在1987年提出了RS-423A标准。该标准的主要优点是在接收端采用了差分输入。而差分输入对共模干扰信号有较高的抑制作用,这样就提高了通信的可靠性。RS-423A用-6v表示逻辑“1”,用+6v表示逻辑“0”,可以直接与RS-232C相接。采用RS-423A标准以获得比RS-232C更佳的通信效果。图5-7是RS423A的连接示意图。

图5-7

RS-422A标准
RS-422A总线采用平衡输出的发送器,差分输入的接收器。如图5-8所示。

图5-8

RS-422A的输出信号线间的电压为±2v,接收器的识别电压为±0.2v。共模范围±25v。在高速传送信号时,应该考虑到通信线路的阻抗匹配,一般在接收端加终端电阻以吸收掉反射波。电阻网络也应该是平衡的,如图5-9所示。

图5-9 为RS-422A平衡输出差分输示意图

RS-485标准
RS-485适用于收发双方共享一对线进行通信,也适用于多个点之间共享一对线路进行总线方式联网,但通信只能是半双工的,线路如图5-10所示。

图5-10

典型的RS232到RS422/485转换芯片有:MAX481/483/485/487/488/489/490/491,SN75175/176/184等等,它们均只需单一+5v电源供电即可工作(芯片内部采用电荷泵方式升压)。具体使用方法可查阅有关技术手册。

五、S3C2410内置的UART控制器
S3C2410内部具有3个独立的UART控制器,每个控制器都可以工作在Interrupt(中断)模式或DMA(直接内存访问)模式,也就是说UART控制器可以CPU与UART控制器传送资料的时候产生中断或DMA请求。并且每个UART均具有16字节的FIFO(先入先出寄存器),支持的最高波特率可达到230.4Kbps
图5-11是S3C2410内部UART控制器的结构图

图5-11


UART的操作
UART的操作分为以下几个部分,分别是:资料发送、资料接收、产生中断、产生波特率、Loopback模式、红外模式以及自动流控模式。
资料发送
发送的资料帧格式是可以编程设置的。它包含了起始位、5~8个资料位、可选的奇偶校验位以及1~2位停止位。这些都是通过UART的控制寄存器 ULCONn 来设置的。
资料接收
同发送一样,接收的资料帧格式也是可以进行编程设置的。此外,还具备了检测溢出出错、奇偶校验出错、帧出错等出错检测,并且每种错误都可以置相应的错误标志。
自动流控模式
S3C2410的UART0和UART1都可以通过各自的nRTS和nCTS信号来实现自动流控。
在自动流控(AFC)模式下nRTS取决于接收端的状态,而nCTS控制了发送断的操作。具体地说:只有当nCTS有效时(表明接收方的FIFO已经准备就绪来接收资料了),UART才会将FIFO中的资料发送出去。在UART接收资料之前,只要当接收FIFO有至少2-byte空余的时候,nRTS就会被置为有效。图5-12是UART 自动流控模式的连接方式

图5-12

中断/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控制寄存器
下面将针对UART的各个控制寄存器逐一进行讲解,以期对UART的操作和设置能有更进一步的了解。

ULCONn (UART Line Control Register)见图5-13

图5-13

Word Length :资料位长度
Number of Stop Bit :停止位数
Parity Mode :奇偶校验位类型
Infra-Red Mode :UART/红外模式选择(当以UART模式工作时,需设为“0”)

UCONn (UART Control Register)见图5-14
Receive Mode :选择接收模式。如果是采用DMA模式的话,还需要指定说使用的DMA信道。
Transmit Mode :同上。
Send Break Signal :选择是否在传1帧资料中途发送Break信号。
Loopback Mode :选择是否将UART置于Loopback测试模式。
Rx Error Status Interrupt Enable :选择是否使能当发生接收异常时,是否产生接收错误中断。
Rx Time Out Enable :是否使能接收超时中断。
Rx Interrupt Type :选择接收中断类型。
选择0:Pulse(脉冲式/边沿式中断。非FIFO模式时,一旦接收缓冲区中有资料,即产生一个中断;为FIFO模式时,一旦当FIFO中的资料达到一定的触发水平后,即产生一个中断)

选择1:Level(电平模式中断。非FIFO模式时,只要接收缓冲区中有资料,即产生中断;为FIFO模式时,只要FIFO中的资料达到触发水平后,即产生中断)
Tx Interrupt Type :类同于Rx Interrupt Type
Clock Selection :选择UART波特率发生器的时钟源。

图5-14

UFCONn (UART FIFO Conrtol Register)见图5-15
FIFO Enable :FIFO使能选择。
Rx FIFO Reset :选择当复位接收FIFO时是否自动清除FIFO中的内容。
Tx FIFO Reset :选择当复位发送FIFO时是否自动清除FIFO中的内容。
Rx FIFO Trigger Level :选择接收FIFO的触发水平。
Tx FIFO Trigger Level :选择发送FIFO的触发水平。

图5-15

UMCONn (UART Modem Control Register)见图5-16
Request to Send :如果在AFC模式下,该位将由UART控制器自动设置;否则的话就必须由用户的软件来控制。
Auto Flow Control :选择是否使能自动流控(AFC)。

图5-16

UTRSTATn (UART TX/RX Status Register)见图5-17
Receive buffer data ready :当接收缓冲寄存器从UART接收端口接收到有效资料时将自动置“1”。反之为“0”则表示缓冲器中没有资料。
Transmit buffer empty :当发送缓冲寄存器中为空,自动置“1”;反之表明缓冲器中正有资料等待发送。
Transmitter empty :当发送缓冲器中已经没有有效资料时,自动置“1”;反之表明尚有资料未发送。

图5-17

UERSTATn (UART Error Status Register)见图5-18
Overrun Error :为“1”,表明发生Overrun错误。
Frame Error :为“1”。表明发生Frame(帧)错误。

图5-18

UFSTATn :(UART FIFO Status Register)见图5-19
Rx FIFO Count :接收FIFO中当前存放的字节数。
 Tx FIFO Count :发送FIFO中当前存放的字节数。
 Rx FIFO Full :为“1“表明接收FIFO已满。
 Tx FIFO Full :为“1“表明发送FIFO已满。

图5-19

UMSTATn :(UART FIFO Status Register)见图5-20
Clear to Send :为“0”表示CTS无效;为“1”表示CTS有效。
Delta CTS :指示自从上次CPU访问该位后,nCTS的状态有无发生改变。
为“0”则说明不曾改变;反之表明nCTS信号已经变化了。

图5-20

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

UBRDIVn :(UART Baud Rate Divisor Register)见图5-21

图5-21

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

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


关键字:ARM  UART 引用地址:ARM之光(3)-----UART

上一篇:ARM之光(1)-----I/O口
下一篇:ARM之光(4)----DMA

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

关于keil4ARM 通过Jlink在线调试的问题
keilC中的设置如下: 注意第4张图和第5张图的区别 当我点选上updata target before debugging的时候,就能够直接进行在线调试,如果不点选的话,flash里面的程序还是上次的程序,这时候进行在线调试,还是对上次的程序进行调试。 点选上之后,每次的程序都是新的,可以直接进行在线调试。这种动作类似于先将程序在flash download中下载,然后直接点击调试按钮仿真 是一样的。
[单片机]
ARM、IBM飞思卡尔联合开发物联网入门套件
ARM近日宣布推出ARM mbed物联网入门套件(IoT Starter Kit),采用以太网连接技术,可直接将连网设备中的数据传送到IBM的Bluemix云平台。通过ARM提供的安全传感环境,结合IBM 旗下的云数据分析、移动以及应用资源,将可加速新型智能设备原型与特殊增值服务的开发。基于这项套件开发的首批产品预计将于今年面市。 ARM物联网事业部总经理Krisztian Flautner表示: 如果能在产品设计之初,就将智能与连网功能纳入,这样就可以创建出比现有产品功能更强大的云设备。打造智能城市、企业与家庭,使其具备与周边事物分享丰富资讯的能力,这对于充分释放物联网的潜力而言至关重要。ARM的物联网入门套件将加快并简
[物联网]
S232与RS485谁才是UART中的高速公路
  RS232与RS485谁才是UART中的高速公路   串口通讯是电子工程师面对的最基本的一个通讯方式,RS-232是其中最简单的一种。然而,很多初学者往往搞不清楚UART和RS-232、RS-422、RS-485的联系和区别,本文将谈谈我对这几个概念的理解,帮助大家理清它们之间的关系。   通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,那么谁才是
[嵌入式]
ARM设计的FPGA可重构配置方法的实现及应用
随着半导体工艺技术的迅猛发展,现场可编程逻辑器件FPGA的集成度迅速提高,已达到百万门量级,与此同时,FPGA中的逻辑资源也日益丰富,使得基于FPGA的片上系统设计成为可能.基于FPGA的片上系统设计因其具有开发周期短,设计成本低,软硬件可编程,系统设计灵活、可裁减、可扩充、可升级等优点正在成为电子系统设计的研究热点,且已经在通讯、工控等领域得到实际应用. 目前FPGA从实现技术上进行分类,可以分为基于查找表(LuT,k—up table)技术,SRAM工艺的FPGA、基于nash技术的FPGA和基于反熔丝(Anti—fuse)技术的FPGA,而使用最多的还是基于SRAM工艺的FPGA,如Altem的Cycl0ne和S
[单片机]
<font color='red'>ARM</font>设计的FPGA可重构配置方法的实现及应用
OK6410A 开发板 (八) 83 linux-5.11 OK6410A arm-gdb+JLinkGDBServer+Jlink+JTAG接口 调试 u-boot
之前在 https://blog.csdn.net/u011011827/article/details/118713517 中可以看到 可以调试裸机. 可见我加载了bin文件到0x50000000,这是外部sdram的空间 所以加载之前,必须要初始化,而这个初始化动作,u-boot帮忙给做了(我的板子烧好了u-boot) 在调试裸机前u-boot已经跑到cmdline了 当然你调试bin文件大小小于8KB的裸机程序时,可以将其加载到sram中,这样就不用初始化sdram了. 自己手动加载u-boot 到内存 u-boot 也是一个裸机程序,这个程序和 led.bin 不同 u-boot.bin 要大,但是两个的调试方
[单片机]
基于嵌入式Linux的ARM/DSP多机I2C通信
引言 在很多嵌入式控制系统中,系统既要完成大量的信息采集和复杂的算法,又要实现精确的控制功能。采用运行有嵌入式Linux操作系统的ARM9微控制器完成信号采集及实现上层控制算法,并向DSP芯片发送上层算法得到控制参数,DSP芯片根据获得的参数和下层控制算法实现精确、可靠的闭环控制。 1 多机系统组成 该多机控制系统以ARM9微控制器S3C2440为核心,采用I2C总线挂载多个DSP芯片TMS320F28015作为协控制器,构成整个控制系统的核心。 1.1 S3C2440及TMS320F28015简介 Samsung公司的处理器S3C2440是内部集成了ARM公司ARM920T处理器内核的32位微控制器,资源丰富,带独立的
[单片机]
基于嵌入式Linux的<font color='red'>ARM</font>/DSP多机I2C通信
基于ARM的rfid如何设计成嵌入式的
引言 RFID利用了电磁波空间耦合、传播进行通信,以达到自动识别被标识对象,获取对象信息的目的。同其他一些识别技术相比,射频识别技术具有高效快捷、非接触、无污染、识别率高等突出优点。识别过程无需人工干预,可在恶劣环境下工作,能够应用到很多行业。 1.RIFD 读写器的硬件总体设计 图 1 读写器的硬件总体设计 RFID 系统主要由射频卡、读写器以及计算机系统组成。系统的工作原理如下:读写器通过天线发送出13.56MHz的射频信号,当射频卡进入读写器工作场时,天线产生感应电流,从而射频卡获得能量被激活并向读写器发送出自身编码等信息,读写器接收到来自射频卡的载波信号,对接收的信号进行解调和解码后发送至PC 机进行处理,PC
[单片机]
基于<font color='red'>ARM</font>的rfid如何设计成嵌入式的
一种基于ARM的多参数实时监护系统设计
1引言 多参数监护仪广泛应用于ICU、CCU、病房、手术室等。目前我国也有自主知识产权的产品,如迈瑞、金科威、金脑人等,但与GE、飞利浦世界先进产品比较,在监测和计算、可靠性、实时性、稳定性、信号变异的处理分析、远程传输等方面都较落后 。嵌入式系统把计算机直接嵌入到应用系统之中,它融合了通信技术和半导体微电子技术,是信息技术IT的最终产品 。因此将嵌入式系统,网络等技术应用于医用监护仪领域,能使多参数监护仪顺应现代医用监护仪市场缩小体积,提高数据处理能力,远程医疗等方面的要求。 本文介绍一种基于ARM的实时监护系统,它将32位RISC结构的ARM内核处理器与实时多任务嵌入式系统相结合,并通过嵌入式TCP/IP协议栈为平台添
[单片机]
一种基于<font color='red'>ARM</font>的多参数实时监护系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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