串口通讯基础及S3C2410 UART控制器
数据通信的基本方式可分为并行通信与串行通信两种: |
|||
|
|||
图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标准以外,还有一些其它的通用的异步串行接口标准,如: RS-423A标准 |
![]() |
图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 中有相应的标志位。 波特率发生器 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 |
选择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发送和接收资料寄存器 UBRDIVn :(UART Baud Rate Divisor Register)见图5-21 |
![]() |
图5-21
|
关于UART波特率的计算方法,在前面的内容中已经有详细的阐述,此处不做多余说明。
小结:读写状态寄存器UTRSTAT 以及错误状态寄存UERSTAT,可以反映芯片目前的读写状态以及错误类型。FIFO 状态寄存器UFSTAT 和MODEM 状态寄存器UMSTAT,通过前者可以读出目前FIFO 是否满以及其中的字节数;通过后者可以读出目前MODEM 的CTS状态。 |
串口通讯基础及S3C2410 UART控制器相关推荐
- CC2530基础实验:(8)串口通讯-发送字符串控制LED
目录 前言 一.实验相关电路图 二.实验相关理论与寄存器 1.并行通信与串行通信 2.URAT 3.同步通信与异步通信 4.外设I/O 5.CC2530 的串口通信模块 6.相关寄存器 三.源码分析 ...
- UART串口协议基础1
Louis kaly.liu@163.com 串口协议基础 1 串口概述 串口由收发器组成.发送器是通过TxD引脚发送串行数据,接收器是通过RxD引脚接收串行数据. 发送器和接收器都利用了一个移位寄存 ...
- 23.UART串口通讯基本原理
UART串口通讯基本原理 笔记基于正点原子官方视频 视频连接https://www.bilibili.com/video/BV1Wx411d7wT?p=71&spm_id_from=333.1 ...
- CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)
目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...
- (三) UART 串口通讯
UART : university asynchronous receiver and transmitter UART // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏 ...
- android 串口调试助手_Arduino入门 第八节-串口通讯(基础篇)
串口是单片机中一种重要的数据通讯接口,本期我们就来学习一下Arduino的串口基础操作.首先我们来了解一下Arduino开发板的串口资源.在UNO及NANO板上,只有一组串口(Serial0),这个串 ...
- UART串口通讯协议解析
UART串口通讯协议解析 概述 接口 通信协议 波特率 示例 最后 概述 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART ...
- QT QSerialPort 编写串口通讯案例 设计一些基础的ui界面
QT QSerialPort 编写串口通讯案例 设计一些基础的ui界面 因为公司需要一个串口通讯方面的一个小调试助手 以前也接触过 知道Qt5以上有自带的提供访问串口的功能QSerialPor和提供系 ...
- ABOV单片机UART串口通讯实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口通讯代码 1.在CodeGen8 代码生成器 ...
最新文章
- Cesium Vue开发环境搭建
- Linux如何打开执行脚本
- 公共wifi做家用_如何在公共网络上获得免费的wifi
- 计算机组织菜单在哪里,1,计算机显示菜单在哪里
- 33 FI配置-财务会计-应收账款和应付账款-定义预付款的备选统驭科目
- Mysql-centos下的安装
- hadoop2.6.0 - eclipse插件下载、编译、安装、配置
- psv无线怎么连接电脑连接电脑连接服务器,psv如何连接电脑复制视频,音乐,图片等资料教程...
- linux复制压缩包到另一个文件夹,linux复制文件到另一个文件夹或目录
- 全国高校名单及地理位置经纬度信息(含分校区)
- 计算机组成原理期中考,计算机组成原理期中考卷
- 【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码
- cve oracle,漏洞预警 | CVE-2018-3110 Oracle数据库服务器Java虚拟机漏洞
- 51单片机实现简易计算机,Keil4代码Proteus工程一步到位
- 2023年3月华为认证HCIP新增题库(考试编号H12-821)
- QQ号码丢了不用着急 一步一步找回来
- 域服务器统一修改ie首页,通过AD域策略对IE做统一设定
- 2017.08.25【NOIP提高组】模拟赛B组
- 【关于burpsuite字体乱码/偏移问题】
- [cocos2d-x] -- Cocos2d-x简介
热门文章
- html4废弃了哪些元素,HTML中的一些废弃元素_html
- SpingBoot+Mybaits+Vue,更新学习
- 数据库过滤操作中 != 或者 指定操作数并不能改匹配到NULL值
- 逆向映射是干嘛的anon_vma, vma, anon_vma_chain
- Vue父子组件间的通信
- map集合遍历的五种方法
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
- 动态规划——最长公共子序列长度
- 数据结构四——散列表(下)
- [剑指offer]面试题第[25]题[Leedcode][JAVA][第21题][合并两个有序链表]