首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
模拟电路
» C8051F020单片机的RS485串行通信设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
C8051F020单片机的RS485串行通信设计
发短消息
加为好友
520503
当前离线
UID
872339
帖子
13270
精华
0
积分
6635
阅读权限
90
在线时间
361 小时
注册时间
2012-3-2
最后登录
2016-3-10
论坛元老
UID
872339
1
#
打印
字体大小:
t
T
520503
发表于 2015-3-14 23:40
|
只看该作者
C8051F020单片机的RS485串行通信设计
计算机技术
,
测控技术
,
计算机网络
,
控制系统
,
数据采集
关键字:单片机 串行通信 RS485
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 Ω。
关键字:单片机 串行通信 RS485
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串行通信的优势,可以保证稳定、快速、远距离地传输数据。设计的系统已经在某型实时测控装置研制中得到成功应用,经实验验证,数据传输正常可靠,达到设计要求。
由于设计方法开发成本低、软件设计简单、使用维护方便,其通信设计方法还可以稍加修改移植到其他测控系统中,在计算机通信和工业控制等领域将会得到越来越多的应用。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议