积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库
  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式硬件 >> ARM
  相关分类: ARM | 新产品 | 下载 | MIPS | X86 |
ARM7串口9位方式多机通信的编程技术
 
作者:空军工程大学 胡奕明   来源:21IC    点击数:7437   更新时间:2009-9-24
您可以添加到网摘 让更多人关注此文章:

    

1 主从式多机通信
   
所谓主从式多机系统,即在数个ARM(或单片机)中,有一个是主机,其余的为从机。从机要服从主机的调度、支配,其拓扑结构如图1所示。


    主机信息可以发到各个从机,从机发送的信息只能被主机接收,从机之间不进行通信。
    51单片机串口不同寻常的特征是包括第9位方式(在串口模式2和模式3下)。它允许把在串行口通信增加的第9位用于标志特殊字节的接收。一般约定第9位为高时表示该字节为地址字节,第9位为低时为数据字节。第9位方式允许接收单片机信息,仅当字节具有一个第9位时才能被中断。用这种方式,主机首先广播1字节,并让其第9位为高,同时收到该字节的各个从机,只有地址相符的打开,以接收后面的数据字节。所接续的数据字节(第9位为低)不能引起其他从机中断,因为未送它们的地址。
    51单片机用9位方式多机通信时,串口模式必须在方式2或方式3。
    其实现多机通信的原理和工作过程如下:作主机的8051的SM2应设定为O,作从机的sM2设定为1。主机发送并被从机接收的信息有两类:一类是地址,用于指示需要和主机通信的从机地址,由串行数据第9位为“1”来标志;另一类是数据,由串行数据第9位为“0”来标志。由于所有从机的SM2=1,故每个从机总能在R1=O收到主机发来的地址(因为串行数据的第9位为“l”),并进入各自的中断服务程序。在中断服务程序中,每台从机把接收到的从机地址和它的本机地址(系统设计时所分配)进行比较。所有比较不相等的从机均从各自的中断服务程序中退出(SM2仍为1),只有比较成功的从机才足被主机寻址通信的从机。被寻址的从机在程序中使SM2=0,以便接收随之而来的数据或命令(RB8=0)。上述过程进一步归结如下:
    ①主机的SM2为O,所有从机的SM2=1,以便接收主机发来的地址。
    ②主机给从机发送地址时,第9数据位应设置l,以指示从机接收这个地址。
    ③所有从机在SM2=1、RB8=1和RI=O时,接收主机发来的从机地址,进入相应中断服务程序,并与本机地址相比较,以便确认是否为被寻址从机。
    ④被寻址从机通过指令清除SM2,以便正常接收数据,并向主机发回接收到的从机地址,供主机核对。未被寻址的从机保持SM2=1,并退出各自中断服务程序。
    ⑤完成主机和被寻址之间的数据通信,被寻址从机在通信完成后重新使SM2=l,并退出中断服务程序,等待下次通信。
    从以上8051实现9位方式多机通信的过程可见,关键问题在于:
    ①发送端(主机)如何发送第9位,并且可编程设置1或O;
    ②接收端(从机)如何接收到这第9位,并判断出是l还是0。
    以上问题,8051串口可通过控制寄存器SCON中的TB8、RB8和SM2位的设置和读取轻松解决,但在ARM中并没有与805l类似功能的寄存器。那么ARM7多机系统怎样实现如上9位方式多机通信呢?下面通过分析ARM串口(以UART0为例)的内部结构和相关寄存器,给出一个有效的解决方案。


2 ARM7串口UART0内部结构
    使用ARM7串口UARTO之前须设置5个寄存器,即中断使能寄存器UOIER、UARTO格式控制寄存器UOLCR、FIFO控制寄存器UOFCR和波特率设置寄存器UODLM和UODLL。发送过程是:CPU内核通过VPB接口对UARTO的寄存器进行读写访问,数据首先进入发送缓存UOTHR,经发送移位寄存器UOTSR逐位移出,经TxDO引脚输出。接收过程是:数据经RxDO,先进入接收移位寄存器UORSR,经接收缓存U0RBR,通过VPB与CPU内核相连。特别注意的是,通信过程中ARM7串口中的中断标志寄存器U0IIR和UART0状态寄存器UOLSR的各位将随着通信收发而自动受到影响,也就是说这两个寄存器记录了数据通信过程的状态信息,这些信息很有用。
    UOIIR寄存器的描述如表1所列。



    UOIIR提供状态代码,用于指示一个挂起中断的中断源和优先级。在访问UOIIR的过程中,中断被冻结。如果在访问UOIIR时产生了中断,该中断将被记录,在下次访问UOIIR时可以读出,避免了中断的丢失。
    UOLSR寄存器描述如下:



    RDR:接收数据就绪。判断该位是否置1,决定能否从FIF0中读取数据。
    0——UORBR为空。
    l——UORBR中包含有效数据。从接收FIFO中读走所有数据后,恢复为O。
    0E:溢出错误标志。当U0RBR寄存器中已经有新的字符就绪,而接收FIF0已满时,该位置位。
    0——接收缓存区没有溢出。
    1——接收缓存区发生溢出错误。
    PE:奇偶校验错误。在使能奇偶校验位之后,对所有接收的数据都进行奇偶校验,如果与UOLCR中的设置不符,将引起奇偶校验错误。
    O——没有发生奇偶校验错误。
    1——发生奇偶校验错误。读操作使该位恢复为O。
    FE:帧错误标志。当接收字符的停止位为O时,产生帧错误。
    O——没有发生帧错误。
    1——发生帧错误。读取该位时恢复为O。
    BI:间隔中断标志。在发送数据时,如果RXDO引脚保持低电平,将产生间隔中断。发生间隔中断后,接收模块停止数据接收。
    O——没有发生间隔中断。
    1——发生间隔中断。
    THRE:反映UOTHR是否为空,也可以认为发送FIFO是否为空。
    O——不为空。
    1——空。对UOTHR进行写操作,使该位恢复为O。
    TEMT:当发送移位寄存器和UOTHR均为空时,该位置位。
    0——不为空。
    1——空。对UOTHR进行写操作,使该位恢复为0。
    RXFE:如果一个带有接收错误(如帧错误、奇偶错误或间隔中断)的字符装入UORBR时,该位置位。
    O——UORBR中没有接收错误,或UOFCR[O]为0。
    1——UORBR中包含至少一个UARTO Rx错误。
    另外,还有两个很重要的寄存器:一个是前面提到的格式控制寄存器UOLCR,另一个是FIFO控制寄存器UOFCR。
    UOLCR寄存器的描述如下:

[1] [2]  下一页



相关文章
· 大联大携手展讯打造新一代2.5G手机平台解决方案[651]
· ADI最新推出高集成度精密模拟微控制器ADuC7023和ADuC7...[1057]
· 选择ARM Cortex-M3 还是 ARM7 ?[1135]
· 基于ARM7和VC平台的高分辨率红外触摸屏设计[953]
· 基于ARM7的远程机器人控制系统的研制[1488]
热门评论排行
·ARM嵌入式系统基础教程(N
·DSP从入门到精通全集
·手把手学单片机20个例
·8051单片机C语言彻底应用
·2010年ARM 

文章评论
· 会员 maxyellow 于2011-10-12 11:19:00发表评论:评分:5分
    私家侦探 找私家侦探 车主查询 户籍查询 车牌号码查询车主 户籍信息查询 怎么用车牌号码查车主 查询户口信息 全国户籍查询 深圳seo 深圳网站优化 深圳网站建设 荔枝批发 龙眼批发 黄皮批发 车载dvd 车载导航 DVD导航 冷链物流 深圳冷链物流 深圳市德信昌实业有限公司 骏丰难燃板 深圳难燃板 红外监控摄像头 United Medical Imaging 脚轮批发 脚轮生产厂家 音乐制作 录音配音