网站公告:
诚信为本,市场在变,诚信永远不变...
全国服务热线:400-123-4657
客户案例CASE
当前位置: 首页 > 客户案例
ARM7串口9位方式多机通信的编程技术【澳门威尼克斯人网站(MACAU)】
添加时间:2024-11-09 15:13:01
本文摘要:1主从式多机通信  所谓主从式多机系统,即在数个ARM(或单片机)中,有一个是主机,其余的为从机。

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为事例)的内部结构和涉及寄存器,得出一个有效地的解决方案。  2ARM7串口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中读取数据。  0UORBR为空。  lUORBR中包括有效地数据。

从接管FIFO中读书回头所有数据后,完全恢复为O。  0E:阻塞错误标志。当U0RBR寄存器中早已有新的字符准备就绪,而接管FIF0已剩时,该方位位。  0接管内存区没阻塞。

  1接管内存区再次发生阻塞错误。  PE:奇偶校验错误。

在使能奇偶校验位之后,对所有接管的数据都展开奇偶校验,如果与UOLCR中的设置相符,将引发奇偶校验错误。  0没再次发生奇偶校验错误。

  1再次发生奇偶校验错误。读书操作者使该位完全恢复为O。

  FE:帧错误标志。当接管字符的暂停位为O时,产生帧错误。  0没再次发生帧错误。  1再次发生帧错误。

加载该位时完全恢复为O。  BI:间隔中断标志。在发送数据时,如果RXDO插槽维持低电平,将产生间隔中断。

再次发生间隔中断后,接管模块暂停数据接管。  0没再次发生间隔中断。  1再次发生间隔中断。

  THRE:体现UOTHR否为空,也可以指出发送到FIFO否为空。  0不为空。  1空。

对UOTHR展开写出操作者,使该位完全恢复为O。  TEMT:当发送到移位寄存器和UOTHR皆为机时,该方位位。  0不为空。  1空。

对UOTHR展开写出操作者,使该位完全恢复为0。  RXFE:如果一个具有接管错误(如帧错误、奇偶错误或间隔中断)的字符取出UORBR时,该方位位。  0UORBR中没接管错误,或UOFCR[O]为0。

  1UORBR中包括最少一个UARTORx错误。


本文关键词:澳门威尼克斯人网站(MACAU),澳门威尼克斯人网站正式版,澳门最新网站游戏

本文来源:澳门威尼克斯人网站(MACAU)-www.didongsi.com