微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > bq24195设置寄存器问题

bq24195设置寄存器问题

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

我在项目中用到了BQ24195,通过STM32单片机的I2C读写寄存器,现在发现我可以正常的读寄存器的值,但我如果设置寄存器时,设置相关寄存器后读取的话显示是0,过一段时间后显示为默认值,无论CE脚设置是高电平或低电平。

亲;你是如何设置寄存器的?

你好!

我的部分代码如下:

CE_POWER = 0;
delay_ms(2000);

slave_addr = 0x6B;reg_addr = 0x1;data_addr = 0x2b;

i2c_write_sreg(slave_addr,reg_addr,data_addr);
delay_ms(500);

reg_data = i2c_read_sreg(slave_addr, reg_addr) ;printf("0x%02x ",reg_data);
delay_ms(500);


unsigned char i2c_read_sreg(unsigned char slave_addr, unsigned char reg_addr)
{
int i;
unsigned char t;
unsigned char reg_data;
i2c_start(); 
t = (slave_addr << 1) | 0; 
i2c_write_byte(t);
i2c_write_byte(reg_addr);

i2c_start();
t = (slave_addr << 1) | 1; 
i2c_write_byte(t);
//i2c_write_byte(reg_addr);
reg_data = i2c_nread_byte();
i2c_stop();
return reg_data;
}

void i2c_write_sreg (unsigned char slave_addr, unsigned char reg_addr, unsigned char reg_data) 

{
int i;
unsigned char t;
i2c_start(); 
t = (slave_addr << 1) | 0;
i2c_write_byte(t);
i2c_write_byte(reg_addr);
//i2c_write_byte(slave_addr);
i2c_write_byte(reg_data);
i2c_stop();
return;
}

你好!

我的部分代码如下:

CE_POWER = 0;
delay_ms(2000);

slave_addr = 0x6B;reg_addr = 0x1;data_addr = 0x2b;

i2c_write_sreg(slave_addr,reg_addr,data_addr);
delay_ms(500);

reg_data = i2c_read_sreg(slave_addr, reg_addr) ;printf("0x%02x ",reg_data);
delay_ms(500);


unsigned char i2c_read_sreg(unsigned char slave_addr, unsigned char reg_addr) 

int i; 
unsigned char t; 
unsigned char reg_data; 
i2c_start(); 
t = (slave_addr << 1) | 0; 
i2c_write_byte(t); 
i2c_write_byte(reg_addr);

i2c_start();
t = (slave_addr << 1) | 1; 
i2c_write_byte(t); 
//i2c_write_byte(reg_addr);
reg_data = i2c_nread_byte();
i2c_stop();
return reg_data;


void i2c_write_sreg (unsigned char slave_addr, unsigned char reg_addr, unsigned char reg_data) 


int i; 
unsigned char t; 
i2c_start(); 
t = (slave_addr << 1) | 0;
i2c_write_byte(t); 
i2c_write_byte(reg_addr); 
//i2c_write_byte(slave_addr);
i2c_write_byte(reg_data); 
i2c_stop();
return;
}

看你的程序步骤没错啊,现在调通了吗?我也遇到这个问题,读写不了寄存器,能发你的例程我看看吗?274344073@qq.com

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

网站地图

Top