微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > BQ24261M IIC 无应答。

BQ24261M IIC 无应答。

时间:10-02 整理:3721RD 点击:

官方评估板,7V输入到IN供电,SDA SCL 上拉到3.3V ,单片机为TM4C123G 引脚输出时为开漏输出,输入时为普通输入,IIC写地址为0x6b左移一位的0xD6,读地址为0x6b左移一位或上1的0Xd7,波形图如图:

部分关键代码如下:

uint32_t I2cWrite8bits(unsigned char byte)
{
uint32_t i;
uint32_t ack;
SDA_OUT;
SDA_L;
for(i=0;i<8;i++)
{
if((byte<<i) & 0x80)
{
SDA_H;
}
else
{
SDA_L;
}
LITESOFT_I2C_DELAY_US(2);
SCL_H;
LITESOFT_I2C_DELAY_US(100);
SCL_L;
LITESOFT_I2C_DELAY_US(100);
}
LITESOFT_I2C_DELAY_US(100);
SDA_H;
SDA_IN;
SCL_H;
LITESOFT_I2C_DELAY_US(100);
ack=SDA_READ;
SCL_L;
LITESOFT_I2C_DELAY_US(100);
return ack;
}

unsigned char I2cRead8bits(void)
{
unsigned char temp=0,i;
SDA_IN;
for(i=0;i<8;i++)
{
SCL_H;
LITESOFT_I2C_DELAY_US(100);
temp=temp<<1;
if(SDA_READ)
{
temp|=0x01;
}
SCL_L;
LITESOFT_I2C_DELAY_US(100);
}
SDA_OUT;
SDA_L;
SCL_H;
LITESOFT_I2C_DELAY_US(100);
SCL_L;
SDA_H;
return temp;
}

void BQ2426XWriteData(uint8_t addr,uint8_t data)
{


I2cStart();
I2cWrite8bits(0xd6);
I2cWrite8bits(addr);
I2cWrite8bits(data);
I2cStop();
LITESOFT_I2C_DELAY_US(250);
}


uint16_t BQ2426XReadData(uint8_t addr)
{
uint16_t result;
I2cStart();
I2cWrite8bits(0xd6);
I2cWrite8bits(addr);
I2cStart();
I2cWrite8bits(0xd7);
result= I2cRead8bits();
I2cStop();
LITESOFT_I2C_DELAY_US(250);
return result;
}

比较着急,IIC用以前调MPU6050的硬件IIC也试过,调ADS1115的软件模拟IIC也试过,均无应答。这份是根据TI 官方BQ系列电量计MSP430的程序改的,依旧无法有ACK,数据全部是高,0xff,谢谢大家了。

用我们EVM板的Tools能连接PC么?如果可以的话,可以比较下I2C的波形。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top