diff --git a/8F-3AW-PowerMeter/power_meter.c b/8F-3AW-PowerMeter/power_meter.c index de03048..d1090eb 100644 --- a/8F-3AW-PowerMeter/power_meter.c +++ b/8F-3AW-PowerMeter/power_meter.c @@ -5,7 +5,7 @@ * @brief Voice Recognition Module Initialization Section, including peripheral initialization and message node insertion, etc. * @version 1.0 - * @changelog version 1.0 初始版本 2025.12.31 + * @changelog version 1.0 初始版本 2026.1.6 ****************************************************************************** * @attention * @@ -54,9 +54,17 @@ EleC_V_data elec_v_data; -// 向对应寄存器写入数据 低位在低位 高位在高位 -// 共24bit,不足处用0补齐,低位先行 -// 发送数据大小限定为3个字节 +#if COULOMBMETER_SET_FUNC_ENABLE +/** + * @brief 向BL0942指定寄存器写入24位数据 + * @param addr: 寄存器地址(8位) + * @param reg_data: 待写入的数据缓冲区指针,需传入3个字节,低位在前、高位在后 + * @retval 无 + * @note 1. 数据格式:共24bit,不足位补0,低位先行发送 + * 2. 通信协议:UART发送帧格式为[写命令(BL0942_ADDR_W)+寄存器地址+3字节数据+校验和] + * 3. 校验和计算:(写命令+地址+3字节数据)的低8位取反 + * 4. 数据发送大小限定为3个字节,超出部分无效 + */ static void coulombmeter_write_reg(uint8_t addr, uint8_t* reg_data) { uint8_t check_sum = 0; @@ -77,12 +85,19 @@ static void coulombmeter_write_reg(uint8_t addr, uint8_t* reg_data) check_sum = ~(check_sum & 0xFF); COULOMBMETER_UART_TRANS_BYTE(check_sum); } +#endif -// 从特定寄存器读取数据 芯片将通过串口接收中断返回 -// 芯片收到消息后将在150us内返回数据 -// 1s执行一次 数据在接收中断中处理 + +/** + * @brief 从BL0942指定寄存器读取数据 + * @param addr: 寄存器地址(8位) + * @retval 无 + * @note 1. 通信协议:UART发送帧格式为[读命令(BL0942_ADDR_R)+寄存器地址] + * 2. 芯片收到读命令后,会在150us内通过UART返回4字节数据(3字节有效数据+1字节校验) + * 3. 建议1s执行一次该函数,返回数据在UART接收中断中处理 + */ static void coulombmeter_read_reg(uint8_t addr) { // 1. 下发命令字节 BL0942_ADDR_R @@ -94,6 +109,17 @@ static void coulombmeter_read_reg(uint8_t addr) + + +/** + * @brief 初始化库仑计(UART5)相关硬件 + * @param 无 + * @retval 无 + * @note 1. 初始化内容:UART TX/RX引脚、UART通信参数、接收中断 + * 2. UART参数:9600波特率、8位数据位、1位停止位、无校验、全双工 + * 3. 中断配置:UART5接收缓冲区满中断,优先级设为2 + * 4. 初始化后清空全局数据结构体elec_v_data + */ void User_PowerMeter_Init(void) { @@ -137,7 +163,16 @@ void User_PowerMeter_Init(void) -// 推荐1s刷新一次 最终数据将存储在全局变量elec_v_data中 + +/** + * @brief 刷新库仑计的电压/电流数据(轮询读取) + * @param 无 + * @retval 无 + * @note 1. 推荐1s调用一次该函数,交替读取电压和电流有效值 + * 2. 首次调用读取电流寄存器(Addr_I_RMS),第二次读取电压寄存器(Addr_V_RMS),循环交替 + * 3. 触发读取后,会设置对应的等待状态,数据接收和解析在UART中断中完成 + * 4. 最终解析后的电压/电流值存储在全局变量elec_v_data中 + */ void User_Coulombmeter_Data_refresh(void) { static Bus_Mod mod = MOD_CURRENT_METER; @@ -165,6 +200,16 @@ void User_Coulombmeter_Data_refresh(void) +/** + * @brief UART5中断服务函数(库仑计数据接收处理) + * @param 无 + * @retval 无 + * @note 1. 仅处理接收缓冲区满中断(RXBuffFull) + * 2. 根据当前通信状态(BUS_COM_STATE)分别处理电压/电流数据 + * 3. 数据接收格式:3字节有效数据(低位在前)+1字节校验和 + * 4. 校验和验证通过后,转换为实际电压(V)/电流(mA)值并更新全局变量 + * 5. 接收中断标志通过读取RXBuff寄存器自动清除,需手动清除RXBuffFull标志 + */ void UART5_IRQHandler(void) { @@ -236,21 +281,13 @@ void UART5_IRQHandler(void) } } - - + } FL_UART_ClearFlag_RXBuffFull(COULOMBMETER_USED_UART_NUM); } - - } - - - - - /************************ (C) COPYRIGHT YUWELL *****END OF FILE****/ diff --git a/8F-3AW-PowerMeter/power_meter.h b/8F-3AW-PowerMeter/power_meter.h index fe5ac7d..6a05b86 100644 --- a/8F-3AW-PowerMeter/power_meter.h +++ b/8F-3AW-PowerMeter/power_meter.h @@ -51,6 +51,8 @@ extern "C" { #define CHECK_TRANS_DONE while(FL_UART_IsActiveFlag_TXShiftBuffEmpty(COULOMBMETER_USED_UART_NUM) != FL_SET){}; #define COULOMBMETER_UART_TRANS_BYTE(x) FL_UART_WriteTXBuff(COULOMBMETER_USED_UART_NUM, x);CHECK_TRANS_DONE; + +#define COULOMBMETER_SET_FUNC_ENABLE (0) /************************** 芯片内部寄存器地址定义 **************************/ diff --git a/MDK-ARM/LG048-8F-10W.uvguix.Admin b/MDK-ARM/LG048-8F-10W.uvguix.Admin index 52f4f5d..102bfa1 100644 --- a/MDK-ARM/LG048-8F-10W.uvguix.Admin +++ b/MDK-ARM/LG048-8F-10W.uvguix.Admin @@ -110,8 +110,8 @@ 0 - 251 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000037443A5C797577656C6C5F776F726B73706163655C36392DD0C2B5E7C1BFBCC6D0BEC6AC5CB2E2CAD4B4FAC2EB5C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004401000066000000000A000077040000 + 465 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000003000000010000000100000037443A5C797577656C6C5F776F726B73706163655C36392DD0C2B5E7C1BFBCC6D0BEC6AC5CB2E2CAD4B4FAC2EB5C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF4C443A5C797577656C6C5F776F726B73706163655C36392DD0C2B5E7C1BFBCC6D0BEC6AC5CB2E2CAD4B4FAC2EB5C38462D3341572D506F7765724D657465725C706F7765725F6D657465722E63000000000D706F7765725F6D657465722E6300000000FFDC7800FFFFFFFF4C443A5C797577656C6C5F776F726B73706163655C36392DD0C2B5E7C1BFBCC6D0BEC6AC5CB2E2CAD4B4FAC2EB5C38462D3341572D506F7765724D657465725C706F7765725F6D657465722E68000000000D706F7765725F6D657465722E6800000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004401000066000000000A000077040000 @@ -1806,7 +1806,7 @@ File 2946 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000016557365725F436F756C6F6D626D657465725F496E69749600000000000000130016557365725F436F756C6F6D626D657465725F496E69740C434F554C4F4D424D4554455218454E41424C455F505245434953455F4932435F44454C415931566F696365205265636F676E6974696F6E204D6F64756C6520496E697469616C697A6174696F6E2053656374696F6E2C20027538094F325F53454E534F5208CBA2D0C2CFD4CABE196F78675F73746174655F696E666F726D6174696F6E5F6D7578043138303001380F4556454E545F3436345F434C45415207656C617073656404436F6D38125F5F37465F354B5F444953505F4150495F48166A685F73637265656E5F726566726573685F7461736B0E37665F356B5F646973705F617069155F5F37465F35465F444953505F4452495645525F48125F5F37465F35465F444953505F4150495F481137665F35665F646973705F64726976657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000016557365725F436F756C6F6D626D657465725F496E69749600000000000000130016557365725F436F756C6F6D626D657465725F496E69740C434F554C4F4D424D4554455218454E41424C455F505245434953455F4932435F44454C415931566F696365205265636F676E6974696F6E204D6F64756C6520496E697469616C697A6174696F6E2053656374696F6E2C20027538094F325F53454E534F5208CBA2D0C2CFD4CABE196F78675F73746174655F696E666F726D6174696F6E5F6D7578043138303001380F4556454E545F3436345F434C45415207656C617073656404436F6D38125F5F37465F354B5F444953505F4150495F48166A685F73637265656E5F726566726573685F7461736B0E37665F356B5F646973705F617069155F5F37465F35465F444953505F4452495645525F48125F5F37465F35465F444953505F4150495F481137665F35665F646973705F64726976657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1822,7 +1822,7 @@ Build 984 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000C436F756C6F6D626D65746572960000000000000001000C436F756C6F6D626D65746572000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000C436F756C6F6D626D65746572960000000000000001000C436F756C6F6D626D65746572000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -3603,12 +3603,30 @@ 0 100 - 0 + 1 ..\Src\main.c - 3 - 29 - 46 + 0 + 48 + 64 + 1 + + 0 + + + ..\8F-3AW-PowerMeter\power_meter.c + 5 + 203 + 219 + 1 + + 0 + + + ..\8F-3AW-PowerMeter\power_meter.h + 36 + 12 + 55 1 0