串口通信

FPGA基础设计(三):UART串口通信

串口通信也是一个基础实验,是FPGA与电脑、单片机、DSP通信的一种最简单的方案,对通信速率要求不高时可以选择UART通信。您可能已经知道UART时序的控制、波特率的配置等方面的内容,但在实际使用时还是会遇到一些问题,比如如何才能恰当的和其它模块进行衔接?为什么时序明明没问题,却无法和其它控制单元成功通信?本文致力于全面解析在设计UART通信时的思路方法。

UART通信协议

  UART通信的一帧一般由11到12位数据组成。1bit的起始位,检测为低电平表示数据开始传输;紧接着8bits的数据;然后是1bit的奇偶校验位,可以是奇校验或者偶校验;最后是1bit或2bits的停止位,必须为高电平,表示一个字符数据的传输结束。

UART通信协议

UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。

串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时我们不需要使用完整的UART的功能和这些辅助功能。或者设计上用到了FPGA/CPLD器件,那么我们就可以将所需要的UART功能集成到FPGA内部。使用VHDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。

(参考博文: http://blog.sina.com.cn/s/blog_5328beed0100lqtg.html

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配。

波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

一种串口高效收发思路及方案

摘要:本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,提高系统的响应速度。

1. 简介
串口由于使用简单,价格低廉,配合RS485芯片可以实现长距离、抗干扰能力强的局域网络而被广泛使用。随着产品功能的增多,需要处理的任务也越来越复杂,系统任务也越来越需要及时响应。绝大多数的现代单片机(ARM7、Cortex-M3)串口都带有一定数量的硬件FIFO,本文将介绍如何使用硬件FIFO来减少接收中断次数,提高发送效率。在此之前,先来列举一下传统串口数据收发的不足之处:

每接收一个字节数据,产生一次接收中断。不能有效的利用串口硬件FIFO,减少中断次数。

应答数据采用等待发送的方法。由于串行数据传输的时间远远跟不上CPU的处理时间,等待串口发送完当前字节再发送下一字节会造成CPU资源浪费,不利于系统整体响应(在1200bps下,发送一字节大约需要10ms,如果一次发送几十个字节数据,CPU会长时间处于等待状态)。

RS-232、RS-422、RS-485串口通信基本概念

本文介绍了串口通信协议RS-232、RS-422和RS-485的基本概念,包括波特率、数据位、停止位、奇偶校验位以及握手等信息。

1. 什么是串口?

串口通信的概念十分简单。 串口按位发送和接收字节。 尽管比按字节传输的并行通信慢,但是串口很简单并且能够实现远距离通信。 例如, IEEE 488规范定义并行通信时指出,设备间线总长度不得超过20米,且任意两个设备间的距离不得超过2米;而串口通信的长度可达1200米。

通常,串口用于传输ASCII数据。 通信使用3根线完成:(1) 地线,(2) 发送线,(3) 接收线。 由于串口通信是异步的,端口能够在一根线上发送数据的同时在另一根线上接收数据。 这种方式称为全双工传输。 其他线用于握手,但不是必须的。 串口通信最重要的参数是波特率、数据位、停止位和奇偶校验位。 对于两个进行通信的端口,这些参数必须匹配:

UART、RS-232、RS-422、RS-485

  通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。

一、UART是什么
  UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和Tx)就可以完成通信过程,因此也称为异步串行通信。

串口、COM口、TTL、RS232、RS485区别详解

一个嵌入式工程师,无论你做硬件还是软件都会接触到串口、COM口、TTL、RS232、RS485这些概念的。你是否也会一遇到这个概念就要百度一下,谷歌搜过呢?下面就为大家介绍它们之间恩怨情仇吧。

1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。

2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突。

3、PL2303、CP2102芯片都是常用的USB转TTL串口的芯片,用USB来扩展串口(TTL电平)。

4、MAX23芯片是TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL。

5、TTL标准是低电平为0,高电平为1(+5V电平)。RS-232标准是正电平为0,负电平为1(±15V电平)。

6、RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。

串口、COM口

【科普】常见的两种串口通信

在串行通信中,数据通常是在两个站之间传送,按照数据在通信线路上的传送方向可分为3种基本的传送方式:单工、半双工和全双工,如图1-1所示。

图1-1 单工、半双工和全双工通信

图1-1 单工、半双工和全双工通信

PC和FPGA间的串口通信实现

本文将介绍PC和FPGA间的串口通信实现的基本思路和Verilog代码,对于通信而言,收发双方都要有相应的控制。PC端采用MATLAB控制串口进行操作。本文档将详细介绍这一过程。

修订历史

以下表格展示了本文档的修订过程




日期

一直都在System Generator下做图像处理相关的算法,感觉SysGen挺强大的,前几天突发奇想,能否直接用SysGen实现数据的通信呢,毕竟一句HDL代码都不写对于做FPGA的人来说却是很有吸引力的。

串口通信协议比较简单,发送的时候,8位数据的前面加上1位起始位0,在8位数据后加上停止位1,这样8位数字扩展成10位的数字,再将并行转化为串行就可以从GPIO送出。

ZedBoard学习(一)Ubutun下进行串口通信

windows下进行串口通信,如果是笔记本的话一般需要安装PL2303的驱动,win7的话经常会无法识别,非常烦人。

同步内容