保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

模拟I2C总线多主通信的通用软件包


Δt为一个时间片的长度,典型值为4个机器周期。按优先级顺序给MCU分配不同个数的时间片。仲裁时序如图2所示:假设MCU(A)优先级最高,它不必进行时间片测试,在检测到总线空闲时直接发送起始位;MCU(B)优先级为次高,在检测到总线空闲后,它需要等待检测一个时间片周期Δt,在Δt期间内SDA线上没有变化,即等待确

认比它高优先级的MCU(A)不使用总线后,MCU(B)才能占用总线,发送起始信号;MCU(C)优先级最低,它需要测试等待周期2Δt,只有当MCU(A)、MCU(B)都不占用总线时(SDA一直保持为1),MCU(C)才能占用总线发送起始信号。

在实际应用中,还要注意BUSY线所用的中断脚INT0/INT1需初始化为开中断,并设定为下跳沿触发。当各MCU需控制总线进行主发送或主接收时,需先关掉INT0/INT1需初始化为开中断,并设定为下跳沿触发。当各MCU要控制总线进行主发送或主接收时,需先关掉INT0/INT1中断,再检测BUSY线是否为空闲(=1)。若是空闲就将BUSY设为0,进行竞争仲裁,流程图如图3所示。如果在仲裁时间片内SDA始终为1,说明没有高优先级的MCU要占据总线,自己可以发动起始信号控制总线,直到通信结束后,再释放BUSY线将其置为1。此时其它的MCU就只能作为从器件。如果在仲裁时间片内检测到SDA=0,则表明I2C总线已被占用,立刻将自己的BUSY设为1,并打开中断转为从接收,其流程图如图4所示。在中断程序中接收寻址字节,以判明是否呼叫自己。若是,就进行相应的读写操作;若不是,就放弃退出中断程序。注意:为了使总线上的MCU都能检测到I2C上的起始信号,并使从器件能够同步接收,SDA=0的时间要维持一定的宽度,至少应大于9个机器周期。

结语

经实验证明:三线模拟I2C总线解决了多主竞争问题,可方便的应用于多主机系统中,提高了系统的灵活性,也进一步扩大了软件模拟I2C的应用范围,在实际应用中具有一定的使用价值。通用软件包及测试程序请看网站(http://fanwen.oyaya.net收集整理)网络补充版。

《模拟I2C总线多主通信的通用软件包(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/150538.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。