按平台模式设计的虚拟I2C总线软件包VIIC
(2) 数据传送操作虚拟即模拟I2C数据传送过程。例如,应答位检查(CACK)、发送1个字节数据(WRBYT)、接收1个字节数据(RDBYT)。
(3) 外围器件读写操作虚拟。要求虚拟1个I2C总线读写操作过程(RDNBYT、WRNBYT)。
4.VIIC1.0的结构设计
(1) VIIC1.0的组成。 根据归一化设计,主方式下虚拟I2C总线由下列9个子程序组成: · 时序模拟子程序STAR,STOP,MACK,MNACK; · 操作模拟子程序CACK,WRBYT,RDBYT; · 数据读写子程序RDNBYT,WRNBYT。 由于篇幅所限,本文中省略了VIIC1.0软件包中这9个子程序的虚拟设计方法。需要详细了解的读者可参看文尾参考资料2中7.3节“I2C总线的串行扩展技术”的有关部分。
(2) 软件包的出口界面 软件包VIIC实现非介入性操作,出口界面是软件包应用时惟一的触及面。VIIC1.0中的出口界面为数据读写子程序 RDNBYT/WRNBYT。
(3) 软件包的符号单元 VIIC中的符号标记有发送数据缓冲区MTD、接收数据缓冲区MRD、传送字节数存放单元NUMBYT以及寻址字节SLAW/SLAR存放单元SLA。这些符号单元都采用了标准I2C总线状态处理软件包中规定的字符标记。
5.应用界面设计
VIIC1.0软件包规定了读写子程序RDNBYT/WRNBYT的惟一出口界面,因此RDNBYT/WRNBYT的调用操作命令,以及满足调用操作的初始化操作的三条命令为VIIC的应用界面,即:
MOV SLA,#SLAR/SLAW ;总线上节点寻址并确定传送方向
MOV NUMBYT,#N ;确定传送字节数N
LCALL RDNBYT/WRNBYT ;读/写操作调用
三、VIIC1.0软件包清单
VIIC1.0软件包清单如下。
①STAR:SETB VSDA;启动I2C总线
SETB VSCL
NOP
NOP
CLR VSDA
NOP
NOP
CLR VSCL
RET
②STOP: CLR VSDA ;停止I2C总线数据传送
SETB VSCL
NOP
NOP
SETB VSDA
NOP
NOP
CLR VSDA
CLR VSCL
RET
③MACK: CLR VSDA ;发送应答位
SETB VSCL
NOP
NOP
《按平台模式设计的虚拟I2C总线软件包VIIC(第2页)》