可以控制总线。其中当SCL线为高电平且SDA线由高变低时为开始条件;而当SCL线为高电平且SDA线由低变高时为结束条件。如图3所示 
开始位: void I2CSTA ( ) { // I2C 开始位 Set_SDADirOut ( );//定义SDA为输出 switch ( FrameCount ) { case (1): // 第2帧 Set_SCLHi ( ); Set_SDALo( ); break; case (2): // 第三帧 Set_SCLLo ( ); Set_SDALo( ); break; default: // 第一帧 Set_SCLHi ( ); Set_SDAHi ( ); } FrameCount += 1; // 帧计数 if ( FrameCount > 2 ) { FrameCount = 0; BitIndex = 0x0080; } // 定义的低8位 } 停止位的编程方法只需要按照上面所说的将SCL线为高电平且SDA线由低变高即可。 3.2.3 I2C总线的数据格式
起始位 受控器件地址 读写控制位0/1 应答位 数据 应答位 … 停止位 I2C总线数据传输格式[3]如图4。其中第一部分为数据传输起始信号,即由此开始进行数据传送;第二部分为受控器地址,用来选择向哪个受控器传送数据;第三部分为读/写控制位,用于指示受控器的工作方式,0表示写,1表示读;第四部分是被主控器选中的受控器向主控器回传的确认信号;第五部分是所传送的数据,每传送一个字节数据,都要求有一个应答位;第六部分是数据传输的结束信号。每个具有I2C总线接口的受控器件都有唯一固定的地址,当主控器发送数据时,I2C总线上挂接的受控器件都会将主控器发出的、位于起始信号后的8位地址信息与自己的地址进行比较,如果两者相同,则认为该受控器件被选中,然后按照读/写位规定的工作方式接收或发送数据。可以应用上面的程序来按照I2C总线的数据格式进行数据传送。 4 结论 应用DSP的McBSP来设计I2C总线接口,硬件接口简单,调试方便,并且可以节省硬件的花费,此方法已经应用在基于DSP的图像匹配机中,方法可行,并运行可靠。
|