专栏名称: 面包板社区
面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
目录
相关文章推荐
新疆949交通广播  ·  导航界“笑果”要来了?你用上了吗? ·  昨天  
直播贵阳栏目  ·  今晚!贵州音乐作品将亮相央视元宵晚会 ·  昨天  
新疆949交通广播  ·  时间定了!油价又要变! ·  昨天  
新疆发展改革委  ·  看新疆发展,重点看投资!钱从哪里来投到哪里去? ·  2 天前  
新疆发展改革委  ·  看新疆发展,重点看投资!钱从哪里来投到哪里去? ·  2 天前  
新疆949交通广播  ·  女子得了流感 硬扛3天变“白肺”! ·  2 天前  
51好读  ›  专栏  ›  面包板社区

电池BMS数据上报模块设计

面包板社区  · 公众号  ·  · 2024-05-05 20:00

正文

本文来自面包板社区《灵动 Mini-F5333开发板》免费测评活动。
目录:
硬件连接
实现效果
软件部分逻辑
调试效果
硬件连接效果
硬件上使用jlink连接板子,用于烧写程序,typec口连接供电以及使用主板自带的ch340转串口,用于通讯数据


实现效果
电池数据显示效果,主要用于单片机将诊断电池或者搜集bms电池电压 温度 均衡等信息上报给上位机

软件部分逻辑
电池数据信息结构体ST_BAT_INFO st_BatInfo;此数据中用于存放电池电量信息 电流 以及各个电芯的电压温度等系列数据

串口中断收发数据逻辑,通过中断方式,一帧接收13个字节数据存放到buffer中,进一步校验数据的checksum以确保数据的有效性

通过解析请求数据后,根据对应id重新组包,携带电池数据信息,再通过串口发送给电脑,这样上位机收到数据就显示到对应位置


checksum检测函数如下,用于校验数据的一包有效性
uint8_t api_check_cmd_data() { uint8_t checksum = 0x00; uint8_t i = 0; USART_RxTx_TypeDef* p_recvdata = &USART_RxStruct; if ((p_recvdata->Buffer[0] == UsartCmdBuff.Head) && (p_recvdata->Buffer[1] == UsartCmdBuff.addr)) { for(i = 0; i < 12; i ++) { checksum += p_recvdata->Buffer; checksum = 0xFF & checksum; } if (p_recvdata->Buffer[12] == checksum) { UsartCmdBuff.id = p_recvdata->Buffer[2]; UsartCmdBuff.Length = p_recvdata->Buffer[3]; for(i = 0; i < 8; i ++) { UsartCmdBuff.pdata = p_recvdata->Buffer[i+4]; } UsartCmdBuff.checksum = p_recvdata->Buffer[12]; return Ret_Ok; } else { printf("\r\n checksum fail !"); return Ret_Fail; } } printf("\r\n head check fail !"






请到「今天看啥」查看全文