This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ25713B:I2C 读取 BQ25713 ADC 寄存器值不正确

Guru**** 2393725 points
Other Parts Discussed in Thread: BQ25713, BQ25713B

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/864672/bq25713b-i2c-read-bq25713-adc-register-values-are-not-correct

器件型号:BQ25713B
主题中讨论的其他器件:BQ25713

您好!

当我回读 BQ25713 ADC 寄存器值不正确时、所有寄存器(VBAT、VSYS、ICHG、IDCHG、IIN、 PSYS、VBUS、CMPIN)值不正确。

2节锂离子电池;适配器输入电压:5V3A;  

寄存器设置值:

充电选项0 170E
充电电流寄存器0400
充电电压寄存器20D0
最低系统电压1900
PROCHOT 状态寄存器4000
充电选项1 9201
充电选项2 417F
充电选项3 0010
PROCHOT 选项0 4C37
PROCHOT 选项1 8001
ADC 选项 E07F

其他寄存器默认设置;

这会在设置后读回值

测量输入电压=5V;测量输入电流 =1920mA;

测量电池电压=8.3V;

代码:

void set_bq25713_main_reg (void)

uint8_t device_ID;
//读取 ID
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (DeviceID_ADDR);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
DEVICE_ID = I2C_READ_NACK ();
if ((device_ID =IC_BQ25713B)||(device_ID =IC_BQ25713))

rt_kprintf ("\r\n 与 bq25713"的通信成功);

其他

rt_kprintf ("\r\n 与 bq25713"的通信失败);

//ChargeOption0
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption0_LSB);
I2C_WRITE (0x0E);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption0_MSB);
I2C_WRITE (0x17);
I2C_STOP();
Board_func_delayU (50000);

//ChargeOpion1.
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption1_LSB);
I2C_WRITE (0x01);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption1_MSB);
I2C_WRITE (0x92);
I2C_STOP();
Board_func_delayU (50000);
//ChargeOpion2.
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption2_LSB);
I2C_WRITE (0x7F);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption2_MSB);
I2C_WRITE (0x41);
I2C_STOP();
Board_func_delayU (50000);
//ChargeOpion3.
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption3_LSB);
I2C_WRITE (0x10);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption3_MSB);
I2C_WRITE (0x00);
I2C_STOP();
Board_func_delayU (50000);

//ProchotOption0
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption0_LSB);
I2C_WRITE (0x37);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption0_MSB);
I2C_WRITE (0x4C);
I2C_STOP();
Board_func_delayU (50000);
//ProchotOption1.
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption1_LSB);
I2C_WRITE (0x01);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption1_MSB);
I2C_WRITE (0x80);
I2C_STOP();
Board_func_delayU (50000);

//ChargerStatus
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargerStatus_LSB);
I2C_WRITE (0x00);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargerStatus_MSB);
I2C_WRITE (0x00);
I2C_STOP();
Board_func_delayU (50000);
//ProchotStatus
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotStatus_LSB);
I2C_WRITE (0x00);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotStatus_MSB);
I2C_WRITE (0x40);
I2C_STOP();
Board_func_delayU (50000);
// MinSystemVoltage
// I2C_start (slave_address<<1、I2C_DIRECTION 发送器);
// I2C_write (MinSystemVoltage_LSB);
// I2C_WRITE (0x00);
// I2C_stop ();
// board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (MinSystemVoltage_MSB);
I2C_WRITE (0x19);
I2C_STOP();
Board_func_delayU (50000);

//ChargeCurrent
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeCurrent_LSB);
I2C_WRITE (0x00);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeCurrent_MSB);
I2C_WRITE (0x04);
I2C_STOP();
Board_func_delayU (50000);

//ADCOption
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCOption_LSB);
I2C_WRITE (0x7F);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCOption_MSB);
I2C_WRITE (0xA0);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCOption_LSB);
I2C_WRITE (0x7F);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCOption_MSB);
I2C_WRITE (0xE0);
I2C_STOP();
Board_func_delayU (50000);

void read_bq25713_main_reg (void)

// uint8_t device_ID;
uint8_t CHARGE_opt0_H、CHARGE_OPT1_H、CHARGE_OPt2_H、CHARGE_OPt3_H;
uint8_t CHARGE_opt0_L、CHARGE_OPT1_L、CHARGE_opt2_L、CHARGE_opt3_L;
uint8_t PROCHOT_opt0_H、PROCHOT_opt0_L;
uint8_t PROCHOT_OPT1_H、PROCHOT_OPT1_L;
uint8_t CHARGE_CURRENT_H、CHARGE_CURRENT_L;
uint8_t max_charge volt_H、max_charge volt_L;
uint8_t min_sys_volt;
uint8_t in_current;
uint8_t temp_LSB、temp_MSB;

//¶ÁCharge 选项0 ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption0_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_opt0_L = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption0_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_opt0_H = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nChargeOption0 = 0x%X"、(uint16_t)(CHARGE_opt0_H)<<8 | CHARGE_opt0_L);
//¶ÁCharge 选项1 ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption1_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_OPT1_L = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption1_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_OPT1_H = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nChargeOption1 = 0x%X"、(uint16_t)(CHARGE_OPT1_H)<<8 | CHARGE_OPT1_L);
//¶ÁCharge 选项2 ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption2_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_opt2_L = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption2_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_opt2_H = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nChargeOption2 = 0x%X"、(uint16_t)(CHARGE_opt2_H)<<8 | CHARGE_opt2_L);
//¶ÁCharge 选项3 ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption3_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_opt3_L = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargeOption3_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_opt3_H = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nChargeOption3 = 0x%X"、(uint16_t)(CHARGE_opt3_H)<<8 | CHARGE_opt3_L);
//¶ÁMax 充电电压¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (MaxChargeVoltage_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
MAX_CHARGE_VOLT_L = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (MaxChargeVoltage_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
MAX_CHARGE_VOLT_H = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nMaxChargeVoltage =%DMV"、(uint16_t)(max_charge_volt_H)<<8 | max_charge_volt_L);
//¶ÁProchot 选项0 ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption0_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
PROCHOT_opt0_L = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption0_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
PROCHOT_opt0_H = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nProchotOption0 = 0x%X"、(uint16_t)(PROCHOT_opt0_H)<<8 | PROCHOT_opt0_L);
//¶ÁProchot 选项1 ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption1_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
PROCHOT_OPT1_L = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotOption1_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
PROCHOT_OPT1_H = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nProchotOption1 = 0x%X"、(uint16_t)(PROCHOT_OPT1_H)<<8 | PROCHOT_OPT1_L);
//¶Á ADCOption ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCOption_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCOption_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nADCOption = 0x%X"、(uint16_t)(temp_msb)<<8 | temp_LSB);
//¶Á ChargerStatus ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargerStatus_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ChargerStatus_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nChargerStatus = 0x%X"、(uint16_t)(temp_msb)<<8 | temp_LSB);
//¶Á ProchotStatus ¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotStatus_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ProchotStatus_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nProchotStatus = 0x%X"、(uint16_t)(temp_msb)<<8 | temp_LSB);
//¶Á IN_DPM (使用中的输入电流限制)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (IN_DPM_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (IN_DPM_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nIN_DPM =%DMA"、(uint16_t)(temp_msb)*50);
//¶Á InputVoltage (输入电压)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (InputVoltage_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (InputVoltage_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nInputVoltage =%DMV"、(((uint16_t)(temp_msb)<<8)| temp_LSB));
//¶Á MinSystemVoltage (最小系统电压)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (MinSystemVoltage_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (MinSystemVoltage_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nMinSystemVoltage =%DMV"、(uint16_t)(temp_MSB<8)| temp_LSB);
//¶Á IIN_HOST (主机设置的输入电流限制)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (IIN_HOST_LSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (IIN_HOST_MSB);
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nIIN_host =%DMA"、(uint16_t)(temp_msb)*50);

//读取 ADC 顺序:VBAT、VSYS、ICHG、IDCHG、IIN、 PSYS、VBUS、CMPIN。
//¶Á ADCVSYSVBAT (系统电压和电池电压)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCVSYSVBAT_LSB);//VBAT
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCVSYSVBAT_MSB);//VSYS
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nADCVSYSVBAT =%DMV、%DMV"、(uint16_t)(temp_msb)<<6、(uint16_t)(temp_LSB)<<6);
//¶Á ADCIBAT (充电电流)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCIBAT_MSB);// ICHG
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_CURRENT_H = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCIBAT_LSB);//IDCHG
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
CHARGE_CURRENT_L = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nADCIBAT = ichg:%dma、idchg:%dma"、(uint16_t)(charge_current_H)<<6、(uint16_t)(charge_current_L)<<8);
//¶Á ADCIINCMPIN (输入电流和 cmpin 电压)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCIINCMPIN_MSB);//IIN
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nADCIIN =%DMA"、(uint16_t) temp_LSB*50);
//¶Á ADCVBUS_PSYS (输入电压和系统功率)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCVBUS PSYS_LSB);//PSYS
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCVBUS PSYS_MSB);//VBUS
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_MSB = I2C_READ_NACK ();
Board_func_delayU (50000);
rt_kprintf ("\r\nADCVBUS_PSYS =%DMV_%DMV"、(uint16_t)(temp_MSB)<<6、(uint16_t)(temp_LSB)*12);
//¶Á ADC CMPIN (cmpin 电压)¼Ä´æÆ÷
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 发送器);
I2C_WRITE (ADCIINCMPIN_LSB);//CMPIN
I2C_STOP();
Board_func_delayU (50000);
I2C_START (SLAVE_ADDRESS<<1、I2C_DIRECTION 接收器);
TEMP_LSB = I2C_READ_NACK ();
rt_kprintf ("\r\nADC CMPIN =%DMV"、(uint16_t) temp_LSB*12);

rt_kprintf ("\r\n");

所以、我不知道 问题是什么!

可以帮帮我吗? 谢谢!

E-MEIL:527419127@qq.com

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    您好!

    您能否为每个 ADC 通道提供十六进制值输出。  

    我将注意到、您尚未将失调电压添加到输入电压读数中。 输入电压的最小值为3.2V。

    确保已考虑每个 ADC 通道的适当偏移。

    此致、

    Joel H

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好。

      当输入电压低于5V 或接近5V 时、我们建议将 ADC 满量程更改为2.04V、如下所示。 请尝试一下、看看是否有任何改进。  

      您还可以尝试增大适配器电压以查看此问题是否消失。

    谢谢。

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢!

    也许你是对的,我没有添加偏移,我会再试一次!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢!

    我尝试了这两种方法、但结果是相同的。

    可能是我应该将偏移电压添加到 ADC 寄存器的结果中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    除 ADCIIN 值外、所有 ADC 寄存器读回值均正确;

    您知道问题是什么吗? 原因?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、我解决了 ADCIIN 值不正确、这是我的代码错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好。

    我很高兴您能够解决您的问题。 如果您对设备有任何疑问、请随时发布新主题。

    此致、

    Joel H