微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > I2C总线在多机通信中的应用

I2C总线在多机通信中的应用

时间:01-17 来源:21IC中国电子网 点击:

首先发送开始(start)信号,然后传送第一个字节:高7位是从机地址,低位表示读/写(R/W)状态,"0"表示写操作,"1"表示读操作。由于CPU之间采用无主通信或主从通信,一般只采用主发送和从接收模式,因此该位均值0表示数据发送;总线上的每个物理器件判断接收的地址与本机地址是否一致,地址一致,返回ACK,进行正常的数据传送。每个地址或数据后必须跟应答信号,当一个正常的应答信号有效时,SCL时钟为高电平,接收模块数据线SDA置低,同时按字节传送数据,传送结束由发送端发送stop信号或下一个start信号。

从机地址由各CPU按统一原则进行分析,主机各子系统可按各自的系统号从01H开始编排,00H作为通用呼叫地址;调度台80C652地址取01H,P87LPC764地址范围为40H~7FH,其它地址待扩充。

处理器之间采用固定8字节数据通信:DATA0、DATA1、DATA2、DATA3、DATA4、DATA5、DATA6、DATA7。

DATA0:目的地址,发送时可根据该地址确定从机地址;

DATA1:源地址;

DATA2:消息编码,可按需分配;

DATA3~DATA7:该消息应携带的其它必要信息。

以调度台为例,80C652向P86LPC764发送LED灯显示数据:目址、源址、55H(消息编码),键地址、左灯状态、右灯状态、#0EEH、#0EEH。

目址:即P87LPC764地址、40H~7FH;

源址:即80C652地址,01H;

键地址:每片P86LPC764所处理的按键地址,00H~3FH(64键);

灯状态:即让对应灯处于灭、常亮、闪烁等状态值。

图5

3 通信软件设计

主机和调度台80C652单片机上电时首先装载本机从地址和通用地址,设置I2C总线为高中断。由中断处理程序自动接收数据存入数据缓冲区并查询是否有数据发送,若有,进行相应发送信息,按要求进行相关处理,并查询是否有数据需发送,若有填入发送缓冲区,设置待发送S1CON标志,由中断处理程序发送。流程如图5所示。

键板I2C总线软件处理过程为:键板P87LPC764初始化,装载本机从地址,设置定时器I为高中断,PIC总线普通中断。主程序中进行I2CU总线数据发送检查,进行重发处理;接收数据处理;待发送数据处理及设置主站待发。定时器I负责监视I2C总线,计时溢出复位I2C接口硬件。I2C中断处理程序完成数据的接收和发送工作。流程如图6所示。

图6

本设计采用I2C总线实现调度指挥系统中多模块间的双向通信,电路设计简单,易于模块化及扩展。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top