在上次项目中用到了LTC6804这块片子,初次使用它的采集精度确实令我惊讶到了,设备用于监测2V的铅酸电池组,硬件上几乎没有加任何滤波,直接读取数据就能达到3mv以下的精度,片子真的很好用。
下面总结一下自己的使用心得。
------------------------------------------------------------------------------------------------
LTC6804是一款专门用来做多节电池电池组的监测芯片,最高可监测12节电池,官方误差是低于1.2mv,12 个通道的最快采样速度可以达到290us。
芯片分为两种型号,6804-1和6804-2,区别在于,6804-1采用级联的形式(级联控制),6804-2采用并联形式(分开控制)。
除开硬件连接之外,这两种型号的操作都是大同小异,基本可以视为一样,本文以6804-1为例进行讲解。
原理图和手册中的推荐一样,就不贴出来了,MCU与芯片的通信方式采用四线SPI,这种通信方式很常见,各种MCU的驱动也好找。(看了数据手册,芯片似乎还支持IIC和2线通信,不过我没有用)
驱动代码可以从官网下载:https://www.analog.com/cn/products/ltc6804-1.html
下载下来的代码是C++文件,不能直接在STM32上使用,需要进行一些修改。
首先修改后缀名,改成C文件,然后打开LTC6804.c文件。
第一步进行驱动的移植:
void spi_write_array(uint8_t len, // Option: Number of bytes to be written on the SPI port uint8_t data[] //Array of bytes to be written on the SPI port ) { uint8_t i; for(i = 0; i < len; i++) { SPI2_Send_byte((int8_t)data[i]); } }
void spi_write_read(uint8_t tx_Data[],//array of data to be written on SPI port