串口通信案例FPGA

今日头条

1145人已加入

描述

1  项目背景

(源码下载 技术交流群:544453837)

串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。

      串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于两台计算机(或设备)之间的互联及数据传输。

      接口划分标准

      串口可分成同步串行接口和异步串行接口。

      同步串行接口(英文:SynchronousSerialInterface,SSI)是一种常用的工业用通信接口。

      异步串行是指UART(Universal AsynchronousReceiver/Transmitter),通用异步接收/发送。

 

      串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。

      RS-232

      也称标准串口,最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。

      RS-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信。

      RS-422

      标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。典型的RS-422是四线接口。实际上还有一根信号地线,共5根线。其DB9连接器引脚定义。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。

      RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。

      RS-485

      是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进,无论四线还是二线连接方式总线上可多接到32个设备。

      RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12kΩ、RS-422是4kΩ;由于RS-485满足所有RS-422的规范,所以RS-485的驱动器可以在RS-422网络中应用。

      RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s。

      CH340

      由于串口(COM)不支持热插拔及传输速率较低,目前大部分新主板和便携电脑已开始取消该接口,只有工控和测量设备以及部分通信设备中还保留有串口。

      现在的电脑大部分都有USB接口而没有串口,为了使用串口,我们需要一个USB转串口的芯片,它的功能是让电脑把USB当串口来使用。这种类型的芯片很多,明德扬教学板使用的是CH340芯片。

      CH340是一个USB总线的转接芯片,实现USB转串口、USB转IrDA红外或者USB转打印口。

      在串口方式下,CH340提供常用的MODE联络信号,用于为计算机扩展异步串口中,或者将普通的串口设备直接升级到USB总线。

 

      明德扬教学板的串口功能原理如下图所示。电脑通过USB线,连接到教学板上的USB接口,USB接口连接到CH340芯片,CH340芯片与FPGA相连。在FPGA看来,串口其实就是两根线:输入线USB_RXD和输出线USB_TXD,其他电气特性、电平转换的工作,都由CH340搞好了。FPGA通过USB_RXD接收来自电脑过来的串口数据;通过USB_TXD发数据给电脑。


串口时序

      USB_RXD和USB_TXD传输数据时,是将传输数据的每个字符一位接一位地传输。下面是USB_RXD和USB_TXD的时序。USB_RXD的时序由CH340芯片产生,FPGA根据时序来接收数据;USB_TXD的时序由FPGA芯片产生,FPGA要按规范来产生时序,使得CH340可以正确地接收。我们可以把产生时序的叫MASTER(主),接收数据叫SLAVE(从)。


串口时序主要包括:空闲、起始位、数据拉、校验位和停止位。

      空闲:空闲状态下,数据线一直处于高电平状态。

      起始位:当MASTER要发送数据时,首先会将数据线拉低“一段时间”,从而告知SLAVE有数据要传输了,要做好准备。

      数据位:起始位之后是数据位,数据位的位数由双方约定,支持4、5、6、7、8位等。双方约定后才能正确地传输。每个数据位传输时都会占用“一段时间”,并且是从低位开始传输。图中LSB是低位的意思,MSB是高位的意思。例如要传输数据8’b00000001,传输时是先送最低位的“1”。

      检验位:奇偶校验是一种非常简单常用的数据校验方式,分为奇校验和偶校验。奇校验需要保证传输的数据总共有奇数个逻辑高电平,若是偶校验则要保证传输的数据有偶数个逻辑高电平。即“奇偶”的意思就是数据中(包括该校验位)中1的个数。例如:传输的数据位是0100_0011。如果是奇校验,校验位是0,偶校验校验位是1。校验位不是必须项,双方可以约定不需要校验位,或者用奇校验,或者使用偶校验。

      停止位:最后一个是停止位,MASTER必须保证有停止位,即把数据线变高“一段时间”。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。让SLAVE可以正确地识别下一轮数据的起始位。假如没有停止位,校验码刚好是0,数据连续发送,那么SLAVE就没法判断下一轮的起始位。对于SLAVE来说,接收完数据位或校验位后就表示接收完成,在停止位不需要做什么,只是等待下一轮起始就够了。

      在时序图中,每个数据都会传输“一段时间”,这个一段时间非常重要,传输双方都要做好约定,否则就不能正确地通信。那么这个“一段时间”是多长时间呢?这跟波特率有关。在串口通信中,波特率是一个非常重要的概念。串口通信中常用的波特率是9600、19200、38400、57600、115200。波特率是每个码元传输的速率,在二进制数据传输中,和比特率相同,都是每个比特数据传输的速率,其倒数为1bit数据的位宽,也就是1bit数据持续的时间。有了这一时间段,就可用FPGA构造计数器实现比特周期的延时,从而实现特定的数据传输波特率。

      例如,假设波特率为9600,数据位为8位,没有校验位,电脑要发数据8’b00110001给FPGA。考虑到波特率为9600,即每位占用时间为1s/9600=104166ns。那么FPGA的USB_RXD(图中的rx_uart)这根线将如下图变化。


在使用教学板的串口前,需要安装CH340的驱动程序。下载后直接解压安装就可以了。

      当用USB线接上电脑和教学板,并且教学板上电后,打开电脑的“设备管理器”,将会看到如下显示。当出现该显示时,表示驱程安装成功并且已经被电脑正确地识别。

     我们可以从“设备管理器”中查看串口号,如下图所示。图中表示该串口号为XX。我们可以修改串口号,方法是:XXXXXX。


串口:可以选择串口号,支持串口号1~4。如果连接的串口号不在此范围,则需要从设备管理器中修改串口号,详细见本章前面的描述。

       波特率:选择串口的波特率,支持9600、19200、38400、57600、115200。该选项影响了每一位码元占用的时间。

      校验位:可选择没有检验位、奇校验和偶校验。

     数据位:可以设置数据位的位数,可选择4~8位的数据拉。

      停止位:可以设置停止位的时间长度。有1位、1.5位和2位可供选择。

      打开/关闭串口:用来打开和关闭串口。打开软件时,串口默认是关闭状态。注意,一定要设置好参数后,才能打开串口;一定要关闭串口后,才能关掉教学板电源和拨掉USB线。

       十六进制显示:本软件支持ASCII显示和十六进制显示。勾选后,用十六进制显示。例如FPGA发送8’b00110001,本软件收到后会显示31。如果不勾选,则是用ASCII码显示。下图就是ASCII表。FPGA发送8’b00110001,即下表中十六进制的31,它所对应的图形为1,所以软件只会显示1。假设FPGA发送的是8’h00100011,即下表中十六进制的23,它所对应的是图形是#,所示软件会显示#。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分