单片机RS-485多机通讯的实现
单片机RS-485多机通讯的实现
摘要本文介绍一种能利用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芯片有一个发送器和一个接收器,非常适合作为R S-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通讯协议实现PC机与单片机的多点通讯
小 灵 敏 度 可 达 ± 2 0 mV;最 大 传 输 速 率 可 达 0
2 5Mb s 由此 可见 , S 8 . / 。 R 一4 5协议 正是针 对 远距离 、
高灵 敏 度 、多点通 讯制定 的标 准 。
2 用P C机 实现与 8 3 0 1单片机 的 多点 通讯
用83 0 1单片机 实现 与 P C机 之间 的通讯 时 ,必 须 使 用 电平转 换接 口芯片 , 因为单 片机输 出 的是T 电 TI
R0
_ _ — _ —
、
平, 必须 经过 电平 转换 才能 和P C机 的一致 。 文 中采 本
MAX 8 接 口芯 片 是 Ma i 公 司 的 一 种 RS 45 xm 一 4 5芯片 。 8 采 用单 一 电源 +5V 工作 , 额定 电流 为3 0 0 A, 采
用 半 双工通讯 方式 。它 完成将 TT 电平 转 换 为 R 一 I S 4 5电平 的功能 。 引脚结构 图如 图 1所示 。 图 中可 8 其 从 以看 出 ,MA 8 芯 片 的结构 和引脚 都非 常简单 ,内 X4 5 部 含有 一个驱 动器 和接 收器 。R 和 DI 分别 为接 收 O 端 器 的输 出 和驱 动器 的输入 端 ,与单 片机 连接 时只需分 别 与单 片机 的 R D 和 T X XD相连 即可 ;/ RE和 DE端 分 别 为接 收和 发送 的使能 端 ,当/ E为逻 辑 0时 ,器 R
件 处 于接 收状 态 ;当D E为逻 辑 1 , 时 器件 处于发 送状 态 ,因为 MAX 8 工 作 在半 双工 状 态 ,所 以只需 用单 45
足设 计 的要求 ,如 传输速 率慢 ,传输距 离短 ,传 输信 号 易受外 界 的干扰 等缺点 。本文介 绍一 种性 能优 越的 R 一4 5接 口芯 片 ,以及如何 利用此 芯 片实现单 片机 S 8
单片机多机串口的通信
摘要本文详细介绍了基于RS-485总线的单片机与多台单片机间的串行通信原理、实现方法和相应的通信硬件、软件设计。
该设计是由单片机与单片机组成的主从控制系统,其中单片机做为上位机对下位单片机是实现控制和监视功能。
它包括通信和控制两个功能模块。
单片机作为下位机在整个系统中属于从属地位,主要用来接收上位机的命令。
由于此通信的单片接口是RS232的9针接口,且下位机数目有限(32台)。
所以本设计采用了RS485总线以及RS232转RS485的协议芯片以满足长距离多机通信,本文讨论了总线接口转换、主从式通信协议设计方法,给出了采用中断式处理的通信过程流程图,并叙述了设计过程中必备的绘图软件Protel DXP的应用,以及编辑源代码软件keil uVision2的应用,实现了单片机对多个单片机组成采集终端的通信与管理。
关键词:单片机单片机RS-485 通信AbstractThe communication 、realized method and corresponding design of hardware and software between 单片and multiple MCUs based on RS-485 is described in detai in the article. This design instroduces a pincipal and subordinate control system which is composed of 单片and single chip. Divided from its function, it includes two parts: communication and control, in which 单片is used as master, and MCUs is used as slave so as to receive the single order from the master.The bus interface conversion and the design of master-slave communication protocol is introduced and The program flowchart of communication with interrupt process is also given. In the process of design, the use of unnecessary painter software and code editor software is depicted so that realize the communication and administration between 单片and multiple MCUs which composed collection terminal.Keywords: 单片MCUs RS-485 communication目录第一章绪论 (1)第二章课题实施方案 (2)2.1 系统硬件设计 (2)2.2 系统软件设计 (3)第三章硬件电路设计 (9)3.1 C51单片机结构 (9)一CPU结构 (10)二ROM存储器 (11)三I/O端口 (11)四定时器/计数器 (12)五中断系统 (13)3.1.2 51单片机引脚功能及其连接 (13)3.1.3 51 中断系统 (15)3.1.4 C-51的串行通信 (15)3.2.1串行接口RS232结构与引脚功能 (21)3.3 Protel DXP 2004原理图设计 (23)3.3.1 Protel 2004的基本操作 (23)3.3.2绘制原理图 (25)3.3.3制作芯片原理图库 (27)第四章软件电路设计 (30)4.1 系统的通信协议 (31)4.2 C51编程实现单片机与单片机之间的串行通信 (31)4.3 Windows集成开发环境uVision2 (35)4.3.1启动uVision2 (35)4.3.2创建程序 (36)总结 (41)致谢 (42)参考文献 (43)第一章绪论单片机由于其具有控制功能强、设计灵活和性能价格比高的特点。
RS485总线通信系统的设计及实现毕业论文
RS485总线通信系统的设计及实现毕业论⽂本科学⽣毕业论⽂论⽂题⽬:RS485总线通信系统的设计与实现学院:年级:专业:姓名:学号:指导教师:摘要⽆论是⼯业控制还是信号测试领域,实现不同通讯协议的数据融合都有着迫切需要。
但是⽬前市场中存在的协议转换器只能满⾜两种协议之间的转换,如RS485转RS232,USB转RS485等,但是经常存在着多种数据总线并存的情况,因此研制多种总线协议转换的设备有着⽐较⼤的实际意义。
除此之外,⽬前接⼝标准的RS485总线通信协议不统⼀,需设计⼀个⾼效稳定的通信协议。
基于以上原因,本论⽂提出⼀种基于⾼速RS485的多总线通信系统。
整个系统包含多个RS485节点,各个节点包含的通讯接⼝包括RS232,RS485和USB,从⽽实现这三类总线的通讯协议的转换。
设计并实现了⼀种适⽤于微机和单⽚机之间串⾏通信的通信协议,采⽤RS485简便,通信可靠性⾼总线标准,可⽤于⼯业测控和控制现场。
实验结果表明,该通信协议是切实可⾏的,达到了预期的设计要求。
关键词RS485总线;主从式;多机通信;通信协议AbstractWhether in the field of industrial control or signal test, the achievement of data fusion which is based on different communication protocol is urgent needed. However, in the current market, protocol converter can only achieve conversion between two protocols, such as RS485 to RS232, USB to RS485 and so on. Cases of coexistence data bus, it has great practical significance to develop an equipment for protocol conversion among different buses.Based on the reasons above, a high-speed RS485-based multi-bus communication system is presented in this paper. The entire system which is used to realize the three categories of bus communication protocol conversion consists of someRS485 nodes, each node contains the communication interfaces including RS232, RS485 and USB. In the practical application, the number of nodes can be changed as required to formsystem, for achievement of data fusion between a variety of bus communication protocol.Key wordsRS485 bus; Serial Bus; Protocol Conversion; Communication protocol⽬录摘要............................................................................................................................. I Abstract .....................................................................................................................II 第⼀章绪论 (1)1.1 研究背景及意义 (1)1.2 RS485总线通信系统研究现状 (2)第⼆章RS485介绍 (4)2.1 RS485标准 (4)2.2 MAX485芯⽚介绍 (4)2.3 RS485总线组⽹⽅式 (5)2.4 RS485⽅式构成的多机通信原理 (5)第三章系统协议及硬件设计 (7)3.1 RS485通信协议设计 (7)3.1.1 物理层设计 (7)3.1.2 数据链路层设计 (8)3.1.3 应⽤层设计 (8)3.1.4 通信协议 (8)3.2 系统硬件设计 (10)3.2.1 PC与RS485总线的接⼝ (10)3.2.2 RS485⽅式构成的多机通信 (10)3.2.3 单⽚机与PC机串⾏通信系统构成 (11)第四章系统的软件实现 (12)4.1 上下位机的关系 (13)4.2 下位机通信软件的设计 (14)4.3 上位机通信软件的设计 (16)4.3.1 通信协议设计 (16)4.3.2 多机传输 (17)4.3.3 差错控制 (18)4.4 程序设计 (19)第五章系统问题解决措施 (20)5.1 总线隔离 (20)5.2 失效保护 (20)5.3 电磁⼲扰问题 (20)结论 (22)参考⽂献 (23)致 (24)第⼀章绪论所谓通信,不仅仅要实现数据的传输,更应该体现准确性,也称可靠性传输,最好具有⼀定的纠错和检错能⼒。
第26讲 RS-485在单片机多机通信中的应用设计
返回本节
26.3RS-485在单片机多机通信中的应用设计
设计要求: 使用RS-485控制三个个单片机串行通信,要求主机按下不同的按键, 从机相应地进行工作。 系统分析: 使用RS-485控制三个个单片机串行通,需要3个MAX487; 与主机相连的单片机(发送命令),RE 和 DE 引脚接 +5V; 与从机相连的单片机(接收命令),RE 和 DE 引脚接 地。
返回本节
26.2RS-485接口标准简述
在RS-485传输信号前,先分解成正、负两条线路,到达接收端后,再将信 号相减还原成原来的信号。 原信号:(DT)=(D+)-(D-) 线路干扰: (D+)+Noise ,(D-)+Noise 接收合成: (DT)=[(D+)+Noise ] - [(D-)+Noise ] =(D+)-(D-) 最大传输速率:10Mb/s(传送15M) 最大传输距离:1200M(传输速率100Kb/s)
26.1RS-485特点 26.2RS-485接口标准简述 26.3RS-485在单片机多机通信中的应用设计
26.1RS-485特点
与RS-232相比: 抗干扰性能好; 传输距离远:1200M,加中继器传输距离无限.
返回本节
26.1RS-485特点
MAX481/MAX483/MAX485/MAX487-MAX491以及MAX1487: 是用于RS-485与RS-422通信的低功耗收发器,能够以最高 2.5Mbps 的数据速率发送并接收数据; MAX483、MAX487、MAX488以及MAX489:则用于最高 250kbps的数据速率。 MAX488-MAX491是全双工收发器; MAX481、MAX483、MAX485、MAX487以及MAX1487是半双 工收发器。 另外,MAX481、MAX483、MAX485、MAX487、MAX489、 MAX491以及MAX1487中包含驱动器使能(DE)与接收器使能 (RE)控制引脚,被禁用时,驱动器或接收器输出为高阻态。
RS485通讯方式详解
RS485通讯方式详解智能仪表是随着80年代初单片机技术的成熟而发展起来的,现在世界仪表市场基本被智能仪表所垄断。
究其原因就是企业信息化的需要,企业在仪表选型时其中的一个必要条件就是要具有联网通信接口。
最初是数据模拟信号输出简单过程量,后来仪表接口是RS232接口,这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能。
随后出现的RS485解决了这个问题。
下面我们就简单介绍一下RS485。
RS485接口RS485采用差分信号负逻辑,+2V~+6V表示“0”,- 6V~- 2V表示“1”。
RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。
在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。
很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。
而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:(1)共模干扰问题: RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。
但人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。
当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。
(2)EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。
由于PC机默认的只带有RS232接口,有两种方法可以得到PC上位机的(1)通过RS232/RS485转换电路将PC机串口RS232信号转换成RS485 RS485电路:信号,对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。
基于RS485的单片机和变频器通信控制多电机研究
( D e p a r t m e n t o f Me c h a n i c a l a n d E l e c t r i c a l E n g i n e e i r n g , S h u n d e P o l y t e c h n i c ,F o s h a n G u a n g d o n g 5 2 8 3 3 3 , C h i n a )
2 0 1 3年 1 1 月
机 床与液压
MACHI NE TOOL & HYDRAUL Iห้องสมุดไป่ตู้CS
NO V . 2 0 1 3 Vo 1 . 41 No . 2 2
第4 1卷 第 2 2期
DOI :1 0 . 3 9 6 9 / j . i s s n . 1 0 0 1—3 8 8 1 . 2 0 1 3 . 2 2 . 0 4 9
Mu l t i . mo t o r Co mm un i c a t i o n Co nt r o l by SCM a nd I n v e r t e r Ba s e d o n RS 4 8 5
HU J i a n g u o .L UO Yo n g w u
台异步 电机变频调 速控 制系统 ,以 S T C 8 9 C 5 1系列单片机为控制器 ,以松下 V F O C变频器为驱动器 ,设计了控制系统 的硬件
结构 ,分析 了通讯协议 M E WT O C O L . C O M并设置 了变频器 的相关 通讯参数 ,开发 了单 片机 通信控制 程序 ,并应用 于多台风
基于 R S 4 8 5的单 片机和 变 频 器通 信 控制 多 电机研 究
胡建 国,罗勇武
( 顺德 职 业技 术 学院机 电工程 系,广 东佛 山 5 2 8 3 3 3 )
485通信程序(51单片机)
485通信程序(51单片机)什么是485通信?RS-485是一种串行通信协议,它使用差分信号传输数据。
485通信支持了在两个或以上设备之间传输数据的需求,比如用于电子计算机、通信设备、工业自动化等等。
RS-485已广泛应用于数控机床、自动化设备控制等领域中。
单纯的485通信包含四种通信模式:点对点、总线形、多主机和简介式通信。
其中,点对点通信指的是一对一的通信方式;总线形通信指的是一对多的群通信方式,所有设备都在同一条总线上发送和接收数据;多主机通信指的是多台主机的通信方式,多个设备都可以同时发送数据;简介式通信是一种用于仅需要发送少量数据的情况的通信方式。
下面介绍一下485通信的部分基本知识1.485通信的传输距离远,一般可以达到1200米。
2.485通信具有较强的抗干扰能力。
3.485通信使用差分信号进行传输,信号稳定,传输速率也比较快。
4.485通信可以支持多个设备同时进行通信,但是在同一时间内只有一个设备可发送数据。
5.在采用485通信时,一定要注意通讯端口的设置,如波特率、数据位、停止位等。
程序实现原理该程序使用了51单片机作为主控制器实现了基本的485通信,具体实现如下:1.通信模式的设置在程序开始时,需要设置通信模式。
如果通信模式为点对点通信,则可以直接使用UART通信模块进行通信;如果是多点通信,则需要使用485通信芯片。
2.通讯端口的配置在进行485通讯时,需要进行通讯端口的配置,包括波特率、数据位、停止位等参数的设定。
在485通信模式下,只有一个设备可为主设备,其他设备均为被设备。
在发送数据时,主设备的TXD口要与外部总线的D+口相连,而D-口不连接,从设备的TXD口要与D-口相连,而D+口不连接。
在接收数据时,主设备的RXD口要与D+口相连,而D-口不连接,从设备的RXD口要与D-口相连,而D+口不连接。
3.数据的发送和接收在发送和接收数据时,需要采用特定的方式进行报文的封装和解析。
基于RS485总线技术的PC机与单片机多机通讯设计
0 引 言
用P C机 作 为 工 业 自动 控 制 的管 理 上 位 机 , 在 现 代 自动控制 技术 和智 能仪 器仪 表技 术 中应用 越 来 越 广泛 . 而 P 然 C机 串行 口为 标 准 的 R 2 2 S 3 C接 口, R 22 S3 C最 大通信距 离 仅为 1 同时 R 22 5m, S3 C是 点 对点 ( 即只用一 对 收、 发设 备 ) 的通信 , 因此 P C机无 法直 接对 多个下 位 机进行 远 离通讯 和 管理 … . 选 用 R 45串行 接 口标 准 可 以实 现 管 理 微 机 S8 的远距 离对 下位 机 进行 通 讯 管 理 . 文 设 计 了一 种 本 简单实 用 的 R 22与 R 4 5转 换 电 路 , 时约 定 了 S3 S8 同 通讯协 议 , 计 了单 片机 与 P 设 C机通讯 程 序.
维普资讯
第 1 第 2期 7卷
20 0 7年 6月
湖 南 工 程 学 院 学 报 J un lo n n I si t fE gn eig o r a f Hu a n tueo n ie r t n
Vo . 7. . 1 1 No 2
大速 率可 达 1 i . S45允许 平衡 电缆上 连接 0MbCsR 8
3 2个 发 送 器/ 收器 对 , 接 因此 R 4 5适 用 于 多 点 通 S8
平 0 + 2V 时, 电耦合器的发光二极管发光 , ( 1 ) 光 光
敏三极 管导 通 , 出端 为 T L逻辑 电平 0 0V) 此 输 T ( , 时选 中 R 45的 R S8 E端 允 许 R 45发送 . R 45 S8 当 S8 的 R端 的输 出为 逻辑 电平 1时 , 电耦合 器 发 光 二 光 极 管不 发光 , 敏 三极 管 不 导 通 , 光 这样 , R 22输 在 S3
RS485实验指导书
实验一实验板点对点通信【实验目的】1. 建立双机通信的概念2. 掌握单片机串行口通信的编程和调试方法。
3. 掌握异步串行通信的数据格式及数据协议设定。
【实验环境】PC机一台,keil开发环境一套,RS232通信线【实验重点及难点】串行口通信的程序的设计,以及硬件的连接数据通信的协议等。
【实验原理介绍】1.1 程序下载方式介绍1.1.1 RS232与上位机通信下载程序由于要从上位机中下载程序到单片机中,所以需要建立他们之间的通信线路。
本实验采用MAX232芯片,max232是一种把电脑的串行口rs232信号电平(-10 ,+10v)转换为单片机所用到的TTL信号点平(0 ,+5)的芯片,下面介绍一下max232引脚图,看下面的图。
图3.1 max232引脚图本实验中采用11、12、13、14号管脚作输入输出,其中13、14与DB9连接,11、12与单片机连接。
1.1.2 485通信485通信的过程如下:从DB9接收数据,经过max485芯片实现电平转换,然后max485芯片经过高速光耦与单片机通信,将数据送入单片机中进行处理;处理完成后将数据返回至max485,再经DB9输出。
如此就可实现两单片机之间的通信或单片机与上位机间的通信。
下面介绍一下max485芯片接线方法,如下图示:图2 max485接线图其中1、4为输入输出管脚,经光耦与单片机连接,2、3为使能端,6、7为与外部通信接口。
1.2 MCU功能介绍本实验中选择stc12c5a60s2系列单片机,其管脚图如下:图3 tc12c5a60s2单片机管脚图stc12c5a60s2系列单片机是单时钟的单片机,增强型8051内核,速度比普通8051快8~12倍,宽电压:5.5~3.5V,2.2~3.8V,低功耗设计:空闲模式,掉电模式,工作频率:0~35MHz.时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置。
全双工异步串行口,兼容8051的串口。
(7)STM32使用HAL库实现RS485通讯(全双工串口)
(7)STM32使⽤HAL库实现RS485通讯(全双⼯串⼝)⼀、硬件如下图所⽰,485芯⽚链接到单⽚机的USART2上,但是默认的USART2并不是在PD5和PD6上,这⾥是需要重映射的。
另外PG4作为485收发的控制(在485协议中,RE、DE同时为⾼电平那么芯⽚使能发送,如果同时为低电平那么芯⽚使能接收)⼆、软件设计1.软件功能默认485芯⽚是接收功能,每隔1s发送⼀个0x88,如果接收到0x55那么返回0x01,如果接收到的数据不是0x55就返回0x00。
2.CubeMX操作(1)时钟(2)调试注意:这⾥⼀定要选择上,否则会导致Jlink⽆法下载,Cube这⾥默认是不使能的,那么调试引脚就会被配置成普通IO。
(3)usart2(4)重映射(5)配置485芯⽚使能引脚-PG4(6)配置时钟,这个要根据具体的芯⽚与晶振来配置(7)配置串⼝,这⾥默认就⾏(8)配置串⼝中断(9)配置485收发使能引脚PG4默认是接收功能,所以是低电平(10)点击⽣成⼯程3.软件设计(1)根据功能,系统要每⼀秒发送⼀个0x88出去,那么就在main的while(1)循环中填写如下代码:while (1){//将485芯⽚设置为发送模式HAL_GPIO_WritePin(GPIOG, GPIO_PIN_4, GPIO_PIN_SET);TxByte = 0x88;//发送数据HAL_UART_Transmit(&huart2, (uint8_t *)&TxByte, 1, 0xFF);//将485芯⽚设置为接收模式HAL_GPIO_WritePin(GPIOG, GPIO_PIN_4, GPIO_PIN_RESET);HAL_Delay(1000);}(2)如果接收到0x55那么返回0x01,如果接收到的数据不是0x55就返回0x00。
这⾥⽤到中断,写⼀个中断回调函数如下:void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){if (0x55 == RxByte){TxByte = 0x01;HAL_GPIO_WritePin(GPIOG, GPIO_PIN_4, GPIO_PIN_SET);HAL_UART_Transmit(&huart2, (uint8_t *)&TxByte, 1, 0xFF);}else{TxByte = 0x02;HAL_GPIO_WritePin(GPIOG, GPIO_PIN_4, GPIO_PIN_SET);HAL_UART_Transmit(&huart2, (uint8_t *)&TxByte, 1, 0xFF);}HAL_GPIO_WritePin(GPIOG, GPIO_PIN_4, GPIO_PIN_RESET); //重新使能串⼝接收中断HAL_UART_Receive_IT(&huart2, (uint8_t *)&RxByte, 1);}(3)默认是要使能485接收的,那么串⼝接收中断默认应该也是开启的,所以在main函数的while(1)之前添加上下⾯的代码:HAL_UART_Receive_IT(&huart2, (uint8_t *)&RxByte, 1);齐活,下载验证:。
