与张工重新核对了一遍mqtt上传的数据--第一版
This commit is contained in:
parent
0efd486cbe
commit
7a7bd6e768
|
@ -7,6 +7,10 @@
|
|||
#include "gpio_manager.h"
|
||||
#include "stm32f4xx.h"
|
||||
|
||||
//#define TX_DMA_BUFFER_SIZE 800
|
||||
|
||||
extern uint8_t dma_tx_buffer[];
|
||||
|
||||
const GpioArray io_array[kGpioType_End] =
|
||||
{
|
||||
/*12个DI*/
|
||||
|
@ -93,37 +97,38 @@ const GpioArray io_array[kGpioType_End] =
|
|||
kGpioMode_Input_Floating, kGpioStatus_High, GPIO_PORT_PIN(kGpioPort_G, 15), kGpioPort_G, kGpioPin_15 , //W5500_INT
|
||||
};
|
||||
|
||||
//void drv_wireless_dma_init(void)
|
||||
//{
|
||||
// // 使能 DMA1 和 USART2 的时钟
|
||||
// RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN;
|
||||
// RCC->APB1ENR |= RCC_APB1ENR_USART2EN;
|
||||
void drv_wireless_dma_init(void)
|
||||
{
|
||||
// 使能 DMA1 和 USART2 的时钟
|
||||
RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN;
|
||||
RCC->APB1ENR |= RCC_APB1ENR_USART2EN;
|
||||
|
||||
// // 配置 USART2 基本参数
|
||||
// USART2->CR1 &= ~USART_CR1_UE; // 先禁用USART
|
||||
// USART2->BRR = SystemCoreClock / 115200; // 设置波特率
|
||||
// USART2->CR1 = USART_CR1_TE | USART_CR1_UE;
|
||||
// 配置 USART2 基本参数
|
||||
USART2->CR1 &= ~USART_CR1_UE; // 先禁用USART
|
||||
USART2->BRR = SystemCoreClock / 115200; // 设置波特率
|
||||
USART2->CR1 = USART_CR1_TE | USART_CR1_UE;
|
||||
|
||||
// // 配置 DMA1 Stream6 通道4 对应 USART2_TX
|
||||
// DMA1_Stream6->CR &= ~DMA_SxCR_EN;
|
||||
// while (DMA1_Stream6->CR & DMA_SxCR_EN); // 等待 DMA 关闭
|
||||
// 配置 DMA1 Stream6 通道4 对应 USART2_TX
|
||||
DMA1_Stream6->CR &= ~DMA_SxCR_EN;
|
||||
while (DMA1_Stream6->CR & DMA_SxCR_EN); // 等待 DMA 关闭
|
||||
|
||||
// DMA1_Stream6->PAR = (uint32_t)&USART2->DR;
|
||||
// DMA1_Stream6->M0AR = (uint32_t)dma_tx_buffer;
|
||||
// DMA1_Stream6->NDTR = 0;
|
||||
// DMA1_Stream6->CR = (4 << 25) | // 通道4
|
||||
// DMA_SxCR_MINC | // 内存递增
|
||||
// DMA_SxCR_DIR_0 | // 内存到外设
|
||||
// DMA_SxCR_TCIE | // 传输完成中断
|
||||
// DMA_SxCR_TEIE | // 建议添加传输错误中断
|
||||
// (0 << 16); // 优先级
|
||||
DMA1_Stream6->PAR = (uint32_t)&USART2->DR;
|
||||
DMA1_Stream6->M0AR = (uint32_t)dma_tx_buffer;
|
||||
DMA1_Stream6->NDTR = 0;
|
||||
DMA1_Stream6->CR = (4 << 25) | // 通道4
|
||||
DMA_SxCR_MINC | // 内存递增
|
||||
DMA_SxCR_DIR_0 | // 内存到外设
|
||||
DMA_SxCR_TCIE | // 传输完成中断
|
||||
DMA_SxCR_TEIE | // 建议添加传输错误中断
|
||||
(0 << 16); // 优先级
|
||||
|
||||
// NVIC_EnableIRQ(DMA1_Stream6_IRQn);
|
||||
//}
|
||||
NVIC_EnableIRQ(DMA1_Stream6_IRQn);
|
||||
}
|
||||
|
||||
void bms_init_gpio(void)
|
||||
{
|
||||
drv_gpio_init(io_array, kGpioType_End);
|
||||
drv_wireless_dma_init();
|
||||
}
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -216,6 +216,9 @@ uint32_t bms_get_baseInfo(uint16_t input)
|
|||
return tmp;
|
||||
case 54:
|
||||
tmp = bms_get_do_status_by_type(kDoType_Chg);
|
||||
return tmp;
|
||||
case 55:
|
||||
tmp = 1;
|
||||
return tmp;
|
||||
default:
|
||||
return 0;
|
||||
|
@ -710,6 +713,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
|
|||
|
||||
//把这个请按照数据模型填充完毕
|
||||
const devPointMap bms_points[] = {
|
||||
{"BCU_1", 0, 55, bms_get_baseInfo}, // 设备在线
|
||||
{"BCU_2", 0, 0, bms_get_total_alarm}, // 总告警
|
||||
{"BCU_3", 0, 0, bms_get_total_fault}, // 总故障
|
||||
{"BCU_4", 0, 1, bms_get_fault_level_1}, // 单体过压告警一级
|
||||
|
@ -752,8 +756,8 @@ const devPointMap bms_points[] = {
|
|||
{"BCU_38", 0, 0, NULL}, // 簇间环流3级告警
|
||||
{"BCU_39", 0, 0, NULL}, // 簇间电流差1级告警
|
||||
{"BCU_40", 0, 0, NULL}, // 簇间电流差2级告警
|
||||
{"BCU_41", 0, 0, NULL}, // 簇间电流差3级告警
|
||||
|
||||
{"BCU_41", 1, 0, NULL}, // 簇间电流差3级告警
|
||||
{"BCU_42", 1, 11, bms_get_fault_level_1}, // 组端过压1级告警
|
||||
{"BCU_43", 1, 11, bms_get_fault_level_2}, // 组端过压2级告警
|
||||
{"BCU_44", 1, 11, bms_get_fault_level_3}, // 组端过压3级告警
|
||||
|
@ -768,74 +772,130 @@ const devPointMap bms_points[] = {
|
|||
{"BCU_52", 1, 0, NULL}, // AFE电压排线异常
|
||||
{"BCU_53", 1, 0, NULL}, // 与电池簇通信告警
|
||||
{"BCU_54", 1, 0, NULL}, // 主从通讯告警
|
||||
{"BCU_55", 1, 14, bms_get_fault_level_3}, // 继电器粘连告警
|
||||
{"BCU_56", 1, 15, bms_get_fault_level_3}, // 电池极限故障
|
||||
{"BCU_57", 1, 0, NULL}, // 熔丝故障
|
||||
{"BCU_58", 1, 0, NULL}, // 断路器故障
|
||||
{"BCU_59", 1, 0, NULL}, // 空调故障
|
||||
{"BCU_60", 1, 0, NULL}, // 消防设备故障
|
||||
{"BCU_61", 1, 0, NULL}, // 消防火警
|
||||
{"BCU_62", 1, 0, NULL}, // 消防喷洒
|
||||
{"BCU_63", 1, 0, NULL}, // AFE故障
|
||||
{"BCU_64", 1, 14, bms_get_fault_level_1}, // 高压异常
|
||||
{"BCU_65", 1, 16, bms_get_fault_level_3}, // 预充告警
|
||||
{"BCU_66", 1, 17, bms_get_fault_level_3}, // 开路故障
|
||||
|
||||
{"BCU_67", 1, 1, bms_get_baseInfo}, // 总压
|
||||
{"BCU_68", 1, 2, bms_get_baseInfo}, // 总电流
|
||||
{"BCU_69", 1, 3, bms_get_baseInfo}, // SOC
|
||||
{"BCU_70", 1, 4, bms_get_baseInfo}, // SOH
|
||||
{"BCU_71", 1, 5, bms_get_baseInfo}, // SOE
|
||||
{"BCU_72", 1, 6, bms_get_baseInfo}, // 额定总压
|
||||
{"BCU_73", 1, 7, bms_get_baseInfo}, // 额定容量
|
||||
{"BCU_74", 1, 8, bms_get_baseInfo}, // 剩余容量
|
||||
{"BCU_75", 1, 9, bms_get_baseInfo}, // 额定电量
|
||||
{"BCU_76", 1, 10, bms_get_baseInfo}, // 剩余电量
|
||||
{"BCU_77", 1, 11, bms_get_baseInfo}, // 从机总数(BMU)
|
||||
{"BCU_78", 1, 12, bms_get_baseInfo}, // 在线从机总数(BMU)
|
||||
{"BCU_79", 1, 13, bms_get_baseInfo}, // 电池总数
|
||||
{"BCU_80", 1, 14, bms_get_baseInfo}, // 在线电池总数
|
||||
{"BCU_81", 1, 15, bms_get_baseInfo}, // 温感总数
|
||||
{"BCU_55", 1, 0, NULL}, // 熔丝故障
|
||||
{"BCU_56", 1, 0, NULL}, // 断路器故障
|
||||
{"BCU_57", 1, 0, NULL}, // 空调故障
|
||||
{"BCU_58", 1, 0, NULL}, // 消防设备故障
|
||||
{"BCU_59", 1, 0, NULL}, // 消防火警
|
||||
{"BCU_60", 1, 0, NULL}, // 消防喷洒
|
||||
{"BCU_61", 1, 0, NULL}, // AFE故障
|
||||
{"BCU_62", 1, 14, bms_get_fault_level_1}, // 高压异常
|
||||
{"BCU_63", 1, 16, bms_get_fault_level_3}, // 预充告警
|
||||
{"BCU_64", 1, 17, bms_get_fault_level_3}, // 开路故障
|
||||
|
||||
{"BCU_82", 2, 16, bms_get_baseInfo}, // 在线温感总数
|
||||
{"BCU_83", 2, 17, bms_get_baseInfo}, // 最大允许放电电流
|
||||
{"BCU_84", 2, 18, bms_get_baseInfo}, // 最大允许放电功率
|
||||
{"BCU_85", 2, 19, bms_get_baseInfo}, // 最大允许充电电流
|
||||
{"BCU_86", 2, 20, bms_get_baseInfo}, // 最大允许充电功率
|
||||
{"BCU_87", 2, 21, bms_get_baseInfo}, // 正极绝缘阻值
|
||||
{"BCU_88", 2, 22, bms_get_baseInfo}, // 负极绝缘阻值
|
||||
{"BCU_89", 2, 23, bms_get_baseInfo}, // 单体平均电压
|
||||
{"BCU_90", 2, 24, bms_get_baseInfo}, // 单体最大压差
|
||||
{"BCU_91", 2, 25, bms_get_baseInfo}, // 最高单体电压
|
||||
{"BCU_92", 2, 26, bms_get_baseInfo}, // 最高单体电压从机号
|
||||
{"BCU_93", 2, 27, bms_get_baseInfo}, // 最高单体电压编号
|
||||
{"BCU_94", 2, 28, bms_get_baseInfo}, // 最低单体电压
|
||||
{"BCU_95", 2, 29, bms_get_baseInfo}, // 最低单体电压从机号
|
||||
{"BCU_96", 2, 30, bms_get_baseInfo}, // 最低单体电压编号
|
||||
{"BCU_97", 2, 31, bms_get_baseInfo}, // 单体平均温度
|
||||
{"BCU_98", 2, 32, bms_get_baseInfo}, // 最大温差
|
||||
{"BCU_99", 2, 33, bms_get_baseInfo}, // 最高单体温度
|
||||
{"BCU_100", 2, 34, bms_get_baseInfo}, // 最高单体温度从机号
|
||||
{"BCU_101", 2, 35, bms_get_baseInfo}, // 最高单体温度编号
|
||||
{"BCU_102", 2, 36, bms_get_baseInfo}, // 最低单体温度
|
||||
{"BCU_103", 2, 37, bms_get_baseInfo}, // 最低单体温度从机号
|
||||
{"BCU_104", 2, 38, bms_get_baseInfo}, // 最低单体温度编号
|
||||
{"BCU_105", 2, 39, bms_get_baseInfo}, // 日充电容量
|
||||
{"BCU_106", 2, 40, bms_get_baseInfo}, // 日充电电量
|
||||
{"BCU_107", 2, 41, bms_get_baseInfo}, // 日放电容量
|
||||
{"BCU_108", 2, 42, bms_get_baseInfo}, // 日放电电量
|
||||
{"BCU_109", 2, 43, bms_get_baseInfo}, // 日充电时间
|
||||
{"BCU_110", 2, 44, bms_get_baseInfo}, // 日放电时间
|
||||
{"BCU_111", 2, 45, bms_get_baseInfo}, // 累计充电容量
|
||||
{"BCU_112", 2, 46, bms_get_baseInfo}, // 累计充电电量
|
||||
{"BCU_113", 2, 47, bms_get_baseInfo}, // 累计放电容量
|
||||
{"BCU_114", 2, 48, bms_get_baseInfo}, // 累计放电电量
|
||||
{"BCU_115", 2, 49, bms_get_baseInfo}, // 累计充电时间
|
||||
{"BCU_116", 2, 50, bms_get_baseInfo}, // 累计放电时间
|
||||
{"BCU_117", 2, 51, bms_get_baseInfo}, // BCU工作状态
|
||||
{"BCU_118", 2, 52, bms_get_baseInfo}, // 预充继电器
|
||||
{"BCU_119", 2, 53, bms_get_baseInfo}, // 总正继电器
|
||||
{"BCU_120", 2, 54, bms_get_baseInfo}, // 总负继电器
|
||||
{"BCU_65", 1, 14, bms_get_fault_level_3}, // 继电器粘连告警
|
||||
{"BCU_66", 1, 15, bms_get_fault_level_3}, // 电池极限故障
|
||||
|
||||
{"BCU_67", 1, 52, bms_get_baseInfo}, // 预充继电器
|
||||
{"BCU_68", 1, 53, bms_get_baseInfo}, // 总正继电器
|
||||
{"BCU_69", 1, 54, bms_get_baseInfo}, // 总负继电器
|
||||
|
||||
{"BCU_101", 1, 1, bms_get_baseInfo}, // 总压
|
||||
{"BCU_102", 1, 2, bms_get_baseInfo}, // 总电流
|
||||
{"BCU_103", 1, 3, bms_get_baseInfo}, // SOC
|
||||
{"BCU_104", 1, 4, bms_get_baseInfo}, // SOH
|
||||
{"BCU_105", 1, 5, bms_get_baseInfo}, // SOE
|
||||
{"BCU_106", 1, 6, bms_get_baseInfo}, // 额定总压
|
||||
{"BCU_107", 1, 7, bms_get_baseInfo}, // 额定容量
|
||||
{"BCU_108", 1, 8, bms_get_baseInfo}, // 剩余容量
|
||||
{"BCU_109", 1, 9, bms_get_baseInfo}, // 额定电量
|
||||
{"BCU_110", 1, 10, bms_get_baseInfo}, // 剩余电量
|
||||
{"BCU_111", 1, 11, bms_get_baseInfo}, // 从机总数(BMU)
|
||||
|
||||
{"BCU_112", 2, 12, bms_get_baseInfo}, // 在线从机总数(BMU)
|
||||
{"BCU_113", 2, 13, bms_get_baseInfo}, // 电池总数
|
||||
{"BCU_114", 2, 14, bms_get_baseInfo}, // 在线电池总数
|
||||
{"BCU_115", 2, 15, bms_get_baseInfo}, // 温感总数
|
||||
{"BCU_116", 2, 16, bms_get_baseInfo}, // 在线温感总数
|
||||
{"BCU_117", 2, 17, bms_get_baseInfo}, // 最大允许放电电流
|
||||
{"BCU_118", 2, 18, bms_get_baseInfo}, // 最大允许放电功率
|
||||
{"BCU_119", 2, 19, bms_get_baseInfo}, // 最大允许充电电流
|
||||
{"BCU_120", 2, 20, bms_get_baseInfo}, // 最大允许充电功率
|
||||
{"BCU_121", 2, 21, bms_get_baseInfo}, // 正极绝缘阻值
|
||||
{"BCU_122", 2, 22, bms_get_baseInfo}, // 负极绝缘阻值
|
||||
{"BCU_123", 2, 23, bms_get_baseInfo}, // 单体平均电压
|
||||
{"BCU_124", 2, 24, bms_get_baseInfo}, // 单体最大压差
|
||||
{"BCU_125", 2, 25, bms_get_baseInfo}, // 最高单体电压
|
||||
{"BCU_126", 2, 26, bms_get_baseInfo}, // 最高单体电压从机号
|
||||
{"BCU_127", 2, 27, bms_get_baseInfo}, // 最高单体电压编号
|
||||
{"BCU_128", 2, 28, bms_get_baseInfo}, // 最低单体电压
|
||||
{"BCU_129", 2, 29, bms_get_baseInfo}, // 最低单体电压从机号
|
||||
{"BCU_130", 2, 30, bms_get_baseInfo}, // 最低单体电压编号
|
||||
{"BCU_131", 2, 31, bms_get_baseInfo}, // 单体平均温度
|
||||
{"BCU_132", 2, 32, bms_get_baseInfo}, // 最大温差
|
||||
{"BCU_133", 2, 33, bms_get_baseInfo}, // 最高单体温度
|
||||
{"BCU_134", 2, 34, bms_get_baseInfo}, // 最高单体温度从机号
|
||||
{"BCU_135", 2, 35, bms_get_baseInfo}, // 最高单体温度编号
|
||||
{"BCU_136", 2, 36, bms_get_baseInfo}, // 最低单体温度
|
||||
{"BCU_137", 2, 37, bms_get_baseInfo}, // 最低单体温度从机号
|
||||
{"BCU_138", 2, 38, bms_get_baseInfo}, // 最低单体温度编号
|
||||
{"BCU_139", 2, 39, bms_get_baseInfo}, // 日充电容量
|
||||
{"BCU_140", 2, 40, bms_get_baseInfo}, // 日充电电量
|
||||
{"BCU_141", 2, 41, bms_get_baseInfo}, // 日放电容量
|
||||
{"BCU_142", 2, 42, bms_get_baseInfo}, // 日放电电量
|
||||
{"BCU_143", 2, 43, bms_get_baseInfo}, // 日充电时间
|
||||
{"BCU_144", 2, 44, bms_get_baseInfo}, // 日放电时间
|
||||
{"BCU_145", 2, 45, bms_get_baseInfo}, // 累计充电容量
|
||||
{"BCU_146", 2, 46, bms_get_baseInfo}, // 累计充电电量
|
||||
{"BCU_147", 2, 47, bms_get_baseInfo}, // 累计放电容量
|
||||
{"BCU_148", 2, 48, bms_get_baseInfo}, // 累计放电电量
|
||||
{"BCU_149", 2, 49, bms_get_baseInfo}, // 累计充电时间
|
||||
{"BCU_150", 2, 50, bms_get_baseInfo}, // 累计放电时间
|
||||
{"BCU_151", 2, 51, bms_get_baseInfo}, // BCU工作状态
|
||||
|
||||
// {"BCU_67", 1, 1, bms_get_baseInfo}, // 总压
|
||||
// {"BCU_68", 1, 2, bms_get_baseInfo}, // 总电流
|
||||
// {"BCU_69", 1, 3, bms_get_baseInfo}, // SOC
|
||||
// {"BCU_70", 1, 4, bms_get_baseInfo}, // SOH
|
||||
// {"BCU_71", 1, 5, bms_get_baseInfo}, // SOE
|
||||
// {"BCU_72", 1, 6, bms_get_baseInfo}, // 额定总压
|
||||
// {"BCU_73", 1, 7, bms_get_baseInfo}, // 额定容量
|
||||
// {"BCU_74", 1, 8, bms_get_baseInfo}, // 剩余容量
|
||||
// {"BCU_75", 1, 9, bms_get_baseInfo}, // 额定电量
|
||||
// {"BCU_76", 1, 10, bms_get_baseInfo}, // 剩余电量
|
||||
// {"BCU_77", 1, 11, bms_get_baseInfo}, // 从机总数(BMU)
|
||||
// {"BCU_78", 1, 12, bms_get_baseInfo}, // 在线从机总数(BMU)
|
||||
// {"BCU_79", 1, 13, bms_get_baseInfo}, // 电池总数
|
||||
// {"BCU_80", 1, 14, bms_get_baseInfo}, // 在线电池总数
|
||||
// {"BCU_81", 1, 15, bms_get_baseInfo}, // 温感总数
|
||||
|
||||
// {"BCU_82", 2, 16, bms_get_baseInfo}, // 在线温感总数
|
||||
// {"BCU_83", 2, 17, bms_get_baseInfo}, // 最大允许放电电流
|
||||
// {"BCU_84", 2, 18, bms_get_baseInfo}, // 最大允许放电功率
|
||||
// {"BCU_85", 2, 19, bms_get_baseInfo}, // 最大允许充电电流
|
||||
// {"BCU_86", 2, 20, bms_get_baseInfo}, // 最大允许充电功率
|
||||
// {"BCU_87", 2, 21, bms_get_baseInfo}, // 正极绝缘阻值
|
||||
// {"BCU_88", 2, 22, bms_get_baseInfo}, // 负极绝缘阻值
|
||||
// {"BCU_89", 2, 23, bms_get_baseInfo}, // 单体平均电压
|
||||
// {"BCU_90", 2, 24, bms_get_baseInfo}, // 单体最大压差
|
||||
// {"BCU_91", 2, 25, bms_get_baseInfo}, // 最高单体电压
|
||||
// {"BCU_92", 2, 26, bms_get_baseInfo}, // 最高单体电压从机号
|
||||
// {"BCU_93", 2, 27, bms_get_baseInfo}, // 最高单体电压编号
|
||||
// {"BCU_94", 2, 28, bms_get_baseInfo}, // 最低单体电压
|
||||
// {"BCU_95", 2, 29, bms_get_baseInfo}, // 最低单体电压从机号
|
||||
// {"BCU_96", 2, 30, bms_get_baseInfo}, // 最低单体电压编号
|
||||
// {"BCU_97", 2, 31, bms_get_baseInfo}, // 单体平均温度
|
||||
// {"BCU_98", 2, 32, bms_get_baseInfo}, // 最大温差
|
||||
// {"BCU_99", 2, 33, bms_get_baseInfo}, // 最高单体温度
|
||||
// {"BCU_100", 2, 34, bms_get_baseInfo}, // 最高单体温度从机号
|
||||
// {"BCU_101", 2, 35, bms_get_baseInfo}, // 最高单体温度编号
|
||||
// {"BCU_102", 2, 36, bms_get_baseInfo}, // 最低单体温度
|
||||
// {"BCU_103", 2, 37, bms_get_baseInfo}, // 最低单体温度从机号
|
||||
// {"BCU_104", 2, 38, bms_get_baseInfo}, // 最低单体温度编号
|
||||
// {"BCU_105", 2, 39, bms_get_baseInfo}, // 日充电容量
|
||||
// {"BCU_106", 2, 40, bms_get_baseInfo}, // 日充电电量
|
||||
// {"BCU_107", 2, 41, bms_get_baseInfo}, // 日放电容量
|
||||
// {"BCU_108", 2, 42, bms_get_baseInfo}, // 日放电电量
|
||||
// {"BCU_109", 2, 43, bms_get_baseInfo}, // 日充电时间
|
||||
// {"BCU_110", 2, 44, bms_get_baseInfo}, // 日放电时间
|
||||
// {"BCU_111", 2, 45, bms_get_baseInfo}, // 累计充电容量
|
||||
// {"BCU_112", 2, 46, bms_get_baseInfo}, // 累计充电电量
|
||||
// {"BCU_113", 2, 47, bms_get_baseInfo}, // 累计放电容量
|
||||
// {"BCU_114", 2, 48, bms_get_baseInfo}, // 累计放电电量
|
||||
// {"BCU_115", 2, 49, bms_get_baseInfo}, // 累计充电时间
|
||||
// {"BCU_116", 2, 50, bms_get_baseInfo}, // 累计放电时间
|
||||
// {"BCU_117", 2, 51, bms_get_baseInfo}, // BCU工作状态
|
||||
};
|
||||
|
||||
const int bms_point_count = sizeof(bms_points) / sizeof(bms_points[0]);
|
||||
|
@ -1098,7 +1158,7 @@ void mqtt_publish_bms_data(uint32_t basetime)
|
|||
// }
|
||||
// }
|
||||
|
||||
if (!drv_at_send_cmd("AT+QMTCONN?", "0,3\0", WIFI_TIMEOUT))
|
||||
if (!drv_at_send_cmd("AT+QMTCONN?", "3\0", WIFI_TIMEOUT))
|
||||
{
|
||||
drv_mqtt_connect();
|
||||
}
|
||||
|
|
|
@ -13,6 +13,12 @@ uint8_t send_buff[QFC41D_MAX_SEND_SIZE] = {0};
|
|||
char wifiName[40] = "BLUESUNESS", wifiPassWord[40] = "bluesun009", bleName[40] = "bsm1";
|
||||
|
||||
char cmd[1000] = {0}; //降低栈空间使用
|
||||
|
||||
#define TX_DMA_BUFFER_SIZE 800
|
||||
|
||||
uint8_t dma_tx_buffer[TX_DMA_BUFFER_SIZE];
|
||||
volatile uint8_t dma_tx_busy = 0;
|
||||
|
||||
//定义
|
||||
WifiBleItem qfc41dItem = {
|
||||
.dev = QFC41D_UART_PORT,
|
||||
|
@ -64,6 +70,34 @@ void drv_wireless_send_string(const char *str)
|
|||
drv_wireless_send_char('\n'); // 发送 LF
|
||||
}
|
||||
|
||||
void drv_wireless_send_string_dma(const char *str)
|
||||
{
|
||||
if (dma_tx_busy) return; // 正在发送,丢弃或排队视情况处理
|
||||
|
||||
uint16_t len = 0;
|
||||
|
||||
// 拷贝数据到 DMA 缓冲区
|
||||
while (*str && len < TX_DMA_BUFFER_SIZE - 2) {
|
||||
dma_tx_buffer[len++] = *str++;
|
||||
}
|
||||
|
||||
// 添加 \r\n
|
||||
dma_tx_buffer[len++] = '\r';
|
||||
dma_tx_buffer[len++] = '\n';
|
||||
|
||||
// 设置 DMA 参数并启动
|
||||
DMA1_Stream6->CR &= ~DMA_SxCR_EN;
|
||||
while (DMA1_Stream6->CR & DMA_SxCR_EN);
|
||||
|
||||
DMA1_Stream6->M0AR = (uint32_t)dma_tx_buffer;
|
||||
DMA1_Stream6->NDTR = len;
|
||||
|
||||
dma_tx_busy = 1;
|
||||
DMA1_Stream6->CR |= DMA_SxCR_EN;
|
||||
USART2->CR3 |= USART_CR3_DMAT; // 开启 DMA 发送
|
||||
}
|
||||
|
||||
|
||||
// 发送 AT 指令并等待返回值
|
||||
int drv_at_send_cmd(const char *cmd, const char *response, uint32_t timeout)
|
||||
{
|
||||
|
@ -308,7 +342,7 @@ static uint8_t drv_mqtt_subscribe()
|
|||
uint8_t drv_mqtt_publish(char* str,uint16_t length)
|
||||
{
|
||||
snprintf(cmd, sizeof(cmd), "AT+QMTPUB=0,1,2,0,%s,%d,%s",MQTT_TOPIC, length, str);
|
||||
if (!drv_at_send_cmd(cmd, "OK", WIFI_TIMEOUT))
|
||||
if (!drv_at_send_cmd(cmd, "OK\0", WIFI_TIMEOUT))
|
||||
{
|
||||
// KIT_PRINTF("Failed to publish message!\r\n");
|
||||
return 1;
|
||||
|
@ -324,6 +358,7 @@ uint8_t drv_mqtt_publish_no_respose(char* str,uint16_t length)
|
|||
snprintf(cmd, sizeof(cmd), "AT+QMTPUB=0,1,2,0,\"%s\",%d,\"%s\"", MQTT_TOPIC, length, str);
|
||||
drv_wireless_send_string(cmd); // 未使用DMA
|
||||
// drv_wireless_send_string_dma(cmd); // 使用DMA
|
||||
// kit_time_dly_ms(100);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -276,19 +276,19 @@ void DMA1_Stream5_IRQHandler(void)
|
|||
{
|
||||
}
|
||||
|
||||
//void DMA1_Stream6_IRQHandler(void)
|
||||
//{
|
||||
// if (DMA1->HISR & DMA_HISR_TCIF6) {
|
||||
// DMA1->HIFCR |= DMA_HIFCR_CTCIF6;
|
||||
// dma_tx_busy = 0;
|
||||
// USART2->CR3 &= ~USART_CR3_DMAT; // 传输完成后关闭DMA请求
|
||||
// }
|
||||
// else if (DMA1->HISR & DMA_HISR_TEIF6) {
|
||||
// DMA1->HIFCR |= DMA_HIFCR_CTEIF6;
|
||||
void DMA1_Stream6_IRQHandler(void)
|
||||
{
|
||||
if (DMA1->HISR & DMA_HISR_TCIF6) {
|
||||
DMA1->HIFCR |= DMA_HIFCR_CTCIF6;
|
||||
dma_tx_busy = 0;
|
||||
USART2->CR3 &= ~USART_CR3_DMAT; // 传输完成后关闭DMA请求
|
||||
}
|
||||
else if (DMA1->HISR & DMA_HISR_TEIF6) {
|
||||
DMA1->HIFCR |= DMA_HIFCR_CTEIF6;
|
||||
|
||||
// dma_tx_busy = 0;
|
||||
// }
|
||||
//}
|
||||
dma_tx_busy = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void DMA1_Channel6_IRQHandler(void)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue