你的位置:首页 > 电子技术 > 通讯网络 > 正文
用MAX3100 UART构成RS-485通信网络
来源:单片机与嵌入式系统应用 作者:天津市(七)77信箱机械所 高亚男 傅隽 徐永根 2006/2/12 0:00:00 人气:250
内容导读:
用MAX3100 UART构成RS\ 485通信网络 天津市(七)77信箱机械所高亚男傅隽徐永根 摘要比较全面地介绍MAX3100作为单片机扩展串行通信接口的用法及特点,并就如何采用MAX3100构成9位RS\ 485通信网络作了详细讨论。 关键词单片机通信网络 前言 随着时间的推移,单片机在工业控制领域的应用越来越广泛、深入,几乎涵盖了工业控制领域的各个方面。作为工业控制的基本单元,通信的功能是十分必要的。而对于51系列的单片机而言,使用内部的串行通信接口必须占用内部定时器作为波特率发生器。这个特点使得在一些与时间、频率有关的测控系统中,通信与系统功能发生了矛盾,因此,扩展通信接口是十分必要的。MAX3100通用异步收发器是一种比较合适的选择。 一、 MAX3100通用异步收发器介绍 MAX3100通用异步收发器是MAXIM公司专门针对小型微处理器系统进行最优化设计的UART,应用SPI/Microwire接口技术与主控制器之间进行通信,线路简单、体积小。它包括1个振荡器和1个可编程的波特率发生器,可以产生300~230kb/s所有的通用波特率;具有4个可屏蔽的中断源;具有适用于多点通信的9位网络工作模式;另外还具有1个8字节的FIFO缓冲器。 1 MAX3100引脚介绍 DIP封装的MAX3100的引脚排列见图1,其引脚功能描述见表1。 2 MAX3100操作 MAX3100通过SPI/Microwire串行接口与单图1MAX3100 DIP 封装引脚图表1MAX3100引脚功能描述 序号〖〗名称〖〗引脚功能描述1〖〗DIN〖〗SPI/Microwire串行数据输入,施密特触发2〖〗DOUT〖〗SPI/Microwire串行数据输出,CS=1为高阻3〖〗SCLK〖〗SPI/Microwire串行时钟输入,施密特触发4〖〗CS〖〗低电平有效,片选输入,施密特触发5〖〗IRQ〖〗低电平有效,中断输出,开漏输出至微处理器6〖〗SHDN〖〗硬件关闭输入。当关闭(SHDN=0)时,振荡器不等待发送结束,立即关闭,并将供电电流减小到漏电流7〖〗GND〖〗地8〖〗X2〖〗晶振连接,外时钟时X2不连9〖〗X1〖〗晶振连接,外时钟时,X1作为外时钟输入端。10〖〗CTS〖〗通过CTS寄存器读,经常用作RS\ 232清除发送输入,低电平有效输入11〖〗RTS〖〗由RTS寄存器控制,用作RS\ 232请求发送或RS\ 485驱动使能,低电平有效输出12〖〗RX〖〗异步串行数据(接收器)输入端13〖〗TX〖〗异步串行数据(发送器)输出端14〖〗VCC〖〗电源引脚(2.7~5.5V)片机之间交换数据。DIN和DOUT引脚的串行数据序列均是16位数据。其中DIN数据序列的前2位表征串的数据类型。单片机通过写命令序列配置MAX3100。该命令序列包括波特率因子、数据字长度、校验FIFO、中断使能等信息。单片机发送和接收数据分别通过写数据序列和读数据序列来完成。 (1) MAX3100的SPI/Microwire串行数据序列格式如表2所列,其中每一位的含义由表 3给出。 表2MAX3100串行数据序列 功能位〖〗写命令〖〗读命令〖〗写数据[]读数据DIN〖〗DOUT[]DIN〖〗DOUT[]DIN〖〗DOUT[]DIN〖〗DOUT15〖〗1〖〗R〖〗0〖〗R〖〗1〖〗R〖〗0〖〗R14〖〗1〖〗T〖〗1〖〗T〖〗0〖〗T〖〗0〖〗T13〖〗FEN〖〗0〖〗0〖〗FEN〖〗0〖〗0〖〗0〖〗012〖〗SHDNI〖〗0〖〗0〖〗SHDNI〖〗0〖〗0〖〗0〖〗011〖〗TM〖〗0〖〗0〖〗TM〖〗0〖〗0〖〗0〖〗010〖〗RM〖〗0〖〗0〖〗RM〖〗TE〖〗RA/FE〖〗0〖〗RA/FE9〖〗PM〖〗0〖〗0〖〗PM〖〗RTS〖〗CTS〖〗0〖〗CTS8〖〗RAM〖〗0〖〗0〖〗RAM〖〗Pt〖〗Pr〖〗0〖〗Pr7〖〗IR〖〗0〖〗0〖〗IR〖〗D7t〖〗D7r〖〗0〖〗D7r6〖〗ST〖〗0〖〗0〖〗ST〖〗D6t〖〗D6r〖〗0〖〗D6r5〖〗PE〖〗0〖〗0〖〗PE〖〗D5t〖〗D5r〖〗0〖〗D5r4〖〗L〖〗0〖〗0〖〗L〖〗D4t〖〗D4r〖〗0〖〗D4r3〖〗B3〖〗0〖〗0〖〗B3〖〗D3t〖〗D3r〖〗0〖〗D3r2〖〗B2〖〗0〖〗0〖〗B2〖〗D2t〖〗D2r〖〗0〖〗D2r1〖〗B1〖〗0〖〗0〖〗B1〖〗D1t〖〗D1r〖〗0〖〗D1r0〖〗B0〖〗0〖〗TEST〖〗B0〖〗D0t〖〗D0r〖〗0〖〗D0r表3MAX3100串行数据序列位描述 位名称〖〗读/写〖〗上电状态〖〗描述B0~B3〖〗W/R〖〗0000〖〗波特率除数选择位CTS〖〗R〖〗没有变化〖〗记录CTS引脚状态。CTS=0即CTS引脚为逻辑1D0t~D7t〖〗W〖〗X〖〗发送缓冲寄存器。8位数据写入。L=1时,D7t忽略D0r~D7r〖〗R〖〗00000000〖〗从接收寄存器或FIFO中读出8位数据。L=1时,D7r总是0FEN〖〗W/R〖〗0〖〗FIFO使能。低电平有效IR〖〗W/R〖〗0〖〗IRDA方式使能。高电平有效L〖〗W/R〖〗0〖〗发送和接收数据长度位。L=0为8位数据;L=1为7位数据Pt〖〗W〖〗X〖〗发送地址位。PE=1时,该位作为需要发送的额外1位;PE=0时,该位忽略,用于9位网络模式Pr〖〗R〖〗X〖〗接收地址位。PE=1时,该位是被接收的附加位,置于Pr寄存器;PE=0时,Pr被置0PE〖〗W/R〖〗0〖〗地址校验使能。高电平有效PM〖〗W/R〖〗0〖〗Pr的屏蔽位,低电平屏蔽。当PM=1且Pr=1时发出中断申请R〖〗R〖〗0〖〗接收寄存器或FIFO非空标志,R=1表示可以读入新数据RM〖〗W/R〖〗0〖〗R的屏蔽位。低电平屏蔽。为RM=1且R=1时,发出中断申请RAM〖〗W/R〖〗0〖〗RA/FE的屏蔽位。低电平屏蔽。当RAM=1且RA/FE=1时,IRQ有中断申请RTS〖〗W〖〗0〖〗控制RTS输出状态,RTS=0即RTS引脚为逻辑1RA/FE〖〗R〖〗0〖〗接收检测/配合错误位。关闭工作方式时,RX引脚的变化将置位RA=1;当准备接收第1位停止位时,收到1个0,将产生1个配合错误。置位FE=1,该错误在唤醒装置时容易发生,并可由下一个正确的数据或写命令予以清除。FE发生时,UART复位至等待起始位状态。SHDNI〖〗W〖〗0〖〗软件关闭位。写入SHDNI=1,可以进入软件关闭,当前数据发送结束,振荡器停止工作。同时将清零R,T,RA/FE,D0r~D7r,D0t~D7t,Pr,Pt和FIFO。通过写入SHDNI=0可以退出关闭状态ST〖〗W/R〖〗0〖〗发送停止位。ST=0,发送1个停止位;ST=1,发送2个停止位SHDNO〖〗R〖〗0〖〗将UART处于关闭时,SHDNO=1T〖〗R〖〗1〖〗发送缓冲器空标志位。T=1表示发送缓冲器空,可以接收另一个需发送的数据TE〖〗W〖〗0〖〗发送使能位。TE=1,CS上升沿只更新RTS引脚;TE=0,RTS、Pt和D0t~D7t都将发送TM〖〗W/R〖〗0〖〗T的屏蔽位,TM=1且T=1时,IRQ发送中断申请(2) MAX3100的波特率 MAX3100具有自己的波特率发生器。其振荡器可以用频率为1.8432MHz或3.6864MHz的晶振。写配置寄存器的波特率除数选择位B0~B3决定波特率。 波特率=晶振频率/(16×波特率除数) 表4给出了不同晶振频率下的波特率。 (3) MAX3100的中断源 MAX3100有4个可屏蔽中断源,分别是Pr,R,RA/FE,T。当任一中断源有请求,并且未被屏蔽,MAX3100将提出中断申请。读数据操作可以清除IRQ。图2给出了中断源和屏蔽位的功能框图。 表4波特率选择表 B3〖〗B2〖〗B1〖〗B0〖〗除数〖〗波特率/kbaud〖〗波特率/kbaud0〖〗0〖〗0〖〗0〖〗1〖〗115.2〖〗230.40〖〗0〖〗0〖〗1〖〗2〖〗57.6〖〗115.20〖〗0〖〗1〖〗0〖〗4〖〗28.8〖〗57.60〖〗0〖〗1〖〗1〖〗8〖〗14.4〖〗28.80〖〗1〖〗0〖〗0〖〗16〖〗7.2〖〗14.40〖〗1〖〗0〖〗1〖〗32〖〗3.6〖〗7.20〖〗1〖〗1〖〗0〖〗64〖〗1.8〖〗3.60〖〗1〖〗1〖〗1〖〗128〖〗0.9〖〗1.81〖〗0〖〗0〖〗0〖〗3〖〗38.4〖〗76.81〖〗0〖〗0〖〗1〖〗6〖〗19.2〖〗38.41〖〗0〖〗1〖〗0〖〗12〖〗9.6〖〗19.21〖〗0〖〗1〖〗1〖〗24〖〗4.8〖〗9.61〖〗1〖〗0〖〗0〖〗48〖〗2.4〖〗4.81〖〗1〖〗0〖〗1〖〗96〖〗1.2〖〗2.41〖〗1〖〗1〖〗0〖〗192〖〗0.6〖〗1.21〖〗1〖〗1〖〗1〖〗384〖〗0.3〖〗0.6图2中断源和屏蔽位功能框图二、 MAX3100与8051之间硬、软件接口 因为8051系列单片机不具有SPI接口,所以与MAX3100之间的通信,需要通过接口线和1个小的软件子程序完成。图3给出了8051与MAX3100之间的硬件接口。 图38051与MAX3100硬件接口示意图UTLK是通过8051引脚模拟SPI接口,接收、发送子程序。该程序将TX1和TX2中的16位数据发送给MAX3100,并将从MAX3100接收到的数据放入RX1和RX2中。 UTLK子程序清单: ;引脚定义 DIN〖〗BIT〖〗P1.0〖〗DOUT〖〗BIT〖〗P1.1〖〗SCLK〖〗BIT〖〗P1.2〖〗CS〖〗BIT〖〗P1.3〖〗IRQ〖〗BIT〖〗P3.2;RAM单元分配 TX1〖〗EQU〖〗10H〖〗TX2〖〗EQU〖〗11H〖〗RX1〖〗EQU〖〗12H〖〗RX2〖〗EQU〖〗13H〖〗UTLK:〖〗CLR〖〗CS〖2〗MOV〖〗A,TX1〖2〗CALL〖〗BYT8〖2〗MOV〖〗RX1,A〖2〗MOV〖〗A,TX2〖2〗CALL〖〗BYT8〖2〗MOV〖〗RX2,A〖2〗SETB〖〗CS〖2〗RET;用SPI时钟输入输出8位子程序 BYT8: BYT8:〖〗MOV〖〗R4,#8〖2〗SETB〖〗DOUT〖1〗B8LP:〖〗RLC〖〗A〖2〗MOV〖〗DIN,C〖2〗SETB〖〗SCLK〖2〗MOV〖〗C,DOUT〖2〗CLR〖〗SCLK〖2〗MOV〖〗ACC0,C〖2〗DJNZ〖〗R4,B8LP〖2〗RET三、 利用MAX3100的9位网络 工作模式构筑RS\ 485通信网络1. RS\ 485通信网络 一般在测控系统中,RS\ 485通信网络的接口示意如图4所示。 图4RS\ 485通信网络结构示意图测控单元检测的数据需通过网络上传到主机(PC机)。主机发布的命令需通过网络下达到特定单元。因此,构筑RS\ 485网络需解决数据碰撞和单元识别信息的问题。数据碰撞可通过特定的通信协议解决;单元识别信息问题通过MAX3100的9位网络工作模式解决。 2 MAX3100的9位网络工作模式 9位网络工作模式,即是在3100接收和发送的8位数据后,加1位表示地址的信息:该位为1,表示这个字节是地址信息;该位为0,表示是数据信息。当配置MAX3100时,打开地址识别中断。当主机发出1个地址信息时,所有单元都锁定接收到的字节,并与本机地址比较:如果单元与地址不符,它将忽略所有的信息,直到主机发出1个新的地址;如果单元与地址相符,单元将继续处理收到的字节。 3 RS\ 485通信网络测控单元通信接口硬件设计 通信接口的RS\ 485收发器,选用的是MAXIM公司生产的MAX3082。作用是完成RS\ 485电平与MAX3100TTL电平之间的转换,MAX3082引脚示意如图5所示。 图5MAX3082引脚排列MAX3082的引脚功能如表5所列。 表5MAX3082引脚功能 接收〖〗发送RE〖〗A-B〖〗RO〖〗DE〖〗DI〖〗B〖〗A0〖〗≥-0.05V〖〗1〖〗1〖〗1〖〗0〖〗10〖〗≤-0.2V〖〗0〖〗1〖〗0〖〗1〖〗01〖〗X〖〗高阻〖〗0〖〗X〖〗高阻〖〗高阻RS\ 485通信接口中MAX3100与MAX3082连接示意如图6所示。单元需要发送数据时,先通过SPI接口,把数据送到MAX3100内。MAX3100经过处理,将数据发送出去。经MAX3082的电平转换,把数据送到RS\ 485数据总线上。网上的数据线经过MAX3082进行电平转换,传递给MAX3100,由MAX3100判断是否需CPU读取数据。MAX3082处于发送还是接收状态,由CPU来决定。为了提高抗干扰能力,在MAX3100、CPU与MAX3082之间增加光电隔离,并且不能同时打开MAX3082的接收允许和发送允许。 图6MAX3100与MAX3082连接示意图4 通信接口的软件设计 软件设计的难点在于对MAX3100中断系统的处理。MAX3100具有4个中断源。当中断产生时,判断中断发生的原因及处理方法是设计中的难点问题。针对不同情况,用中断和查询相结合的方式,可以较好地解决这个问题。 在RS\ 485网络通信中,主机发出的命令信息第1个字节为地址信息,其余字节表示功能和校验信息。软件设计的具体思想是,先将MAX3100配置为打开地址识别中断(PM=1),而将其他中断屏蔽掉(RM=0,TM=0,RAM=0),同时禁止FIFO(FEN=1)。那么,当MAX3100发出中断申请时,就可以断定,接收到1个主机的地址信息。将该字节与本单元地址比较:若不同,则直接返回监听地址信息状态;若相同,则重新配置MAX3100,打开发送及接收中断,(TM=1,RM=1),同时更改查询方式。根据单元处于发送数据状态,对MAX3100采用写数据或读数据操作。依据该思想设计的软件流程如图7所示。 (a)初始化程序流程图(b)通信中断服务流程图 图7CPU+3100+3082通信软件流程图结束语 本文对于MAX3100作为51系列单片机扩展串行口的用法和特点作了比较全面的介绍,并详细阐述了构筑RS\ 485网络时MAX3100的应用方法。MAX3100不仅支持485、RS\ 232通信,还可支持IRDA通信方式及低功耗关闭方式。MES
标签:
商品推荐



相关文章
阅读排行
最近更新
推荐阅读