串口扩展,uart扩展,串口扩展485接口

合集下载

串口uart和RS232,RS485有什么关系及联系

串口uart和RS232,RS485有什么关系及联系

串口uart和RS232,RS485有什么关系及联系
一、UART介绍
通用异步收发传输器通常称作UART,UART是一种通用串行数据总线,用于异步通信。

该总线双向通信,可以实现全双工传输和接收。

在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。

基本结构:
⑵输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出。

⑶输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。

⑷输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由。

浅谈串口、UART、TTL、232、485

浅谈串口、UART、TTL、232、485

浅谈串⼝、UART、TTL、232、485
串⼝指的是遵循串⾏时序标准的通信时序协议,是对⼀条线路分时复⽤;
串⾏通信节省成本但传输效率较低,与之相对的是并⼝,传输效率⾼但增加成本,同时传输距离增加⼲扰会增加
TTL、RS232、RS485指的是逻辑电平的表⽰⽅式
TTL电平:全双⼯(逻辑1: 2.4V--5V 逻辑0: 0V--0.5V)
RS232电平:全双⼯(逻辑1: -3 ~ -15V,逻辑0:+3 ~ +15V)
RS485电平:半双⼯(逻辑),485是以差分形式传输,逻辑"1”以两线间的电压差为+(2~6)V表⽰;逻辑"0"以两线间的电压差为-(2~6)V表⽰
UART⼀般⽤于电路板内部通信,常见于单⽚机、STM32等,常使⽤TTL电平,通常包含VCC、TX、RX、GND四个接⼝;
如果距离较远,可以使⽤MAX232芯⽚转⼀道,⽬的是把TTL电平的⾼转为232电平的-15V,把TTL电平的低转为232电平的+15V,这样长距离传输时抗⼲扰线更好;此时不再使⽤四接⼝形式,⽽是使⽤标准接⼝DB9;
232可以满⾜10m的通信距离,如果需要更长,可以使⽤MAX485芯⽚再转⼀道,通信距离可达千⽶;
因此UART、COM、232、485都遵循串⾏时序协议,它们都属于串⼝,只是形式不同
UART接⼝,实际上指的是单⽚机上的串⾏接⼝(严格来讲是串⾏数字电路);
COM⼝,特指的是计算机上的D-SUB外形的接⼝;。

串口,COM口,TTL,RS232,RS485,UART的区别详解

串口,COM口,TTL,RS232,RS485,UART的区别详解

串⼝,COM⼝,TTL,RS232,RS485,UART的区别详解在电路设计或者实际应⽤过程中,我们往往会遇到下⾯⼏种接⼝,在下⾯⽂章中我们详细介绍串⼝,COM⼝,RRL,RS232,UART⼏种接⼝之间的区别与联系以及常见的连接使⽤⽅式。

串⼝串⼝,即串⾏接⼝,与之相对应的另⼀种接⼝叫并⼝,并⾏接⼝。

两者的区别是,传输⼀个字节(8个位)的数据时,串⼝是将8个位排好队,逐个地在1条连接线上传输,⽽并⼝则将8个位⼀字排开,分别在8条连接线上同时传输。

在相同的数据传输速率下,并⼝的确⽐串⼝更快,但由于并⼝的各个连接线之间容易互相⼲扰,⾼速情况下难以同步各连接线的数据,⽽且硬件成本也相对串⼝更⾼(线多),因⽽串⼝取代并⼝成为了现在的主流接⼝,较具代表性的要数Universal Serial Bus,通⽤串⾏总线,也就是USB。

其它在嵌⼊式领域常见的串⾏接⼝还包括:I2C,SPI,RJ-45,UART,USART等。

串⼝进⾏通信的⽅式有两种:同步通信⽅式和异步通信⽅式SPI(Serial Peripheral Interface:串⾏外设接⼝);I2C(INTER IC BUS:意为IC之间总线),⼀(host)对多,以字节为单位发送。

UART(Universal Asynchronous Receiver Transmitter:通⽤异步收发器),⼀对⼀,以位为单位发送。

COM⼝电脑上的异步串⾏通信接⼝,有时也称之为串⼝(其实这个叫法并不严谨)。

电脑COM⼝使⽤DB9连接器,遵循RS-232标准,RS-232规定了通信⼝的电⽓特性(它规定了逻辑“1”为-3 ~ -15V,逻辑“0”为+3 ~ +15V)和接⼝机械特性(形状,针脚定义)等内容。

COM⼝多见于旧式电脑,⽤于连接⿏标,调制调解器等设备,现在已被USB取代。

UART与USARTUART,全称Universal Asynchronous Receiver/Transmitter,通⽤异步收发传输器。

串口扩展方案

串口扩展方案

串口扩展方案简介串口是计算机与外部设备进行数据交互的一种通信方式。

在某些场景下,需要扩展额外的串口来满足设备连接的需求。

本文将介绍几种常用的串口扩展方案,包括硬件扩展和软件扩展两种。

硬件扩展方案硬件扩展是通过增加硬件模块来实现串口的扩展。

下面介绍两种常用的硬件扩展方案。

方案一:串口芯片扩展一个常见的硬件扩展方案是使用串口芯片进行扩展。

这种方案主要通过在主板上添加一个或多个串口芯片,以增加额外的串口。

一般而言,串口芯片具有较好的兼容性和稳定性,并且能够支持多种串口协议。

常用的串口芯片有常见的UART芯片,常用的型号包括PL2303、CP2102等。

这些芯片一般支持USB接口,可以轻松地与计算机连接,方便进行数据传输。

方案二:扩展板另一种硬件扩展方案是使用扩展板。

扩展板是一种外部设备,一般通过插入到计算机的扩展槽口或接口上来实现与计算机的连接。

常用的扩展板类型包括PCI扩展板、PCIe扩展板和USB扩展板等。

PCI扩展板和PCIe扩展板适用于台式机等有PCI或PCIe插槽的计算机,可以通过插槽接口连接到计算机主板上。

而USB扩展板则适用于各种类型的计算机,通过USB接口与计算机连接。

使用扩展板进行串口扩展的好处是可以同时添加多个串口,满足多设备连接的需求。

同时,扩展板还可能提供其他功能,如并行端口、网络接口等。

软件扩展方案除了硬件扩展之外,还可以使用软件扩展方案来实现串口的扩展。

下面介绍两种常用的软件扩展方案。

方案一:虚拟串口驱动虚拟串口驱动是一种通过软件模拟串口功能的方案。

它将虚拟串口映射到计算机的物理串口或其他设备上,使得计算机可以像操作真实串口一样操作虚拟串口。

虚拟串口驱动通常是由一些软件开发人员开发的,并且提供了应用程序编程接口(API),可以与设备驱动程序交互。

通过虚拟串口驱动,可以实现串口的创建、配置和通信等功能。

方案二:串口转以太网设备串口转以太网设备是一种通过网络连接实现串口扩展的方案。

uart扩展芯片

uart扩展芯片

uart扩展芯片UART(通用异步收发器)是一种常见的串口通信协议,用于在计算机和外部设备之间进行数据传输。

UART扩展芯片是一种用于扩展UART功能的集成电路。

在本文中,我将详细介绍UART扩展芯片及其应用。

UART扩展芯片是专门设计用于连接到MCU(微控制器单元)或其他处理器的外围设备的芯片。

它是通过串行通信接口连接到主处理器,并提供额外的UART通信通道。

一般来说,MCUs和处理器通常只具有一个或少数几个UART通信通道,而UART扩展芯片可以提供更多的串口通道,从而增加设备的连接性。

UART扩展芯片的主要功能是提供额外的串行通信通道。

这意味着可以同时与多个外部设备进行通信,而无需更换或重新配置硬件。

它还具有通信速度控制功能,可以根据特定需求调整波特率,以便与不同速度的设备进行通信。

除了提供额外的串行通信通道外,UART扩展芯片还具有其他功能。

例如,一些扩展芯片可以提供自动流控制功能,可以向外部设备发送信号以指示其暂停或继续传输数据,从而避免数据溢出或丢失。

另外,一些扩展芯片还包含错误检测和纠正功能,可以检测并纠正传输中的错误,提高通信的可靠性。

UART扩展芯片有许多应用。

它们常用于工业自动化领域,用于连接各种外围设备,如传感器、执行器和控制器。

通过使用多个串行通信通道,可以同时监测和控制多个设备,提高系统的响应速度和效率。

此外,UART扩展芯片还广泛应用于通信设备中,如调制解调器、无线模块和网络设备。

这些设备需要与计算机或其他设备进行串行通信,因此UART扩展芯片可以提供额外的通信通道,以满足多设备连接的需求。

值得注意的是,UART扩展芯片通常需要与主处理器进行连接,并进行相应的软件编程。

主处理器需要对扩展的串行通信通道进行初始化和配置,并通过读取和写入相应的寄存器来控制数据的传输和接收。

因此,在使用UART扩展芯片之前,开发人员需要对UART通信协议和相关的编程技术有一定的了解。

总结起来,UART扩展芯片是一种用于扩展UART功能的集成电路,可以提供额外的串行通信通道,并具有其他功能,如流控制和错误检测。

基于WinCE和ARM的多串口扩展及485通信设计

基于WinCE和ARM的多串口扩展及485通信设计

基于WinCE和ARM的多串口扩展及485通信设计贾继鹏;张永坚;胡延凯【摘要】Along with the book evaluating standards for renewable energy building’s application projects implements in our country, we are in urgent need of the operational datas about the renewable energy building’s application demonstration projects. The data acquisition system of the renewable energy building’s application demonstration projects has one demand of multiple serial ports and a 485 bus communication. This paper uses ARM9 S3C2440 embedded microcontroller and VK3234 with four channel UART/SPI interface to extend serial. What’s more, it achieves the 485 communication between the field detection device and data acquisition device with MAX3485. This paper states the interface and software and hardware between S3C2440, VK3234 and MAX3485E specifically. The practical running test in the laboratory shows that the system is stable and reliable, and it has been applied in the data monitoring system of the renewable energy demonstration projects.%随着我国《可再生能源建筑应用工程评价标准》的实施,对已建可再生能源建筑应用示范项目运行数据的需求越来越迫切,为了解决可再生能源建筑应用示范项目数据采集系统中对多串口及485总线通信的需求,采用 ARM9嵌入式微控制器 S3C2440和具备 UART/SPI 接口的4通道芯片VK3234进行串口的扩展,并利用MAX3485E芯片,实现了现场检测设备与数据采集器之间的485通信。

uart 与 rs-485 的常见用法

uart 与 rs-485 的常见用法

uart 与rs-485 的常见用法UART与RS485是两种常见的串行通信协议,广泛应用于各种领域中。

本文将以中括号为主题,逐步解释UART和RS485的常见用法,并探讨其在不同领域中的应用。

一、[什么是UART]UART全称为Universal Asynchronous Receiver/Transmitter,即通用异步收发传输器。

它是一种常见的串行通信协议,用于在计算机及外设之间进行数据传输。

1.1 UART的工作原理UART基于一对数据线(TX和RX)进行数据传输。

数据通过TX线从发送方发送,然后通过RX线接收到接收方。

通信的双方需要事先约定好一些参数,如波特率、数据位数、校验位和停止位等。

1.2 UART的常见应用UART常见的应用包括:- PC与外部设备的通信:UART被广泛用于计算机与外部设备(如打印机、调制解调器)之间的数据传输。

- 嵌入式系统开发:许多嵌入式系统使用UART与外部设备进行通信,如通过UART与传感器、显示器或其他外设交互。

二、[什么是RS485]RS485是一种串行通信标准,常用于远距离数据传输。

它可以支持多点通信,适用于工业控制等环境要求严苛的应用场景。

2.1 RS485的工作原理RS485采用差分信号传输,即通过正负两个数据线进行数据传输。

发送端将逻辑“1”表示为正电平,逻辑“0”表示为负电平;接收端则通过比较两个数据线上的电位差来判断收到的是逻辑“1”还是“0”。

2.2 RS485的常见应用RS485常见的应用包括:- 工业自动化:RS485可用于连接各种传感器、执行器和其他设备,用于工业自动化系统中的数据采集、控制和监测。

- 建筑物自动化:RS485可用于控制楼宇系统,如照明控制、温度调节和安防监控等。

- 智能家居:RS485可用于实现智能家居系统中各个设备之间的通信。

三、[UART与RS485的区别]UART和RS485虽然都是串行通信协议,但在一些关键特性上存在一些区别。

(完整版)SPI,UART,I2C的区别以及RS232与RS485的区别

(完整版)SPI,UART,I2C的区别以及RS232与RS485的区别

(完整版)SPI,UART,I2C的区别以及RS232与RS485的区别SPI,UART,I2C的区别以及RS232与RS485的区别详细的区别:第一个区别当然是名字:SPI(Serial Peripheral Interface:串行外设接口);I2C(INTER IC BUS:意为IC之间总线)UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上:SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。

SPI总线可以实现多个SPI设备互相连接。

提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。

主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。

如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。

在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。

如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。

(注:I2C资料了解得比较少,这里的描述可能很不完备)UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。

显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

串口扩展方案基于VK3366的串口扩展串口方案二、技术领域电子信息通信工程三、现有技术的技术方案3.1 软件模拟法:可根据串行通讯的传送格式,利用定时器和主机的I/O口来模拟串行通讯的时序,以达到扩展串口的目的。

接收过程中需要检测起始位,这可以使用查询方式或者在端口具有中断功能的主机中也可以使用端口的中断进行处理。

接收和发送过程中,对定时的处理既可以使用查询方式也可以使用定时器中断方式。

为了确保数据的正确性,在接收过程中可以在检测异步传输的起始信号处加上一些防干扰处理,如果是无线传输系统,在接收每个位时可以采用多次采样。

对于有线系统来说,1次采样就够了,软件模拟串口还是有它自身的一些不足,面临着采样速度比较慢,采样方式还是不如硬件采样方式准确,抗干扰能力也差很多。

3.2基于TL16C554的串行口扩展TL16C554是TI公司生产的4通道异步收发器集成芯片。

对TL16C554串行通道的控制,是通过对控制寄存器LCR、IER、DLL、DLM、MCR和FCR编程来实现的。

这些控制字决定字符长度、停止位的个数、奇偶校验、波特率以及调制解调器接口。

控制寄存器可以任意顺序写入,但是IER必须最后一个写入,因为它控制中断使能,如果后面还需要调整数据格式,波特率这些就比较困难,操作也不够灵活。

串行通道内的波特率发生器(BRG)允许时钟除以1至65535之间的任意数,BRG根据其不同的三种通用频率中的一种来决定标准波特率。

3.3 基于GM8123/25系列芯片的串行口扩展GM8123/25系列串口扩展芯片可以全硬件实现串口扩展,通讯格式可设置,并与标准串口通讯格式兼容。

GM8125可扩展5个标准串口,通过外部引脚选择串口扩展模式:单通道工作模式和多通道工作模式。

单通道模式下,无需设置芯片的通讯格式,子串口和母串口以相同的波特率工作,同一时刻只允许一组子串口和母串口通讯,工作子串口由地址线选择。

单通道工作模式适用于所有从机不需要同时通讯,并且通讯过程完全由主机控制的系统。

多通道模式下,各子串口波特率相同,允许所有子串口同时与母串口通讯,母串口以子串口波特率的6倍工作。

发送时由地址线选择用来发送数据的子串口;接收时子串口能主动响应从机发送的数据,再由母串口发送给主机,同时由地址线返回接收到数据的子串口地址,主机在接收到子串口送来的数据后,可以根据地址线的状态判断数据是由哪一个从机发送的。

多通道工作模式下,在进行数据通讯前要对芯片进行工作方式设置,包括串口帧格式设置和通讯波特率设置。

通过串行口和控制引脚相互配合可对芯片进行工作方式设置,引脚MS为0、且STADD2~STADD0为000时写命令字,引脚MS为1、STADD2~STADD0为000时读命令字。

进行工作方式设置时,芯片的帧格式和母串口工作波特率与上一次进行数据通讯时一致;而复位后的帧格式为11bit,母串口波特率为7200bps。

显然这款芯片还是有其不足的地方:首先是需要发送和接收数据时的地址控制线,占用了较多的系统资源,对于资源比较紧张的控制器来说,这点是比较难也解决的;其次是发送数据和接收数据都必须去操作控制线,这样操作起来比较复杂,而且实时性也比较差些;再次是数据格式,波特率这些修改起来比较麻烦。

3.4 基于SP2338的串行口扩展SP2338是采用低功耗CMOS 工艺设计的通用异步串行口扩展芯片,它可轻松将主机原有的1个串行口扩展成3 个全新的全双工串行口。

SP2338适用于1个起始位、8个数据位、1个停止位的多串口系统,也就是说其帧格式是不可编程的。

主机通过改变ADRI1、ADRI0地址线状态的方式选择3个子串口中的任意一个,3个子串口的地址分别为00、01、10。

地址11用于执行SP2338 芯片本身的复位指令0x35 或0xB5、睡眠指令0x55或0xD5、延时指令0x00。

向RX0~RX3中的任意一个接收端口写任意数据即可将SP2338唤醒,但由于SP2338的唤醒时间需要25ms左右,故用于芯片唤醒的数据将不会被主机接收。

因此,可以先发送一个字节数据用于唤醒芯片,延时25ms后即可进行正常的数据传输。

未使用的输入端口,如RX0、RX1、RX2等必须连接到VCC;未使用的输出端口,如TX0、TX1、TX2等必须悬空;未使用的ADRI0、ADRI1必须连接到GND。

主机收发数据时序为:主机TX3接收到一个字节后应立即读取SP2338的输出地址ADRO0、ADRO1的状态,判断接收到的数据来自哪个子串口;主机发送数据时,首先通过ADRI0、ADRI1选择某一个子串口,再向TX3写将发送的数据。

从对SP2338的操作来看,通过这款芯片来扩展串口,也有些不足的地方,首先,收发数据的时候,需要地址控制线,占用较多的系统资源;其次,数据格式比较单一,只支持一种数据格式。

最后,对电路设计要求比较高,系统抗干扰能力比较差。

四、现有技术的缺点及本申请提案要解决的技术问题4.1 基于GM8125的串口扩展方案图1 GM8125与主机的连接图基于GM8125的串口扩展串口方案,与本方案比较接近,从GM8125的使用中,我们不难看出在该方案中存在如下一些不足的地方:1、需要占用的系资源较多,除了基本uart接口,还需要发送和接收地址控制线。

2、操作复杂,在发送和接收数据的时候除了要操作uart,还需要操作不同的地址控制线。

3、扩展后的功能单一。

仅仅只能当作最基本的uart,数据格式单一,通信速率可调性差,主串口和子串口只能以固定的速率进行通信。

4.2基于vk3366的串口扩展原理框图图2 VK3366与主机的连接图1、占用系统资源较少,最少只需要接收(MRX)和发送(MTX)端口。

解决了单片机系统资源紧张的问题。

2、操作简单,只需要通过uart发送数据,就可以控制芯片的数据发送和接收,不需要其他地址线和控制线,只需要操作相关寄存器,就能完成数据收发。

还有可靠的中断系统,通信的实时性比较好。

3、仅仅只需要一个标准3线串口就可以扩展出4个多功能串口,除了能实现基本的串口通信的同时,还能实现485自动数据收发和网络地址自动识别,流量控制.而且还扩展出了8个通用GPIO和MODEM控制接口等诸多扩展功能。

五、本申请提案的技术方案的详细阐述5.1基于VK3366串口扩展的原理框图图3 VK3366串口扩展的原理框图5.2基于VK3366串口扩展的原理图图4 vk3366扩展的原理图5.3硬件原图结构分析从原理图我们可以看出,主要分为两个功能部分,一是主机部分,其二是vk3366及相关的扩展部分5.3.1主机电路主机电路主要包括:电源接口电路,复位电路,晶振电路5.3.2 VK3366串口扩展模块5.3.2 .1 VK3366的原理框图图5 VK3366的原理框图5.3.2 .2 VK3366在串口扩展时的特点当主接口为UART时,VK3366将一个标准3线异步串口(UART)扩展成为4个增强功能串口(UART)。

主接口UART在数据传输时可以选择需要转义字符和不需要转义字符两种模式。

此外,主接口的UART可以通过引脚配置为红外通信模式。

每个子通道UART的波特率、字长、校验格式可以独立设置,最高可以提供1Mbps的通信速率。

每个子通道可以独立设置工作在IrDA红外通信、RS-485自动收发控制、9位网络地址自动识别、软件/硬件自动流量控制、广播接收等高级工作模式下。

每个子通道具备收/发独立的16 BYTE FIFO,FIFO的中断为4级可编程条件触发点。

提供一个子通道的调制解调器(MODEM)控制信号。

5.3.2 .3 VK3366 使用说明当主接口是采用串口方式的时候。

对芯片的操作方式采用读写寄存器的方式,首先通过主串口发送一个控制字节,然后再发送或者接收一个操作数据字节。

地址字节包含的信息为寄存器地址和读写控制位。

操作数据字节一般为通信数据或者对寄存器的配置数据。

5.3.2.4 寄存器列表子串口寄存器11个,其排列为C1C0 REG[3:0] ,高两位为子串口通道号,低4位为寄存器地址,按低4位的寄存器地址具体排列见表2:5.3.2.5 操作时序写操作时,先向VK3366的RX写入一个命令字节(Command Byte),随后写入相应的数据字节,其操作时序(无校验,禁止转义和红外模式)如图6所示:001RXTXIR TR start stopstart stopLSBMSBLSBMSB读操作时,先向VK3366的RX 写入命令字节,相应的数据字节从TX 读取,其操作时序(无校验,禁止转义和红外模式)如图7所示00RX TXIR TR start stopLSBMSBstart stopLSBMSB5.3.2.6 主UART 通信传输协议描述:写FIFO :(多字节写入)读寄存器:图6 UART 主接口写操作时序图7 UART 主接口读操作时序读FIFO:(多字节读取)说明:C1,C0:子串口通道号,00~11分别对应子串口1到子串口4。

A3,A2,A1,A0:子串口寄存器地址;N3,N2,N1,N0:写入/读取FIFO的数据字节个数;当其为0000时,表明后接1个数据字节;当其为1111时,表明后接16个数据字节;5.4软件设计5.4.1 芯片初始话5.4.2 基于51系统操作vk3366的典型函数://************************************************************//Function:通过串口发送1个字节的数据//输入:dat为发送的数据//输出:无//日期://************************************************************ void uart_sendByte(unsigned char dat){SBUF=dat;while(!TI); //waite for data to transmit completelySCON &= 0xFD;}//*************************************************************** //Function:串口接收1个字节的数据//输入:无//返回:rec 函数返回读取到的数据//日期://*************************************************************** unsigned char uart_recByte(void){unsigned char rec=0;while(!RI); //waite to recieve data in SBUF0 rec=SBUF;SCON &= 0xFE;return rec;}//***************************************************************//Function:读取寄存器值//输入:port为子串口的路数,reg为寄存器的地址//输出:返回值是读取的寄存器的值//日期://***************************************************************unsigned char read_reg(unsigned char port,unsigned char reg){uart_sendByte(((port-1)<<4)+reg); //写寄存器地址return uart_recByte();//接收返回数据}//***************************************************************//Function:往寄存器里面写数据//输入:port为子串口的路数,reg为寄存器的地址,dat 为写入寄存器的值//返回:无//日期://***************************************************************void write_reg(unsigned char port,unsigned char reg,unsigned char dat) {uart_sendByte(0x80+((port-1)<<4)+reg); //写寄存器地址uart_sendByte(dat);//写数据}//Function:VK3366初始化函数//输入:port为子串口的路数,reg为寄存器的地址,dat 为写入寄存器的值//返回:无//日期://***************************************************************void config_vkxx(){write_reg(1,SCTLR,0X38);//使能子串口,设置子串口的波特率(默认值),具体参看数据手册中,子串口波特率设置write_reg(2,SCTLR,0X38);write_reg(3,SCTLR,0X38);write_reg(4,SCTLR,0X38);//************************************************************write_reg(1,SFOCR,0XFF);//FIFO设置,清空发送接收FIFO中的数据,write_reg(2,SFOCR,0XFF);write_reg(3,SFOCR,0XFF);write_reg(4,SFOCR,0XFF);write_reg(1,SFOCR,0XFC); //使能发送接收FIFOwrite_reg(2,SFOCR,0XFC);write_reg(3,SFOCR,0XFC);write_reg(4,SFOCR,0XFC);//**************************************************************while(read_reg(1,SFSR))read_reg(1,SFDR);while(read_reg(2,SFSR))read_reg(2,SFDR);while(read_reg(3,SFSR))read_reg(3,SFDR);while(read_reg(4,SFSR))read_reg(4,SFDR);//查看发送接收FIFO中是否有数据,如果有则把FIFO中的数据读出来,//使发送接收FIFO中的数据清空//**************************************************************}5.5 各种功能模块的实现:5.5.1 基本串口的实现向4个子串口发送数据write_reg(1,SFDR,m);write_reg(2,SFDR,m);write_reg(3,SFDR,m);write_reg(4,SFDR,m);从4个子串口接收数据dat1=read_reg(1,SFDR);dat2=read_reg(2,SFDR);dat3=read_reg(3,SFDR);dat4=read_reg(4,SFDR);5.5.2带流量控制的uartUART硬件流量控制示意图:图8 硬件流量控制示意图在硬件自动流量控制模式下,一旦数据接收端接收FIFO中数据的个数达到设定的触发点时,为防止接收FIFO溢出,接收端将自动拉高RTS,数据发送端的相应的CTS变高,数据接收端检测到CTS变高后,将发送完当前字节后即暂停数据发送。

相关文档
最新文档