I2C总线时序模拟(二)-加深理解总线协议
时间:11-22
来源:互联网
点击:
- 示操作成功,否则操作有误。
- 注意:使用前必须已结束总线。
- ********************************************************************/
- bitISendByte(ucharsla,ucharc)
- {
- Start_I2c();/*启动总线*/
- SendByte(sla);/*发送器件地址*/
- if(ack==0)return(0);
- SendByte(c);/*发送数据*/
- if(ack==0)return(0);
- Stop_I2c();/*结束总线*/
- return(1);
- }
- /*******************************************************************
- 向有子地址器件发送多字节数据函数
- 函数原型:bitISendStr(ucharsla,ucharsuba,ucahr*s,ucharno);
- 功能:从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
- 地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。
- 如果返回1表示操作成功,否则操作有误。
- 注意:使用前必须已结束总线。
- ********************************************************************/
- bitISendStr(ucharsla,ucharsuba,uchar*s,ucharno)
- {
- uchari;
- Start_I2c();/*启动总线*/
- SendByte(sla);/*发送器件地址*/
- if(ack==0)return(0);
- SendByte(suba);/*发送器件子地址*/
- if(ack==0)return(0);
- for(i=0;i
- {
- SendByte(*s);/*发送数据*/
- if(ack==0)return(0);
- s++;
- }
- Stop_I2c();/*结束总线*/
- return(1);
- }
- /*******************************************************************
- 向无子地址器件读字节数据函数
- 函数原型:bitIRcvByte(ucharsla,ucahr*c);
- 功能:从启动总线到发送地址,读数据,结束总线的全过程,从器件地
- 址sla,返回值在c.
- 如果返回1表示操作成功,否则操作有误。
- 注意:使用前必须已结束总线。
- ********************************************************************/
- bitIRcvByte(ucharsla,uchar*c)
- {
- Start_I2c();/*启动总线*/
- SendByte(sla+1);/*发送器件地址*/
- if(ack==0)return(0);
- *c=RcvByte();/*读取数据*/
- Ack_I2c(1);/*发送非就答位*/
- Stop_I2c();/*结束总线*/
- return(1);
- }
- /*******************************************************************
- 向有子地址器件读取多字节数据函数
- 函数原型:bitISendStr(ucharsla,ucharsuba,ucahr*s,ucharno);
- 功能:从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件
- 地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。
- 如果返回1表示操作成功,否则操作有误。
- 注意:使用前必须已结束总线。
- ********************************************************************/
- bitIRcvStr(ucharsla,ucharsuba,uchar*s,ucharno)
- {
- uchari;
- Start_I2c();/*启动总线*/
- SendByte(sla);/*发送器件地址*/
- if(ack==0)return(0);
- SendByte(suba);/*发送器件子地址*/
- if(ack==0)return(0);
- Start_I2c();
- SendByte(sla+1);
- if(ack==0)return(0);
- for(i=0;i
- {
- *s=RcvByte();/*发送数据*/
- Ack_I2c(0);/*发送就答位*/
- s++;
- }
- *s=RcvByte();
- Ack_I2c(1);/*发送非应位*/
- Stop_I2c();/*结束总线*/
- return(1);
- }
- /*完毕*/
I2C总线时序模拟总线协 相关文章:
- I2C总线时序模拟(一)-加深理解总线协议(11-22)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)