多处理器通信格式允许一个处理器在同一串行线上与其他的处理器进行有效的数据块传输。在一个串行线上,在同一时刻只允许存在一个发送器。即在任一时刻,在同一串行线上只允许有一个发送者(Talker)存在。
地址字节:发送者发送的信息块的第一个字节包括所有接收者可以读到的一个地址字节。只有地址正确的接收者才可以被地址字节之后的数据字节产生中断。地址不正确的接收者则保持不中断状态直到下一个地址字节。
SLEEP位:串行线上的所有处理器都将SCISLEEP位(SCICTL1寄存器的位2)设为1,这样它们就可以仅仅在检测到地址字节时才会产生中断。当处理器读到的块地址与应用程序设置的CPU器件地址相同时,用户程序必须清除SLEEP位,使SCI模块在接收每个数据字节时都能产生中断。
虽然SLEEP位置1时接收器会继续工作,但是,除了检测到地址字节和接收帧中的地址位置为1(用于地址位模式)的情况外,SCI模块不会将RXRDY、RXINT或者接收错误状态位置为1。SCI模块不会改变SLEEP位,所以它只能由用户程序更改。
处理器对地址字节的确认会根据多处理器模式选择的不同而改变。例如:
●空闲线模式在地址位前留下一个适当的空间。这种模式没有额外的地址/数据位,所以当需处理的容量大于10个字节时,它的效率要比地址位模式高。空闲线模式应该用于典型的非多处理器SCI通信。
●为了辨别数据和地址,地址位模式在每个字节中增加了一个额外位(地址位)。与空闲线模式不同,由于地址线模式在数据块之间没有等待状态,所以它在处理多个小数据块时的效率比空闲线模式高。然而,在高传输速度下,由于程序的速度限制,不可避免地会在数据流中产生10位空闲状态。(www.daowen.com)
可以通过ADDR/IDLE MODE位(SCICCR寄存器的位3)来选择多处理器模式。两种模式都使用TXWAKE标志位(SCICTL1寄存器的位3)、RXWAKE标志位(SCIRXST寄存器的位1)和SLEEP标志位(SCICTL1寄存器的位2)来控制SCI发送器和接收器。
两种多处理器模式的接收顺序如下:
1)接收一个地址块时,SCI端口唤醒并且申请中断(此时必须将SCICTL2寄存器的RX/BKINTENA位置1,使能中断)。然后,它将读取该块的第一帧,这个帧包含有目标地址。
2)执行中断服务程序,测试输入地址,将这个地址字节与存在存储器中的器件地址字节相比较。
3)如果测试结果表示该块地址与存储的器件地址相同,则清除SLEEP位,并且读取该块余下的内容。反之,则保持SLEEP位为1,退出程序,并且不接受中断直到下一个地址块开始。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。