标题: IIC器件的地址不知道怎么办,说说自己的经验 [打印本页]

作者: xizhe2005    时间: 2017-9-19 18:22
标题: IIC器件的地址不知道怎么办,说说自己的经验
         我们都知道IIC设备在启动信号以后就可以向IIC设备里写一个字节,然后等待IIC设备把SDA拉低,因此可以根据这一点就可以知道IIC的地址是多少,淘宝上买的好多IIC的东西,告诉你的地址并不准确,比如我就遇到过买的PCF8574,   资料里显示地址是0x27,可是怎么也不对,把A0,A1,A2都接地地址换成0X20还是不对,因此我就想到让单片机来完成找地址的工作。单片机是STC的1T单片机,晶振11M,关键代码是:

               
                        for(i=0;i<0xff;i++)
                        {
                                IICstart();   
                                if(Write1Byte(i)==1)
                                {
                                        _itoa(i,string,16);//把整数转变成字符串的函数
                                        UartPrintf(string);//串口发送字符串
                                }
                               
                        }
itoa函数在下面,我从ZIGBEE的协议栈里拷贝的,很好用
/*********************************************************************
* @fn      _itoa
*
* @brief   convert a 16bit number to ASCII
*
* @param   num -
*          buf -
*          radix -
*
* @return  void
*
*********************************************************************/
void _itoa(uint16 num, uint8 *buf, uint8 radix)
{
  char c,i;
  uint8 *p, rst[5];

  p = rst;
  for ( i=0; i<5; i++,p++ )
  {
    c = num % radix;  // Isolate a digit
    *p = c + (( c < 10 ) ? '0' : '7');  // Convert to Ascii
    num /= radix;
    if ( !num )
      break;
  }

  for ( c=0 ; c<=i; c++ )
    *buf++ = *p--;  // Reverse character order

  *buf = '\0';
}






作者: 无量寿经    时间: 2017-9-19 20:32
地址要简单点,如果你认为资料的协议不对,你还能破协议吗?都应该依芯片手册为准,如果手册不对就找器件厂家解决
作者: 笨笨兔    时间: 2017-9-20 15:57
难道不看技术资料?
搞技术还不知道 IIC 地址,回去卖冰棒好了
作者: xizhe2005    时间: 2017-9-21 11:09
人家告诉你了地址了,可是你怎么也写不进去,你怀疑地址不对,难道就不能用程序找一下地址了,好心把方法分享,却被喷
作者: xizhe2005    时间: 2017-9-21 11:11
找厂家你不觉得不如自己搞定的好,器件的地址本来就可以测试出来
作者: imxuheng    时间: 2017-9-21 14:50
PCF8574也分几种,A0、A1、A2三个管脚悬空时,PCF8574 的器件地址为40h, PCF8574A 的器件地址为70h
作者: hydbw    时间: 2017-9-22 10:25
IIc地址是可以配置的,还是把技术手册看清楚吧
作者: benlyl    时间: 2024-1-10 21:59
IIc地址是可以配置的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1