修改了驱动部分注释 提升了代码的易读性
This commit is contained in:
parent
8a32570868
commit
d5a4f2a778
@ -5,7 +5,7 @@
|
|||||||
* @brief Voice Recognition Module Initialization Section,
|
* @brief Voice Recognition Module Initialization Section,
|
||||||
including peripheral initialization and message node insertion, etc.
|
including peripheral initialization and message node insertion, etc.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @changelog version 1.0 初始版本 2025.12.31
|
* @changelog version 1.0 初始版本 2026.1.6
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
@ -54,9 +54,17 @@
|
|||||||
EleC_V_data elec_v_data;
|
EleC_V_data elec_v_data;
|
||||||
|
|
||||||
|
|
||||||
// 向对应寄存器写入数据 低位在低位 高位在高位
|
#if COULOMBMETER_SET_FUNC_ENABLE
|
||||||
// 共24bit,不足处用0补齐,低位先行
|
/**
|
||||||
// 发送数据大小限定为3个字节
|
* @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)
|
static void coulombmeter_write_reg(uint8_t addr, uint8_t* reg_data)
|
||||||
{
|
{
|
||||||
uint8_t check_sum = 0;
|
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);
|
check_sum = ~(check_sum & 0xFF);
|
||||||
COULOMBMETER_UART_TRANS_BYTE(check_sum);
|
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)
|
static void coulombmeter_read_reg(uint8_t addr)
|
||||||
{
|
{
|
||||||
// 1. Ï·¢ÃüÁî×Ö½Ú BL0942_ADDR_R
|
// 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)
|
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)
|
void User_Coulombmeter_Data_refresh(void)
|
||||||
{
|
{
|
||||||
static Bus_Mod mod = MOD_CURRENT_METER;
|
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)
|
void UART5_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -237,20 +282,12 @@ void UART5_IRQHandler(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FL_UART_ClearFlag_RXBuffFull(COULOMBMETER_USED_UART_NUM);
|
FL_UART_ClearFlag_RXBuffFull(COULOMBMETER_USED_UART_NUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT YUWELL *****END OF FILE****/
|
/************************ (C) COPYRIGHT YUWELL *****END OF FILE****/
|
||||||
|
|||||||
@ -52,6 +52,8 @@ extern "C" {
|
|||||||
#define COULOMBMETER_UART_TRANS_BYTE(x) FL_UART_WriteTXBuff(COULOMBMETER_USED_UART_NUM, x);CHECK_TRANS_DONE;
|
#define COULOMBMETER_UART_TRANS_BYTE(x) FL_UART_WriteTXBuff(COULOMBMETER_USED_UART_NUM, x);CHECK_TRANS_DONE;
|
||||||
|
|
||||||
|
|
||||||
|
#define COULOMBMETER_SET_FUNC_ENABLE (0)
|
||||||
|
|
||||||
|
|
||||||
/************************** 芯片内部寄存器地址定义 **************************/
|
/************************** 芯片内部寄存器地址定义 **************************/
|
||||||
// 电参数寄存器(只读)
|
// 电参数寄存器(只读)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user