登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
午后茶座
›
单片机论文下载
›
单片机RS-485多机通讯的实现
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版
单片机RS-485多机通讯的实现
[复制链接]
4394
1
ad***
管理员
发表于 2012-2-14 16:59:41
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
摘 要 本文介绍一种能利用RS-485电气特性和简单的结构方式,采用自定义串行通信协议,实现
单片机
RS-485多机通讯的方法和技巧。 关键词 单片机,RS-485总线,总线冲突,串行通信
1 简介
RS-485串行总线接口标准以差分平衡方式传输信号,具有很强的抗共模干扰的能力,允许一对双绞线上一个发送器驱动多个负载设备。工业现场控制系统中一般都采用该总线标准进行数据传输,而且一般采用RS-485串行总线接口标准的系统都使用8044芯片作为通信控制器或各分机的CPU。8044芯片内部集成了SDLC,HDLC等通信协议,并且集成了相应的硬件电路,通过硬件电路和标准协议的配合,使系统的通讯准确、可靠、快速。8044在市场上日渐稀少,虽然有8344可替代,但几百元的价位与普通单片机几元至几十元的价位相差甚远,用户在开发一般的单片机应用系统时,都希望能用简单的电路和简单的通信协议完成数据交换。譬如:利用单片机本身所提供的简单串行接口,加上总线驱动器如SN75176等组合成简单的RS-485通讯网络。本文所述的方法已成功地应用于工程项目,一台主机与60台从机通讯,通讯波特率达64KBPS。
2 总线驱动器芯片SN75176
常用的RS-485总线驱动芯片有SN75174,SN75175,SN75176。SN75176芯片有一个发送器和一个接收器,非常适合作为RS-485总线驱动芯片。
SN75176及其逻辑如图1所示。
图1 SN75176芯片及其逻辑关系
3 RS-485方式构成的多机通信原理
在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。采用RS-485构成的多机通讯原理框图,如图2所示。
图2 采用RS-485构成的多机通讯原理框图
在总线末端接一个匹配电阻,吸收总线上的反射信号,保证正常传输信号干净、无毛刺。匹配电阻的取值应该与总线的特性阻抗相当。
当总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。将总线上差分信号的正端A+和+5电源间接一个10K的电阻;正端A+和负端B-间接一个10K的电阻;负端B-和地间接一个10K的电阻,形成一个电阻网络。当总线上没有信号传输时,正端A+的电平大约为3.2V,负端B-的电平大约为1.6V,即使有干扰信号,却很难产生串行通信的起始信号0,从而增加了总线抗干扰的能力。
4 通信规则
由于RS-485通讯是一种半双工通讯,发送和接收共用同一物理信道。在任意时刻只允许一台单机处于发送状态。因此要求应答的单机必须在侦听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下,才能应答。半双工通讯对主机和从机的发送和接收时序有严格的要求。如果在时序上配合不好,就会发生总线冲突,使整个系统的通讯瘫痪,无法正常工作。要做到总线上的设备在时序上的严格配合,必须要遵从以下几项原则:
1) 复位时,主从机都应该处于接收状态。
SN75176芯片的发送和接收功能转换是由芯片的 RE* ,DE端控制的。RE*=1,DE=1时,SN75176发送状态;RE*=0,DE=0时,SN75176处于接收状态。一般使用单片机的一根口线连接RE*,DE端。在上电复位时,由于硬件电路稳定需要一定的时间,并且单片机各端口复位后处于高电平状态,这样就会使总线上各个分机处于发送状态,加上上电时各电路的不稳定,可能向总线发送信息。因此,如果用一根口线作发送和接收控制信号,应该将口线反向后接入SN75176的控制端,使上电时SN75176处于接收状态。
另外,在主从机软件上也应附加若干处理措施,如:上电时或正式通讯之前,对串行口做几次空操作,清除端口的非法数据和命令。
2) 控制端RE*,DE的信号的有效脉宽应该大于发送或接收一帧信号的宽度。
在RS-232,RS-422等全双工通讯过程中,发送和接收信号分别在不同的物理链路上传输,发送端始终为发送端,接收端始终为接收端,不存在发送、接收控制信号切换问题。在RS-485半双工通讯中,由于SN75176的发送和接收都由同一器件完成,并且发送和接收使用同一物理链路,必须对控制信号进行切换。控制信号何时为高电平,何时为低电平,一般以单片机的TI,RI信号作参考。
发送时,检测TI是否建立起来,当TI为高电平后关闭发送功能转为接收功能;
接收时,检测RI是否建立起来,当RI为高电平后,接收完毕,又可以转为发送。
在理论上虽然行得通,但在实际联调中却出现传输数据时对时错的现象。根据查证有关资料,并在联调中借助存储示波器反复测试,才发现一个值得注意的问题,我们可以查看单片机的时序:
图3 串行口模式3时序图
单片机在串行口发送数据时,只要将8位数据位传送完毕,TI标志即建立,但此时应发送的第九位数据位(若发送地址帧时)和停止位尚未发出。如果在这是关闭发送控制,势必造成发送帧数据不完整。如果单片机多机通讯采用较高的波特率,几条操作指令的延时就可能超过2位(或1位)数据的发送时间,问题或许不会出现。但是如果采用较低波特率,如9600,发送一位数据需100μs左右,单靠几条操作指令的延时远远不够,问题就明显地暴露出来。接收数据时也同样如此,单片机在接收完8个数据位后就建立起RI信号,但此时还未接收到第九位数据位(若接收地址帧时)和停止位。所以,接收端必须延时大于2位数据位的时间(1位数据位时间=1/波特率),再作应答,否则会发生总线冲突。
3) 总线上所连接的各单机的发送控制信号在时序上完全隔开。
为了保证发送和接收信号的完整和正确,避免总线上信号的碰撞,对总线的使用权必须进行分配才能避免竞争,连接到总线上的单机,其发送控制信号在时间上要完全隔离。
总之,发送和接收控制信号应该足够宽,以保证完整地接收一帧数据,任意两个单机的发送控制信号在时间上完全分开,避免总线争端。
程序流程框图,参见图4。其中:a)为发送流程图;b)为接收流程图。
图4 程序流程图
注:延时T秒的取值
(1) 传送地址帧时,T>2X(1/波特率),可以选取T=2.5X(1/波特率)。
(2) 传送数据帧时,T>1X(1/波特率),可以选取T=1.5X(1/波特率)。
作者简介:尹 红 工程师。主要从事计算机应用和数控产品的研究和开发工作
唐 煜 研究员。主要从事计算机自动化会议系列产品的研究和开发工作
作者单位:中国科学院成都计算机应用研究所 四川。成都(610041)
单片机RS-485多机通讯的实现.pdf
(95.01 KB, 下载次数: 10)
2012-2-14 16:59 上传
点击文件名下载附件
举报
回复
1 个评论
咱_配***
新手上路
发表于 2012-3-9 16:00:06
|
显示全部楼层
很好很强大 不错的文档
举报
回复
支持
反对
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
VK1S38A SSOP24点阵数显LED驱动芯片/数码管
VK1S38A是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3
点阵LED数显屏驱动芯片/数码屏显示IC-VK162
VK1628是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3线
数显屏驱动原厂-VK1668 SOP24抗干扰数显LED
产品品牌:永嘉微电/VINKA 产品型号:VK1668 封装形式:SOP24 概述 VK166
抗干扰LED数码管显示屏驱动芯片/3线串行接
VK1Q68D是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片。内部集成有3线
抗干扰能力强/点阵数显LED屏驱动/数码管驱
VK1S68C是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3 线串
更多
精华推荐
VK1S38A SSOP24点阵数显LED驱动芯片/数码管
点阵LED数显屏驱动芯片/数码屏显示IC-VK162
数显屏驱动原厂-VK1668 SOP24抗干扰数显LED
抗干扰LED数码管显示屏驱动芯片/3线串行接
抗干扰能力强/点阵数显LED屏驱动/数码管驱
可支持14×4的点阵LED显示面板数码管LED驱
数显驱动器原厂-数显LED显示驱动芯片VK1620
抗干扰数显驱动数码管LED驱动芯片VK1618 SO
更多
社区学堂
VK1S38A SSOP24点阵数显LED驱动芯片/数
点阵LED数显屏驱动芯片/数码屏显示IC-V
VK1S38A SSOP24点阵数显LED驱动芯片/数码管
VK1S38A是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3
点阵LED数显屏驱动芯片/数码屏显示IC-VK162
VK1628是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3线
数显屏驱动原厂-VK1668 SOP24抗干扰数显LED
产品品牌:永嘉微电/VINKA 产品型号:VK1668 封装形式:SOP24 概述 VK166
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表