移动嵌入ARM7串口9位方式编程技术
1 主从式多机通信
本文引用地址:http://www.amcfsurvey.com/article/150590.htm 所谓主从式多机系统,即在数个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为例)的内部结构和相关寄存器,给出一个有效的解决方案。
评论