LTC6804 选择读取电池电压寄存器(A、B、C、D)指令

一、写入选择读取电池电压寄存器(A、B、C、D)指令步骤

1.拉低CSB电平;
2.发送选择读取电池电压寄存器(A、B、C、D)指令,(A:0x00 0x04),(B:0x00,0x06),(C:0x00,0x08),(D:0x00,0x0A);
3.通过PEC计算函数计算PEC校验码并发送;
4.拉高CSB电平.

二、选择读取电池电压寄存器(A、B、C、D)函数

//LTC6804_rdcv_reg:选择读取电池电压寄存器(A、B、C、D)函数
void LTC6804_rdcv_reg(Uint8 reg,Uint8 total_ic,Uint8 data[]){
const Uint8 REG_LEN = 8; //6 datas +2 PEC datas
Uint8 cmd[4]; // 2 8-bit datas + 2 b-bit PEC datas
Uint16 cmd_pec; //PEC校验值
Uint8 i;

if(reg==1){                       //寄存器A
	cmd[0] = 0x00;
	cmd[1] = 0x04;
}else if(reg==2){				  //寄存器B
	cmd[0] = 0x00;
	cmd[1] = 0x06;
}else if(reg==3){                 //寄存器C
	cmd[0] = 0x00;
	cmd[1] = 0x08;
}else if(reg==4){				  //寄存器D
	cmd[0] = 0x00;
	cmd[1] = 0x0A;
}

cmd_pec = pec15_calc(2,cmd);
cmd[2] = (Uint8)(cmd_pec>>8);
cmd[3] = (Uint8)(cmd_pec);

wakeup_idle(total_ic);

LTC6804_CS(total_ic,0);
//将读电池电压指令写入
for(i = 0;i<4;i++){
	SPIA_SendReciveData(cmd[i]);
}
DELAY_US(10);
for(i = 0;i<REG_LEN;i++){
	data[i] = SPIA_SendReciveData(0xFF);
}
LTC6804_CS(total_ic,0);

}

猜你喜欢

转载自www.cnblogs.com/fcy1/p/12929693.html