ADBMS1818是一款多通道电池堆监控器,可测量多 达18串电池电压,总测量误差(TME)小于3.0 mV。ADBMS1818具有0V至5V的电池测量范围,适合大多数电池应用。可在290 μs内完成所有18个电池电压测量,并可以选择较低的数据采集速率以实现高降噪抑制。

当电芯数高于18时,可将多个ADBMS1818器件串联,以便同时监测更长 串的高压电池组。每个ADBMS1818都有一个isoSPITM 接口,用于实高速抗干扰局域通信。多个器件以菊 花链形式连接,通过最顶端或底端的器件连接到主 处理器。该菊花链可双向操作,即使通信路径出错,也能确保通信完整性。

ADBMS1818引脚图:

ADBMS1818串联菊花链通信电路可采用容性耦合isoSPI,电路图如下:

同时,ADBMS1818的9个GPIO可以有用来采集电芯温度,S引脚可用来控制被动均衡电路中的MOS管开关。通过软件去配置1818的寄存器进行初始化,再通过发相关指令去读取电芯电压,具体的bsp层驱动可在官网上下载,

下载地址:ADBMS1818 Datasheet and Product Info | Analog Devices.

首先初始化1818的相关寄存器

在官网上下载完成后,在这两个文件夹中的.C\.H都是1818相关的底层驱动,找到配置CFGAR\CFGBR的函数,进行初始化。

#define TOTAL_IC 3 //1818串联个数
static cell_asic BMS_IC[TOTAL_IC];void ADBMS1818_Task_Init(void)
{   ADBMS1818_Reg_Param_Init();Status_Param_Init();ADBMS1818_init_cfg(TOTAL_IC, BMS_IC);ADBMS1818_init_cfgb(TOTAL_IC, BMS_IC);ADBMS1818_set_cfg_reg();ADBMS1818_reset_crc_count(TOTAL_IC, BMS_IC);ADBMS1818_init_reg_limits(TOTAL_IC, BMS_IC);
}

TOTAL_IC就是ADBMS1818串联的个数,用到多少个,修改宏定义即可;BMS_IC是缓存cell数据的结构体,类型为cell_asic,在官网下载的文件中可找到。

初始完寄存器后,通过数据手册的命令,触发1818ADC转换,以及读取电压值。

#define ADBMS1818_CHIP_MAX_CELL_CHANNELS  18
void ADBMS1818_Sample_Task(void)
{
#define TASKE_TIME120MS 80
#define TASKE_TIME10MS  20static T_Sample_Status tADBMS1818Sampling = BIO_TASK_IDLE;static u32 SampleTaskTicker = 0;static u8 TaskTime = TASKE_TIME10MS;E_Bool eState = False;u8 nIc = 0;eState = Ticker_Out(&SampleTaskTicker, (u32)TaskTime);   if(True == eState){Ticker_Out(&SampleTaskTicker, 0);switch (tADBMS1818Sampling){case BIO_TASK_IDLE: //初始化寄存器ADBMS1818_Wakeup_Sleep(TOTAL_IC);Confirm_Ref_On();Check_Reg_Data(0xFFu);tADBMS1818Sampling = BIO_BAT_MEAS_CMD;   break;  case BIO_BAT_MEAS_CMD:  //发生ADC转换命令ADBMS1818_Wakeup_Sleep(TOTAL_IC);ADBMS1818_adcv(ADC_CONVERSION_MODE, ADC_DCP, CELL_CH_TO_CONVERT);tADBMS1818Sampling = BIO_BAT_WAIT;break;case BIO_BAT_WAIT:    tADBMS1818Sampling = BIO_BAT_RD;break;case BIO_BAT_RD://读取电压ADBMS1818_Wakeup_Sleep(TOTAL_IC);ADBMS1818_rdcv(SEL_ALL_REG, TOTAL_IC, BMS_IC);tADBMS1818Sampling = BIO_TASK_IDLE;    for (nIc = 0; nIc < TOTAL_IC; nIc++){memcpy(&tAdbms1818InfoBuf[nIc].BattVolt[0],                               &BMS_IC[nIc].cells.c_codes[0],sizeof(u16)*ADBMS1818_CHIP_MAX_CELL_CHANNELS);}    break;     }
}

在发生指令前,必须发生唤醒信号ADBMS1818_Wakeup_Sleep(TOTAL_IC),如果不发,菊花链通信将会失败。

每个步骤延时时间根据你选择的采样频率,低于1Khz,每个步骤必须有80ms的延时,大于等于1KHZ,20ms即可,如果延时不够,ADC转换未完成,读取的电压值将会出错。BMS_IC.cells.c_codes就是电压采样值,一个电压值占2个字节。

ADBMS1818菊花链通信相关推荐

  1. ad5764的spi菊花链通信

    有一个模拟板子上有4个dac芯片,2颗ad5762和2颗ad5764,最终使用了mcu的硬件spi做菊花链通信. 可以看到mcu的spi sdo进入到u29 ad5762的sdin后,u29 ad57 ...

  2. 1196_菊花链通信概念与基础

    全部学习汇总: GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case ...

  3. BMS的菊花链技术和AFE

    文章目录 菊花链在BMS中的位置 菊花链拓扑 菊花链通信 AFE(Analog Front End) AFE均衡电路 菊花链应用示例 MC33665A MC33665A SPI通信 MC33775A ...

  4. BMS菊花链技术探讨

    国内新能源汽车补贴不断下降,新能源相关企业的利润也跟着在减少,但这种利润的下降应该算是回归正常,一个行业不可能永远靠着补贴生存.在这个市场上竞争的企业马上进入完全的市场竞争,没有补贴,意味着一切成本需 ...

  5. STM32+LTC6804/LTC6811采集电压温度电流/BMS储能采集板

    有LTC6804.LTC6811版本,可选SPI\菊花链通信) BMS闲置开发板 凌力尔特LTC6804/6811开发板BMS电池管理评估板,采集板,BMS开发板 12串送源码+BOM+原理图+源码解 ...

  6. ad5764的回读,硬件spi接口

    之前写过了mcu通过硬件spi接口向dac芯片ad5764的数据寄存器写值输出电压,ad5764的offset与gain寄存器的值也是可以通过硬件spi读出来的. 第一步:将待读取的芯片设置为读模式 ...

  7. 动力电池管理系统(BMS)

    BMS技术 目录 BMS技术 一.BMS简介 二.BMS主要功能 1.参数检测 2.剩余电量(SOC)估计 3.充放电控制 4.热管理 5.均衡控制 6.故障诊断 7.信息监控 8.参数标定 9.CA ...

  8. 全新BMS开发板 /凌力尔特LTC6804/6811开发板BMS电池管理评估板/储能BMS采集板

    12串电池TTL上位机 CAN通信上位机源码有偿开源,供项目二次开发. 采集板带电源隔离/SPI隔离通信方案 功能:SPI/菊花链通信 1.电压采集功能(精度1mv以内,高精度四位半万用表测试结果) ...

  9. ADI官方解释在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线(MISO/SDI)上的数据)

    串行外设接口(SPI)是微控制器和外围IC(如传感器.ADC.DAC.移位寄存器.SRAM等)之间使用最广泛的接口之一.本文先简要说明SPI接口,然后介绍ADI公司支持SPI的模拟开关与多路转换器,以 ...

最新文章

  1. mysql timestamp 更新_[mysql] timestamp自动更新和初始化
  2. input[type=checkbox] ; input[type=radio] 改变默认样式
  3. 数据分析不落地?典型案例教会你!
  4. Codeforces 988E. Divisibility by 25
  5. UML--实现图(组件图、配置图)
  6. python定时器毫秒_Python实现定时精度可调节的定时器
  7. Node.js连接mysql报加密方式错误解决方案
  8. 对python几个常见的小函数进行学习使用
  9. Socket编程例子
  10. Internet Download Manager has been registered withafake Serial Number
  11. 教你如何进行苹果屏幕解锁
  12. 可视化讲解:什么是棒球游戏问题?
  13. java微信新增永久素材_微信公众号开发之新增永久图文素材(十)
  14. 程序员的三行代码情书
  15. 白平衡算法---色温曲线
  16. 使用虚拟机备份软件备份Microsoft Hyper-V 虚拟机
  17. 室内VR全景怎么拍?全景拍摄需要什么设备?
  18. b-k-d树 原理 图文解析
  19. Python期末复习题:流程控制
  20. 浅谈标签传播算法:LPA

热门文章

  1. [Java]用面向对象的知识来做一个简易版植物大战僵尸
  2. 麒麟系统下安装mysql_Ubuntu麒麟下安装MySQL+Django+Python(一)
  3. 示波器中符号的意思是什么
  4. HPU数学基础训练level1
  5. python3安装mysql模块_python3操作MySQL的模块pymysql
  6. 神七飞天与我的一段往事
  7. RabbitMQ运行机制
  8. 管道(pipe)原理。
  9. 文件系统与共享资源管理
  10. JS 实现全景图预览