一、写入选择读取电池电压寄存器(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);
}