S3C2410的UART控制(RS232)

2024-02-05 20:58
文章标签 控制 uart s3c2410 rs232

本文主要是介绍S3C2410的UART控制(RS232),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

S3C2410的UART控制(RS232)

一、UART简介

 

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

 

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

 

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

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

                           

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)

S3C2410UART0和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 中有相应的标志位。

发送模式选择        [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状态

 

 原文地址 http://blog.chinaunix.net/u1/58203/showart_492196.html

这篇关于S3C2410的UART控制(RS232)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682145

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【电机控制】数字滤波算法(持续更新)

文章目录 前言1. 数字低通滤波 前言 各种数字滤波原理,离散化公式及代码。 1. 数字低通滤波 滤波器公式 一阶低通滤波器的输出 y [ n ] y[n] y[n] 可以通过以下公式计算得到: y [ n ] = α x [ n ] + ( 1 − α ) y [ n − 1 ] y[n] = \alpha x[n] + (1 - \alpha) y[n-1]

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—10.控制节点-Heat服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack Victoria版——7.1控制节点-Neutron网络服务组件

7.1控制节点-Neutron网络服务组件 更多步骤:OpenStack Victoria版安装部署系列教程 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版 离线安装部署系列教程(全) OpenStack Train版 离线安装部署系列教程(全) 欢迎留言沟通,共同进步。 文章目录 一、创建n