Есть задача - сделаю батарею на 40 вольт литиевую
естественно что всякие балансиры защиты и т.д.
решил взять 10 ячеек 2.2 амперчаса 3,0...4,2 вольта и вот эту микруху
плату сделал запаял...непропаев нету, залипух нету - прозванивал всё
подключаю по даташиту...хз что ей надо НО
на ногах VOUT IOUT нуль железный что бы я ни писал с МК в неё(хотя данные оттуда читаются именно те которые нужны...) + никак не могется записать в еепром эти самые данные...
меня впринципе всё устраивает и в дефолтной конфиге - разве что хотелось бы видеть на ноге Vout напругу всего аккума /50 - биты выставил а там всёравно земля! ну как земля...килоом на землю...+-
и бит VGOOD который ставится автоматом когда напряжение больше или равно необходимому для работы еепром - никогда не взводился....помаргивал на 100 мс и снова тух...
код которым я с ней общаюсь - компилер CVAVR, софтовая реализация i2c ихней либой на 5 килогерцах
Код: Выделить всё
void bqWriteReg(unsigned char addr, unsigned char Dat)
{
i2c_start();
// запишем в порт адрес б кю и намерение писать
i2c_write(0b00100000);
// пишем адрес регистра
i2c_write(addr);
// пишем данные регистра
i2c_write(Dat);
i2c_stop();
}
unsigned char bqReadReg(unsigned char addr)
{
unsigned char tmp;
i2c_start();
// запишем в порт адрес б кю и намерение писать
i2c_write(0b00100000);
// пишем адрес регистра
i2c_write(addr);
i2c_stop();
i2c_start();
// запишем в порт адрес б кю и намерение писать
i2c_write(0b00100001);
// читаем данные
tmp = i2c_read(0);
i2c_stop();
return tmp;
}
Код: Выделить всё
bqWriteReg(0x0b, 0x62);
delay_ms(50);
bqWriteReg(0x07, 0b00001111);
delay_ms(50);
bqWriteReg(0x08, 0b10000000);
delay_ms(50);
bqWriteReg(0x09, 0b10100100);
delay_ms(50);
bqWriteReg(0x0a, 0b00010000);
delay_ms(50);
bqWriteReg(0x03, 0b00010011);
delay_ms(50);
bqWriteReg(0x0b, 0x62);
delay_ms(500);
EEP=1;
delay_ms(500);
bqWriteReg(0x0b, 0x00);
EEP=0;
delay_ms(500);
bqWriteReg(0x0b, 0x62);
прикладываю плату и схему в протеусе


