C8051F020单片机的RS485串行通信设计

最新更新时间:2014-11-23来源: 互联网关键字:C8051F020  单片机  串行通信设计 手机看文章 扫描二维码
随时随地手机看文章

  l 引言

  随着计算机技术和测控技术的不断发展,在以单片机为核心的数据采集系统中,需要实现单片机和计算机之间的数据交换,并以此来发挥单片机和计算机各自的长处,提升整个系统的性能价格比。

  在计算机网络和工业控制系统中,经常需要采用串行通信来实现远程数据传输。目前,有多种接口标准可用于串行通信,包括RS232、RS422、RS485等。RS232是最早的串行接口标准,在短距离、较低波特率串行通信中得到了广泛应用。但是,RS232通信存在着传输速度慢、传输距离短、信号容易受到干扰等不足,其应用局限性已日益突出。而RS485通信采用差分方式来消除噪声,即信号在发送前会分解为正负2条线路,当到达接收端时将信号相减,使噪声相互抵消,还原成原来的信号,这种方式对共模干扰抑制能力较强,已广泛应用于工业控制等领域。

  要实现单片机与计算机之间的RS485通信,一般可以采用2种方法:一种方法是在单片机与计算机两端分别采用RS232与RS485电平转换装置;另一种方法是采用RS485通信卡,并将其插在计算机主板上。采用前一种方法的优点是硬件装置安装简便,软件编程相对简单;缺点是通信速率被限制在20 kb/s以内。第二种方法的优点是通信距离较远,速率较高,可达10 Mb/s;缺点是需要安装通讯卡和驱动程序,并进行必要的设置。本文采用第二种方法。

  2 总体架构

  在某型电子设备研制中,选用美国Cygnal公司生产的一种soc型8位单片机C8051F020,对测控系统进行数据采集。该单片机是C8051F系列的F02X子系列,其性价比在工业控制领域具有较强的竞争力。它是完全集成的混合信号系统级芯片,具有与8051指令集完全兼容的CIP一51内核,对于熟悉51单片机的技术人员来说,在硬件设计及软件编程上大大提高了开发效率。

  测控计算机采用研华的IPC-610工控机,并选用PCL一846B通信卡进行RS485串行数据通信,该通信卡包含4通道,每个通道可以对32个节点进行通信。

  为了实现单片机与工控机之间的RS485串行通信,必须对单片机的UART输出电平进行转换,以满足RS485串行通信需求。选用MAX485接口芯片,它是Maxim公司的一种RS485接口芯片,该芯片的结构和引脚都比较简单。

  该设计理论上可以实现1台工控机(安装1块RS485通信卡)对128台单片机进行Rs485串行通信,其总体设计框图如图1所示。

  

 

  图1 总体结构

  3 系统硬件设计

  3.1 硬件简介

  1)C8051F020单片机

  C8051F020内部有2个增强型全双工UART、SPI总线和SMBus/IC.这些串行总线都用硬件实现,都能够向CIP-51内核产生中断,只需要很少的CPU干预;这些串行总线不“共享”定时器、中断或I/O端口等资源,因此可以使用任何一个或者全部同时使用。

  2)MAX485芯片

  MAX485芯片采用+5V电源工作,其额定电流为300“A,它能将UART输出电平转换为RS485电平。该芯片有8个引脚,其内部含有1个接收器和1个驱动器,R0为接收器的输出端,接单片机的TXD引脚;DI为驱动器的输入端,接单片机的RXD引脚。/RE是接收使能端,当/RE=0时,MAX485芯片处于接收状态;DE是发送使能端,当DE=1时,MAX485芯片处于发送状态。

  MAX485芯片的A端与B端分别为接收与发送的差分信号端。当VA小于VB时,表示发送信号为”0“;当VA大于VB时,表示发送信号为”1“。MAX485芯片工作时,A、B两端之间应当加上匹配电阻尺,一般选用120 Ω;当通信距离较远时,可以选用300 Ω。

  3)RS485通信卡

  Rs485通信卡具有较强的抗干扰能力、较高的通信速率以及较低的价格,在工业控制等领域具有较强的竞争力和实用性。选用研华的PCL-846B通信卡,该卡支持RS422和RS485 2种串行通信接口标准,需要通过跳线进行设置。另外,在该通信卡的4个通道上均预留有焊接终端匹配电阻的焊孔。

  3.2 电路设计

  采用UART串行总线进行通信,因为UART是一种广泛应用于远距离、低速率、低成本通信的串行传输接口,由于其具有数据线少的特点,在数字系统设计中得到了大量应用。基本的UART通信只需要两根数据线(RXD、TXD)即可完成数据的相互通信,接收和发送都是全双工形式,其中RXD是接收端,TXD是发送端。

  C8051F020单片机有2个UART(UART0和UARTl),以UART0为例,它的TxD和RXD分别与数字I/0引脚PO.O和PO.1复用,通过交叉开关配置寄存器进行选择。由于MAX485工作在半双工状态,它与单片机连接时的接线比较简单,只需要用单片机某一个引脚(如PO.2)来控制RE和DE这2个引脚。PCL-846B通信卡有4个通道,选择通道1与单片机进行通信,另外将通道2和通道4进行连接,以自发自收的方式实现通信卡的自检。单片机与外部电路的连接关系如图2所示。

  

 

  图2 硬件电路原理

  在使用RS485通信卡进行通信时,当信号传递到通信线路两端时,如果阻抗不匹配,可能会产生信号反射问题。信号反射会造成信号的失真和变形,从而导致通信错误。其解决方法就是在通信线路的两端各连接一个终端匹配电阻,保证阻抗匹配。当通信距离较短,一般在小于300 m时,可不使用终端电阻。当通信距离大于300 m时,应当使用终端电阻,其阻值必须与通信线路的线性阻抗相同。电阻值一般选取120 Ω左右,当通信距离较长时,可以选用300 Ω。

  4 软件设计

  4.1 通信方式

  C8051F020单片机的UARTo提供4种工作方式(1种同步方式和3种异步方式),以方式1为例:方式1提供标准的异步、全双工通信,每个数据字节共包含10位:1个起始位、8个数据位和1个停止位。数据从TX引脚发送,在RX引脚接收。2在多机通信中,通常选择方式2和方式3,通过使用第9数据位和内置UARTo地址识别硬件支持一个主处理器与多个从处理器之问的多机通信。

  为了简化UART0的使用和软件编程,选择方式1进行多机通信,通过编写串口中断程序对通信双方进行约定。具体做法是:

  1)约定发送数据的格式,本文约定以”#……*“作为合法的数据格式,即以”#“开始和”*“结束作为判断数据有效性的依据。

  2)在”#“和”*“之间的数据是需要的,本文约定以第2个字符(当设备较多时,可以2个字符)作为接收设备的识别码,由接收设备(单片机或上位机)对该字符进行判断,确定是否需要接收该数据。

  3)当接收设备需要知道发送数据的来源时,也可以约定发送设备的识别码(由于每台设备既可以是发送设备也可以是接收设备,因此可以约定一个固定的识别码),在发送数据中插入该识别码(插入位置必须事先约定),即可获知数据的来源设备。  4.2 串口波特率

  C8051F020单片机有5个16位通用计数器/定时器(T0~T4)和一个片内可编程计数器/定时器阵列(PCA)。方式1的波特率是定时器溢出时间的函数,UART0可以使用定时器1工作在8位自动重装载方式或者定时器2工作在波特率发生器方式产生波特率。以定时器2为例,其波特率的计算公式是:

  

 

  式中:SySCLK是单片机的系统时钟,RCAP2H和RCAP2L分别为定时器2的重装载寄存器的高8位和低8位。

  波特率根据数据传输速率的实际需要确定,波特率确定后即可计算出定时器2的重装载寄存器的初始值T2。

  

 

  采用22.1184 MHz晶体振荡器作为系统时钟,波特率为9600 b/s,计算得到T2=FFB8H(十六进制)。

  4.3 软件流程

  C8051F020单片机内部具有JTAG和调试电路,可以通过JTAG接口对MCU进行非侵入式、全速、在系统调试。根据系统功能需求,对软件进行模块化设计,并利用Silicon Labs IDE集成开发环境对单片机进行编程与调试。利用C8051F020单片机的中断系统,直接采用C语言对UART中断服务程序进行编写。

  单片机的串口通信程序可由数据发送和接收2个模块构成。数据发送模块首先需要设置UART为发送状态,清除发送标志后向sBF中写入数据,开始逐个发送字符,数据发送完成后,恢复UART为接收状态。数据接收模块清除接收标志后读SBF中的数据,开始接收字符,首先判断接收数据是否有效,然后分析处理数据,接收完数据后,退出接收程序。UART串口发送和接收模块的程序流程如图3所示。

  

 

  图3 串口通信程序流程

  5 实验分析

  设计的系统已经应用于某型实时测控装置研制中,该测控装置含有2个单片机,其主控上位机安装有l块RS485通信卡。具体验证过程是:将1个测控装置与1台上位机距离50 m进行串行通信,通信正常可靠。将2个测控装置与2台上位机(均安装有RS485通信卡)分别相距50 m,通信线路采用并联,4个通信节点之间RS485通信正常可靠。依次类推,在多个测控装置与多台上位机进行远距离通信时,RS485通信均正常可靠。

  在上位机上通过串口调试助手可以简便地对串口进行调试。该调试工具可以实时发送和接收串行数据,数据格式和传输速率可调,可以动态观察各通信节点的数据收发情况。串口调试界面如图4所示。

  

 

  图4 串口调试界面

  该设计方法成功实现了单片机与上位机之间的RS485串行通信,在单片机与上位机距离50 m以内可以实现115.2 k/ps的高速通信,数据传输误码率低,完全满足系统设计指标。

  6 结论

  通过在单片机与工控机之间建立RS485串行通信网络,利用RS485串行通信的优势,可以保证稳定、快速、远距离地传输数据。设计的系统已经在某型实时测控装置研制中得到成功应用,经实验验证,数据传输正常可靠,达到设计要求。

  由于设计方法开发成本低、软件设计简单、使用维护方便,其通信设计方法还可以稍加修改移植到其他测控系统中,在计算机通信和工业控制等领域将会得到越来越多的应用。

关键字:C8051F020  单片机  串行通信设计 编辑:探路者 引用地址:C8051F020单片机的RS485串行通信设计

上一篇:基于Atmega16单片机的新型智能空调遥控器
下一篇:基于FPGA低成本、高灵活度MIPI CSI-2、DSI连接解决方案

推荐阅读最新更新时间:2023-10-12 22:49

AVR单片机系列之-Atmega8A编程入门
前言: 最近由于开始设计无刷直流电机电子调速器,参考网上的一些资料,选用了Atmega8A-AU单片机作为主控芯片。 该芯片采用8位结构,最高主频16MHz(内部振荡器则8MHz),可实现2.7V-5.5V供电,单个IO口最大可支持40mA的拉/灌电流,更难能可贵的是,价格十分便宜,我在淘宝上面购买才3块多一片。 之前从未使用过AVR系列的单片机,于是一开始编程也遇到了一些障碍,直至最终编写好第一个程序,整个过程在此记录下来,供以后参考。 一、下载器 首先我在百度上和阿莫论坛里面查询了一下AVR单片机的下载器,然后又在淘宝上面搜索对应的型号,发现目前国内主流的是ISP串口下载器,也就是和51单片机的下载器原理一样。于是乎在淘宝上面
[单片机]
AVR<font color='red'>单片机</font>系列之-Atmega8A编程入门
基于单片机的模糊控制系统的设计与实现
1 引言      模糊控制(Fuzzy Control)是目前自动控制研究中活跃而富有成果的领域之一,模糊理论是当前能用来对信息进行软处理的最新技术,可以将人的定性思维和判断方法定量化 为适合计算机处理的过程,使计算机能判断像“大概”、“轻”这样的模糊信息。采用传统控制理论,不管是用经典控制理论还是用现代控制理论来设计一个控制系 统,都需要事先知道被控对象的精确数学模型。然而,在许多情况下被控对象(或生产过程)的精确数学模型很难建立;像建材工业生产中的水泥窑、玻璃窑,化学 生产中的化学反应过程,食品生产中的发酵过程,还有众多炉类的热处理过程。诸如此类过程具有变量多,各种参数存在不同程度的时变性;且过程具有非线性,强 耦合,较
[嵌入式]
基于MSP430F149单片机的炮兵气象仪设计
  针对目前采用的简易气象综合观测仪,存在着实时性差、精度不够、作业时间长以及不能直接计算射击条件修正量和地面风修正量等诸多问题,本文提出基于MSP430F149单片机设计一种炮兵气象仪,以满足炮兵分队射击时的简易气象条件和火箭炮地面风修正的需要。   气象仪的功能和基本工作原理   气象仪的功能包括:①实时测定风向、风速、气温和气压等气象条件,为炮兵射击提供简易气象条件修正量;②实时测定火箭炮阵地的地面风向和风速,为火箭炮分队提供地面风修正量。   炮兵气象仪用于实现地面气象条件风向、风速、气温、气压的自动测量和射击条件修正量及火箭炮地面风修正量的自动计算。其基本工作原理是:将气象仪与处理机通过数据线相连,通过升降杆将气
[单片机]
基于MSP430F149<font color='red'>单片机</font>的炮兵气象仪<font color='red'>设计</font>
基于AVR单片机的智能蓄电池巡检系统
0 引言 在通信、电力和微波等系统中,蓄电池组是重要的储能设备,它可保证通信设备及动力设备的不问断供电,直接关系到整个直流电源系统的可靠运行。如果不能妥善的管理使用蓄电池组,例如过充电、过放电及电池老化等现象,都会导致电池损坏或电池容量急剧下降(因为电池组一般是由电池单体串联组成,即使只有一节电池性能恶化,也会严重影响整组电池的性能),从而影响设备的正常供电。因此,及时可靠的对电池组进行巡回检测对于维护通信系统设备的正常运转具有十分重要的意义。目前电力系统常用的检测方法就是平时测量电池的端电压及每年进行容量核对性放电,显然平时浮充状态下的端电压测量是难以反映电池的好坏的,即使性能差的电池在浮充时也能测得合格的电压,而一旦停电
[单片机]
基于AVR<font color='red'>单片机</font>的智能蓄电池巡检系统
基于STM32H7 MCU的智能家居语音接口参考设计
STEVAL语音接口可将基于云计算服务的Alexa体验带到烤箱、炉灶、温度计、百叶窗、吹风机等家电产品,减少传统按钮和旋钮的使用,而无需在电子硬件上大量投资。本方案采用集成了Alexa语音用户接口软件的STM32H7 MCU,可简化家电控制器的研发,而且软、硬件都可以轻松调整和修改。 图1. STEVAL语音接口样板 方案特点 ASTEVAL-VOICE-UI语音接口参考设计包括一个STM32H743高性能MCU、一个Wi-Fi模块,板子尺寸36mm x 65mm。与采用DSP、无闪存处理器等常用元器件的Alexa产品不同,本方案即使环境吵闹嘈杂,麦克风间隔很小,音频前端仍能提供出色的远场语音检测功能。 图2. STEVA
[单片机]
基于STM32H7 <font color='red'>MCU</font>的智能家居语音接口参考<font color='red'>设计</font>
51单片机-数组&数码管
1.回顾 大家还记得我们用数组来存取流水灯的状态值吗,那么数码管也是一样的,我们可以知道数码管能显示出在单片机编程中最常见的数字和字母为0~9,A,b,C,d,E,F这16种状态,那么这一讲我们实现单个数码管从0到F间隔一秒来循环显示。 2.单片机内存 首先要知道我们写的程序是占用内存的,这些内存就是单片机内部的FLASH。 STC89C52RC芯片中用来存放程序代码的FLASH内存为8K字节(8192字节)。 而初始化的数组的内存都是存放在单片机的RAM中的,我们平时定义的变量也都是占用RAM的,因为定义的变量数值是要改变的,所以这些变量只能存放在RAM中。 但STC89C52RC芯片中RAM的内存很小,只有5
[单片机]
单片机实现干簧管计数器的实验
 在本实验中,要设计一个干簧管计数器,并用数码管来显示。在本例中,还要接触单片机一个重要的功能“中断”。   干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃营,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。下图是它的结构示意图。   平时,玻璃管中的两个由特殊材料制成的簧片是分开的。   当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通。外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了。因此,作为一种利用磁场信号来控制的线路开关器件
[电源管理]
<font color='red'>单片机</font>实现干簧管计数器的实验
以STM32F407ZGT6单片机来讲解一下扩展外部SRAM
现在的电子系统应用,对SRAM要求越来越高,单片机或ARM内部的RAM越来越不够用。当电脑运行比较卡的时候,我们可以通过给电脑加装内存条来改善电脑的性能。我们可以给单片机外加和内存条效果一样的SRAM来提升单片机的性能。下面以STM32F407ZGT6单片机来讲解一下来扩展外部SRAM。 给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即SRAM芯片)组成的通用标准模块,而STM32直接与SRAM芯片连接。下面就是我们今天的主角SRAM,具体型号为EMI7064的国产EMI SRAM,那么就来看一看EMI7064的管脚图吧。 8pin SOIC 150m
[单片机]
以STM32F407ZGT6<font color='red'>单片机</font>来讲解一下扩展外部SRAM
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved