PC串口(精选4篇)
PC串口 篇1
基于FPGA (Field-Programmable Gate Array) 芯片的系统设计中, 程序软件仿真验证通过后, 需要下载到芯片中测试是否能够完成相应功能。可以使用PC向PFGA通过串口发送数据并将处理后的数据返回计算机分析是否满足设计要求。完成串口通信可以选用专用的串行外设接口芯片如16550, NS16450或者控制单片机接收数据。而采用模块化设计方法, 通过硬件描述语言编程可以将外部芯片的功能集成到FPGA内部实现, 这种设计方法可移植性强, 又能避免不必要的资源浪费。本文采ISE 10.1软件开发平台, 选用Xilinx公司的Spartan-3E系列FPGA完成了与PC的通信功能。
1 系统的总体设计
系统的总体设计思想是:PC发送数据, 由MAX232完成RS-232电平到TTL电平的转换, FPGA内部的RXD模块负责转换后串行数据的接收, 数据处理单元对接收数据进行处理, 处理完成以后将数据暂存于FIFO中, TDX读取暂存数据按通信协议把数据发给MAX232反馈给PC, 分析数据是否符合要求, 从而验证整个系统设计的合理性。系统框图如图1所示。
RXD单元每接收完一个数据即向数据处理单元发送一个active高电平有效信号, 告之其此时的数据是需要处理的, 数据处理单元接收到active有效后采集data, 这样可以避免数据采集的错误。不同的系统所要完成的数据处理功能也不相同, 本实验中完成的是对接收信号进行213卷积编码功能。如果其他系统需要采集多个数据后再处理一次, 可以在接收端也添加一个FIFO缓存数据。
2 FPGA主要功能模块设计
2.1 RXD模块
RXD主要包括分频模块, 数据采样存储模块, ASCII码转换模块。为了更好的理解RXD工作流程, 下面先介绍一下异步串行通信的数据传输格式。每发一帧数据包含一位起始位、8位数据位、一位奇偶校验位和一位停止位。当发送端处于空闲状态时, 一直发送高电平。每次开始发送新数据前首先发送一位低电平的起始位, 这样检测端检测到低电平就能判断有效数据已开始发送, 准备接收数据。之后接收8位有效数据, 由低位到高位存储。根据收发方约定, 可以采用无奇偶校验位方式, 发送数据率为9600波特。其发送格式如图2。分频模块:FPGA系统的主时钟为50M, 而采样频率为9600*4hz, 为了提供采样时钟, 可以将主时钟进行1302分频。分频可由计数器完成, 计数器以1302为周期循环计数, 每次计到1302后采样时钟置高, 其它时刻都置低。数据采样存储模块:如果连续2次采样都为低电平, 则判断第3次状态, 也为低电平此时采集的就是起始位。然后记录采样时钟, 4个时钟以后采集下个数据, 这时的判决发生在有效数据的中间, 不会发生误判。将数据存储于8位的移位寄存器当中。存储8位数据以后就完成了一个有效数据的提取, 发送端置高等待下次起始位的到来。
ASCII码转换模块:由于发送端发的是数据的ASCII码, 8位数据代表一个0或者1。30H代表0, 31H代表1, 所以在TXD将数据传送给数据处理单元之前先要完成ASCII码的转换, 将转换后的0、1发给下一单元。RXD的工作流程是接收端一直检测PC的发送数据是否为起始位0, 一旦检测到就进行有效数据位的接收, 因为有效数据为8位, 所以要判断接收的位数, 每结束一个比特计数加一, 当计到8时判定接收完毕, 将接收的数据进行ASCII码转换, 然后传送给数据处理模块进行处理。由于数据处理部分在不同系统中完成的工作各不相同, 本文不再赘述。
2.2 FIFO模块
FIFO (First In First Out) 是一种先进先出的数据缓存器, 即读取数据时优先读取最早存入的数据。本系统调用的ISE自带的FIFO IP核, 保证了速度与功耗的最优, 并节省了开发周期。使用FIFO需要设置一些参数。数据宽度设置为1, 即存储的数据宽度是1位。数据深度是指存储器可以存储数据的个数, 设置要考虑系统要测试的代码长度, 如果要测试1000个发送数据的编码是否正确, 那么编码后产生了2000个数据, 深度可以设置为2048, 留有一定富裕度。读写使能信号由分别由TXD和数据处理单元给出。每次FIFO时钟的上升沿到来时, 如果读写使能为高就进行相应的读写操作。数据处理单元每次处理一个数据后就向FIFO发送一个写使能信号, 告之存储一个数据, TXD的操作类似。
2.3 TXD模块
TXD模块负责把处理后的数据从FIFO中读出, 将其传送给MAX232完成电平转换, 返回给PC分析通过验证处理后的的数据是否符合设计要求来证明收发系统的合理性。TXD给FIFO提供读使能信号rd_en, 当数据处理单元完成一个数的编码后存储器中就存入有效值, 这之后TXD就可以置rd_en为高提取存储器数据。存储器中数据是一位的0或1, 发送给PC接收的数据需要符合异步串行通信的格式。例如发送一个0应先发一位起始位0, 再发送0的ASCII码00001100, 最后发送终止位1。
3 FPGA主要模块的仿真分析
3.1 RXD模块仿真
如图3所示, RXD单元的接收串行信号为rxd, 首先由空闲状态1转变为起始位0.clk为采样时钟, 是接收数据的4倍, 图中可以看到每4个时钟采样一位有效数据, 每个采样点发生在有效数据的中间。rcv_shif是接收8位数据的中间移位寄存器, 每次采样数据时, 移位寄存都移位存储一个数据到最高位。当完成8位数据的接收时, 将其转换为0或1.如图, rxd为31H, 转换后的数据code是1, 同时发送一个active高电平通知数据处理单元进行接收并处理。
3.2 FIFO存储器模块
如图4所示, din是数据的输入端, 依次输入8个不同数据, wr_en为写使能端, 在时钟上升沿前置位, 读时钟一直允许置高, 可以看出dout读数据端按顺序输出写入的数据, 符合FIFO的工作原理。
4 结论
FPGA芯片越来越广泛的应用于电子设计当中, 它与PC的通信完成设计的调试起着重要作用。本文实现了FPGA与PC的串口通信系统, 通过软件仿真和下载测试验证了设计的合理性, 系统可移植性强, 对于其他场合只需改变内部处理单元的功能即可使用。
参考文献
[1]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社, 2008.
[2]周润景.FPGA/CPLD数字系统设计实例[M].北京:电子工业出版社, 2007.
[3]王旭东.MATLAB及其在FPGA中的应用[M].北京:国防工业出版社, 2008.
PC串口 篇2
串口是计算机上非常通用的设备通信协议, 大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议, 很多GPIB兼容的设备也带有RS-232口。同时, 串口通信协议也可以用于获取远程采集设备的数据。
串口按位 (bit) 发送和接收字节, 采用异步传输方式, 能够实现远距离通信。典型的串口用于ASCII码字符的传输。通信使用3根线完成:地线、发送、接收。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验, 对于两个进行通信的端口, 这些参数必须匹配。一个数据帧以起始位开始, 紧接着是数据字的最低位。数据字最多可以有9个数据位, 以数据的最高位结束。如果使用校验位, 校验位将紧接着数据位, 最后是结束位。当一个完整的数据帧传输后, 可以立即传输下一个新的数据帧, 或使传输线处于空闲状态。
2 基于PC机和单片机的串口通信系统总体设计
PC机与单片机的串口通信系统框图如图1所示, 主要包括单片机、串口通信电路、PC机串口通信软件和单片机的外围电路。其中单片机是电路系统的核心, 负责接收上位机相关指令, 并控制电路的工作状态。PC机串口通信软件用于向下位机发送控制命令, 并接受下位机数据, 进而测试系统性能。串口通信电路是连接下位机与PC机的桥梁, 是二者进行串口通信的基础。外围电路包括了单片机的复位电路、程序下载接口电路等。
3 系统电路设计
所设计的基于PC机与单片机的串口通信系统电路如图2所示, 主要包括单片机、串口通信电路、ISP程序下载接口电路和系统复位电路。
本电路基于RS-232接口标准, 使用DB-9连接器, 采用AVR单片机的通用同步/异步串行接收/发器USART (Universal Synchronous/Asynchronous Receiver/Transmitter) 进行串口通信电路系统的设计。USART是一个高度灵活的串行通讯设备, 具有全双工操作、异步或同步操作、高精度的波特率发生器、数据过速检测、帧错误检测、噪声滤波、多处理器通讯模式、倍速异步通讯模式、三个独立的中断等特点。
由于单片机输出的TTL电平与PC机的RS-232串口电平的电气特性不匹配。为了使单片机能与PC机正常通信, 采用美信公司的MAX232芯片进行电平转换。MAX232是专门为电脑的RS-232标准串口设计的接口芯片, 功能比较强大。MAX232芯片与计算机连接的端口中有三个驱动端和五个接收端, 因此可以同时进行多路通信。另外MAX232芯片的传输速率最高可以达到235kbps。在所设计的串口通信电路系统中, 单片机的数据通过RXD、TXD与MAX3232相连, 经MAX3232完成电平转换后成为RXD1、TXD1信号, 再通过串口线与主机相连。
4 上位机测试软件设计
本文基于Visual C++平台下的MSComm (Microsoft Communications Control) 控件设计串口通信测试软件。MSComm是Microsoft公司提供的简化Windows下串行通信编程的Active X控件, 它为应用程序提供了通过串行接口收发数据的简便方法。
MSComm提供了两种处理通信问题的方法, 事件驱动法和查询法。在使用事件驱动法设计程序时, 每当有新字符到达、端口状态改变或发生错误时, MSComm控件将触发On Comm事件, 而应用程序在捕获该事件后, 通过检查MSComm控件的Comm Event属性可以获知所发生的事件或错误, 从而采取相应的操作, 这种方法的优点是程序响应及时, 可靠性高。查询法适合于较小的应用程序, 每当应用程序执行完某一串行口操作后, 将不断检查MSComm控件的Comm Event属性, 以检查执行结果或某一事件是否发生。
MSComm控件有很多重要的属性: (1) Comm Port属性:设置并返回通信端口号; (2) Settings属性:设置并返回数据传输率、奇偶校验、数据位、停止位。Settings属性的缺省值是:“9600, N, 8, 1”; (3) Port Open属性:设置或返回串口状态, 值为TURE时打开, 值为FALSE时关闭; (4) Input属性:从接收缓冲区读取数据, 类型为VARIANT; (5) Input Mode属性:读取或设置从接收缓冲区读取数据的格式; (6) In Buffer Count属性:读取接收缓冲区中的字节数; (7) In Buffer Size属性:读取或设置接收缓冲区的大小; (8) Output属性:向发送缓冲区写入数据; (9) Out Buffer Count属性:读取发送缓冲区中的字节数; (10) Out Buffer Size属性:读取或设置接收缓冲区的大小; (11) RThreshold属性:设置并返回要接收的字符数; (12) Comm Event属性:读取或设置串口事件。
根据通用串口传输协议, 并结合系统对数据通信速率等参数的要求, 选定串口通信的典型参数:波特率, 9600;数据位, 8;停止位, 1;校验位, 无;流控制, 无。结合MSComm控件的属性特点并采用事件驱动法设计串口通信程序, 程序流程图如图3所示。
串口初始化程序设计如下:
5 系统测试
基于所设计的串口通信电路系统和串口通信测试软件, 搭建实验平台, 进行系统测试。设置串口参数, 并向下位机发送控制命令, 如图4所示;下位机开始工作, 并周期性向上位机发送数据, 在所设计的测试界面上进行显示, 如图5所示。通过测试, 该系统工作稳定, PC机与单片机之间能够进行正常的串口通信, 系统电路在测试软件发出的控制命令作用下可以正常工作, 测试软件能够对系统进行有效控制并能实时显示实验数据。
6 结束语
本文深入研究了串口通信原理, 设计了基于PC机和单片机的串口通信系统, 基于AVR单片机完成了系统硬件电路的设计, 基于Visual C++平台设计了串口通信测试软件, 并对所设计的电路及软件进行联合调试, 经过测试, 该系统工作稳定、可靠, 达到了串口通信系统设计要求, 为PC机与单片机构成的测控系统提供了一套完整的串口通信解决方案。
参考文献
[1]崔寅生.基于多串口通信的实时温度采集系统设计[J].微计算机信息, 2009 (34) .
[2]曾洁, 贾世杰, 陈少华.基于串口通信方式实现对工控微处理器的代码下载与调试[J].化工自动化及仪表, 2009 (1) .
[3]唐姗姗, 曹立军.工程中的串口通信设计[J].信息通信, 2009 (5) .
[4]朱洪波.Visual C++6.0完全自学宝典[M].北京:清华大学出版社, 2008.
[5]李长林, 高洁.Visual C++串口通信技术与典型实例[M].北京:清华大学出版社, 2006.
PC串口 篇3
MSComm控件全称为Microsoft Communication Control, 是微软公司提供的Active X控件, 目的是为了简化Windows下串行通信编程。通过对此控件的属性和事件进行编程, 从而实现数据的发送和接收。
1.1 MSComm的属性
(1) Comm Port属性设置或返回通信端口号, 其属性值的范围是1~16之间的任何整数值且默认值为1既串口COM1。
(2) Settings属性设置并返回通信参数, 用来指定数据传输率 (波特率) 、奇偶校验、数据位数和停止位数。例如:MSComm1.Settings=“4800, N, 8, 1”表示传输率为4800bit/s, 没有奇偶校验位, 8位数据位, 1位停止位。
(3) Port Open属性设置或返回通信端口的状态, 属性为True时打开端口, False则关闭端口, 并清除接收和传输缓冲区。
(4) Out Put属性向传输缓冲区写数据, 可以传输文本数据和二进制数据。
(5) Input Mode属性设置或返回接受数据的数据类型, 0表示以文本方式取回传入的数据, 1则表示以二进制方式取回传入的数据。
(6) Input属性返回并删除接收缓冲区中的数据。
(7) Input Len属性设置并返回Input属性从接收缓冲区读取的字符数, 缺省值是0表示用Input读取接收缓冲区中全部的容。
(8) RThreshold属性在发生On Comm事件之前要接收的字符数。例如:
MSComm1.RThreshold=0表示不产生On Comm事件, MSComm1.RThreshold=1则表示接收缓冲区每收到一个字符都会使MSComm控件触发On Comm事件。
(9) SThreshold属性在发生On Comm事件之前传输缓冲区 (发送缓冲区) 中的最小字符数。MSComm1.SThreshold=0 (缺省值) 数据传输事件不产生On Comm事件;若设MSComm1RThreshold=1则表示传输缓冲区全空时, MSComm控件产生On Comm事件。
(10) Out Buffer Size属性设置或返回传输缓冲区大小。
(11) In Buffer Size属性设置或返回接收缓冲区大小。
(12) Handshaking属性设置或返回硬件握手协议, 0表示没有握手协议, 不考虑流量控制;1表示在数据流中嵌入控制符来进行流量控制;2表示由信号线RTS自动进行流量控制;3表示1、2两者皆可。
1.2 MSComm的事件
On Comm事件是MSComm控件唯一的事件, 当有数据到达端口或端口状态发生改变或有通信错误产生时, 都将触发OnComm事件。本质上讲, MSComm控件把17个事件合并为一个事件On Comm。用属性Comm Event的17个值来区分不同的触发时机, 我们可以在每一个相关的Case语句之后编写程序代码来处理特定的事件或错误信息。
1.3 MSComm的通信步骤
(1) 添加MSComm控件; (2) 设置端口号, 也就是Comm Port属性; (3) 设置通信协议, 即Handshaking属性; (4) 设置通信参数, 即Setting属性; (5) 根据实际情况设置其他相关属性; (6) 打开端口, 即Port Open属性设为True; (7) 利用Out Put及Input属性发送或接收字符流; (8) 关闭通信端口, 即Port Open属性设为False。
2 单片机与PC机间的通信实例
2.1 实例说明
在本例中, PC机上运行的界面如图1所示, 在发送数据文本框中输入一个“0~255”之间的整数, 并单击发送数据按钮, 单片机将接收到该数据并显示这个数据, 然后作除4处理, 结果再经串口返回到PC机端。例如当发送数据200时, 单片机电路中数码管上显示200, 同时单片机对200作除4处理, 得到50返送回PC机上显示。
2.2 实例实现步骤如下
(1) 单片机采用与MCS51兼容的AT89C52, 由于PC机端的RS232电平与单片机端的TTL电平不匹配, 故必须进行电平转换, 本例中采用美信MAX232芯片完成。电路其它部分为单片机常规电路[2]。
(2) PC机端VB程序代码如下:
初始化部分代码:
(3) 单片机部分程序代码
单片机串口工作方式, 波特率为:9600 bit/s, 单片机程序采用汇编语言编写并以中断方式执行数据的收发工作, 以下是串口中断程序:
3 结束语
串口通信是一项广泛应用到各个领域的通信技术, 尤其是单片机与PC机间的通信。在实践中, 借助于Visual Basic的MSComm串口控件, 使通信变得方便、快捷, 能用较少的代码实现其功能, 使编程效率大大提高, 减少了因其它方法编程不当而导致的系统不稳定。因此, 掌握这项技术具有很好的实用价值。
参考文献
[1]李江全, 张丽, 岑红蕾.Visual Basic串口通信与测控应用技术实战详解[M].北京:人民邮电出版社, 2007.
PC串口 篇4
分布式计算机控制系统又称为集散控制系统,其中下位机一般采用单片机,此系统中,单片机的主要作用只能进行数据采集,却无法对采集的数据进行处理。数据最终都采用PC机进行处理。单片机需要将大量的数据传输给PC机进行处理,因此,二者之间需要数据连接。此时,RS232串口作为PC机与单片机之间的信息连接的桥梁出现,RS232串口作为PC机的常规配置,有时是一个,也可能是多个[1]。
二、RS232串口通信
2.1RS232串口通信概念:串口通信的概念非常简单,一般个人计算机上都会配备,是一种传输标准接口,由电子工业协会制定。DB-9和DB-25都是RS232的常见型态,我们日常用的计算机上一般都会有两个RS232接口,分别为COM1和COM2。发送和接收速度要明显慢于按字节的并行通信,但串口通信的优势在于能同时发送和接收数据[2]。对于远距离通信,能很简单地实现,并行通信只能近距离通信。
2.2RS232串口通信原理:通过对串口通信的了解发现,其传输方式是通过ASCII码字符进行传输。使用地线、发送线、接收线完成通信。串口通信端口能在一根线上发送,同时在另一根线上接收。串口通信中最要重的参数有以下几个:(1)波特率:此参数能很好的反映通信的速度。表示每秒传输数据位的个数。波特率和时钟周期其实是相同概念。值得注意的是,波特率是与距离成反比的,在很近的仪器间通信往往需要很高的波特率[3]。(2) 数据位:此参数能很好地反映通信中的实际数据。计算机发送信息包时,选择的标准值一般是5、7、8位,传送何种信息就选择什么样的标准值。7位标准值是标准的ASCII码,8位标准值是扩展的ASCII码。选择何种ASCII码就选择何种标准值。(3)停止位:单个包的最后一位有名停止位,值有:1,1.5,2位。数据的定时一般都是传输线,故不同设备有着各自的时钟。实际的通信过程中,经常会出现设备间传输不同步,但不同步差异性较小,此时就需要停止位来校正设备间的不同步,校正计算机时钟,同时,停止位也表示传输结束。因此,停止位并不是适用的位数越多越好,适用位数的增多带来的是数据传输率的减慢。(4)奇偶校验位:此参数能有效检验串口通信错误,检错方式主要有以下四种:偶、奇、高和低。校验偶和奇时,数据后面的一位就是校验位,校验位会用一个值表示,校验位一般会由串口设置。校验高和低时,一般不会对数据进行检查。此时对于接受设备而言,能轻松了解一个位的状态,能判断出数据的传输和接受是否同步或通信是否有其他干扰。
2.3串口通讯RS232C标准。随着通信技术的不断发展,现实生活中通讯的使用率明显提高,目前串口通信接口标准已发展为多种,但所有的接口标准均是基于RS232的标准改造的。本文以RS232C作为重点进行讨论。RS232C标准最早见于上世纪60年代美国通信公司公布的通信协议。此标准对于数据传输速率有一定要求,0-20000b/s内的数据传输率明显适用。RS232C标准对于串行通信接口的相关问题都有明确说明。现今,通讯设备厂商生产的通信设备都与RS232C制式兼容,故RS232C已成为一种通信接口标准在微机通信接口中大范围使用。
2.3.1电气特性:EIA-RS232C中对于器特性、逻辑电平和各种信号线功能的规定如下:在Tx D和Rx D上:逻辑1(MARK)=-3V~-15V,逻辑0(SPACE)=+3~+15V。在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V~+15V,信号无效(断开,OFF状态,负电压)=-3V~-15V
2.3.2连接器的机械特性:在连接器的物理特性的定义方面,RS232C中无明确表示,因此目前出现了各种类型的连接器,较为常见的有DB-9、DB-25,以上两种连接器有着各自的引脚定义,且完全不同。DB-9:适用于部分不支持20m A电流环接口,能连接COM1和COM2两个串行接口。DB-9连接器仅能提供导步通信的9个信号。DB-25:适用于XT机和PC机的连接。
2.4RS232与单片机之间的接口电路MAX232。在电平方面,单片机串口信号和RS232信号有着明显差异,因此RS232与单片机之间需通过转化实现电平的一致性。目前采用较为广泛的转换器是MAX232。MAX232的供电来源是+5V电源,配置的是5个钽电容,配置来源可方便获得,串行信号经MAX232转换后变为TXD,RXD直接与PC机的串口相连接。
在MAX232芯片内部结构的构成方面,经研究发现,内部结构主要有三个部分构成:(1)电荷泵电路。组成部分:4支电容+1,2,3,4,5,6脚。电荷泵电路能产生正负12v的电源,供应于RS232信号电平,使RS232信号电平持续运行[6]。(2)数据转换通道。组成:7,8,9,10,11,12,13,14脚。以上组成部分又可分为13、12、11、14脚为主的第一数据通道和8、9、10、7脚为主的第二数据通道。从11脚,10脚TTL/COMS数据输入,经过转换,成为RS232数据并从14脚,7脚输出,进入电脑DB-9插头;电脑DB-9插头内的RS232数据从13脚,8脚输入,经过转换后,变为TTL/COMS数据,再从12脚,9脚输出。(3)供电。
2.5RS232的不足之处。(1)传输距离不足,实际操作中,传输距离仅为50m,无法满足需求;(2)传输速率最大仅为19200b,速率明显较低;(3)输形式为共地传输,传输过程中易受到噪音干扰,影响传输效果。
三、结语
本研究探讨了RS232串口通信在PC机与单片机通信中的应用,研究指出,单片机和PC机之间传输需要RS232串口,其作为重要的信息传递枢纽,能有效完成数据和指令传输[4]。但是,RS232也会有不足之处,需要对不足之处进行改进,改进后的RS232能有效加强PC机和单片机之间的通信。
参考文献
[1]李朝青.单片机原理及接口技术[M].3版.北京:北京航空航天大学出版社,2005.
[2]陈传波,杜鹃,张智杰.WIN32下基于RS 232协议的通信方法及应用研究[J].南昌大学学报,2005,27(3):70-75.
[3]喻桂兰,彭字宁,赵开开,VB 6.0与RS 232在多机通信技术中的应用[J].实验科学与技术,2009,8(4):54-57.
[4]吴兴中,欧青立.一种PC与单片机多机RS232串口通信设计[J].国外电子测量技术,2009,28(1):75-76.
[5]潘方.RS 232串口通信在PC机与单片机通信中的应用[J].现代电子技术,2012,35(13):69-71.