From a3a95c5d0c7a89e343e3c90c808051790e8e6a37 Mon Sep 17 00:00:00 2001 From: stark1898y <1658608470@qq.com> Date: Mon, 16 Dec 2024 21:26:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .settings/org.eclipse.core.resources.prefs | 2 + .vscode/settings.json | 5 +- APP/include/peripheral.h | 12 +- APP/peripheral.c | 217 +++++++++++---------- APP/peripheral_main.c | 28 ++- BSP/inc/bsp_adc.h | 1 + BSP/inc/bsp_i2c.h | 5 +- BSP/inc/bsp_valve.h | 40 ++-- BSP/src/bsp_adc.c | 53 +++-- BSP/src/bsp_i2c.c | 49 +++-- BSP/src/bsp_valve.c | 193 ++++++++++++------ README.md | 5 + image/README/1734342096541.png | Bin 0 -> 46786 bytes image/README/1734342111476.png | Bin 0 -> 46786 bytes 14 files changed, 389 insertions(+), 221 deletions(-) create mode 100644 image/README/1734342096541.png create mode 100644 image/README/1734342111476.png diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index a253c4c..72bacfc 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,6 +1,8 @@ eclipse.preferences.version=1 encoding//APP/peripheral_main.c=UTF-8 encoding//BSP/inc/bsp_valve.h=UTF-8 +encoding//BSP/src/bsp_adc.c=UTF-8 +encoding//BSP/src/bsp_i2c.c=UTF-8 encoding//BSP/src/bsp_key.c=UTF-8 encoding//BSP/src/bsp_valve.c=UTF-8 encoding//common/letter-shell/extensions/log/log.h=UTF-8 diff --git a/.vscode/settings.json b/.vscode/settings.json index 67a6bef..e68282e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,9 @@ "atomic": "cpp", "cstddef": "cpp", "type_traits": "cpp", - "stdarg.h": "c" + "stdarg.h": "c", + "bsp_flash.h": "c", + "bsp_valve.h": "c", + "log.h": "c" } } diff --git a/APP/include/peripheral.h b/APP/include/peripheral.h index 787428c..554d723 100644 --- a/APP/include/peripheral.h +++ b/APP/include/peripheral.h @@ -6,7 +6,7 @@ * Description : ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. - * Attention: This software (modified or not) and binary are used for + * Attention: This software (modified or not) and binary are used for * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ @@ -32,6 +32,12 @@ extern "C" { #define SBP_PARAM_UPDATE_EVT 0x0008 #define SBP_PHY_UPDATE_EVT 0x0010 +#define SBP_REPLY_CMD_EVT 0x0020 + +extern uint8_t Peripheral_TaskID; + +// #define VAVLE_CLOSE_ + /********************************************************************* * MACROS */ @@ -57,6 +63,10 @@ extern void Peripheral_Init(void); */ extern uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events); + +void BSP_NeeedReplyCMdFirst(void); +void BSP_NoNeeedReplyCMd(void); + /********************************************************************* *********************************************************************/ diff --git a/APP/peripheral.c b/APP/peripheral.c index 90de855..a8e7ab0 100644 --- a/APP/peripheral.c +++ b/APP/peripheral.c @@ -33,18 +33,22 @@ #undef LOG_TAG #define LOG_TAG "peripheral" - volatile uint8_t mtu_flag = 0; +volatile uint8_t mtu_flag = 0; -/********************************************************************* - * MACROS - */ +static volatile bool periodic_upload_block_flag = false; -/********************************************************************* - * CONSTANTS - */ +void BSP_NeeedReplyCMdFirst(void) +{ + periodic_upload_block_flag = true; +} + +void BSP_NoNeeedReplyCMd(void) +{ + periodic_upload_block_flag = false; +} // How often to perform periodic event -#define SBP_PERIODIC_EVT_PERIOD (160 * 10 * 1) // (160 = 100ms) +#define SBP_PERIODIC_EVT_PERIOD (160 * 10 * 5) // (160 = 100ms) // How often to perform read rssi event #define SBP_READ_RSSI_EVT_PERIOD (1600 * 3) // (160 = 100ms) @@ -56,23 +60,23 @@ #define SBP_PHY_UPDATE_DELAY (1600 * 2) // What is the advertising interval when device is discoverable (units of 625us, 80=50ms) -#define DEFAULT_ADVERTISING_INTERVAL (160 * 10) +#define DEFAULT_ADVERTISING_INTERVAL (160 * 8) // Limited discoverable mode advertises for 30.72s, and then stops // General discoverable mode advertises indefinitely #define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL // Minimum connection interval (units of 1.25ms, 6=7.5ms) -#define DEFAULT_DESIRED_MIN_CONN_INTERVAL (80 * 9) // (80 = 100ms) +#define DEFAULT_DESIRED_MIN_CONN_INTERVAL (80 * 4) // (80 = 100ms) // Maximum connection interval (units of 1.25ms, 100=125ms) -#define DEFAULT_DESIRED_MAX_CONN_INTERVAL (80 * 10) +#define DEFAULT_DESIRED_MAX_CONN_INTERVAL (80 * 5) // Slave latency to use parameter update -#define DEFAULT_DESIRED_SLAVE_LATENCY 3 +#define DEFAULT_DESIRED_SLAVE_LATENCY 0 // Supervision timeout value (units of 10ms, 100=1s) -#define DEFAULT_DESIRED_CONN_TIMEOUT (100 * 5) +#define DEFAULT_DESIRED_CONN_TIMEOUT (100 * 2) // Company Identifier: WCH #define WCH_COMPANY_ID 0x07D7 @@ -81,7 +85,7 @@ // TYQ-93:B4:8F:10:53:5C #define MAC_NAME_LEN 22 -static uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing +uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing // 蓝牙广播包的最大长度是37个字节,其中设备地址占用了6个字节,只有31个字节是可用的。 // TODO:响应体,名称加上MAC地址 @@ -351,16 +355,30 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events) return (events ^ SBP_START_DEVICE_EVT); } + if (events & SBP_REPLY_CMD_EVT) + { + logDebug("SBP_REPLY_CMD_EVT"); + peripheralChar4Notify((uint8_t *)&RelyData.buf[0], RelyData.len); + + BSP_NoNeeedReplyCMd(); + return (events ^ SBP_REPLY_CMD_EVT); + } if (events & SBP_PERIODIC_EVT) { - // Restart timer - if (SBP_PERIODIC_EVT_PERIOD) + // 防止主机下发指令,从机回复响应的时候,先传的是状态数据 + if (periodic_upload_block_flag == false && mtu_flag == 1) { + // Perform periodic application task + performPeriodicTask(); + // Restart timer tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD); } - // Perform periodic application task - performPeriodicTask(); + else + { + // 需要等先回复了下发的指令,1s 之后再尝试回复状态数据 + tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, 1600 * 1); + } return (events ^ SBP_PERIODIC_EVT); } @@ -456,7 +474,7 @@ static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg) if (pMsgEvent->method == ATT_MTU_UPDATED_EVENT) { peripheralMTU = pMsgEvent->msg.exchangeMTUReq.clientRxMTU; - mtu_flag = 1; + mtu_flag = 1; logDebug("****mtu exchange: %d****", pMsgEvent->msg.exchangeMTUReq.clientRxMTU); } break; @@ -563,7 +581,8 @@ static void Peripheral_LinkTerminated(gapRoleEvent_t *pEvent) */ static void peripheralRssiCB(uint16_t connHandle, int8_t rssi) { - logDebug("RSSI -%d dB Conn %x ", -rssi, connHandle); + gValveData.rssi = rssi; + logDebug("RSSI %d dB Conn %x ", gValveData.rssi, connHandle); } /********************************************************************* @@ -587,8 +606,7 @@ static void peripheralParamUpdateCB(uint16_t connHandle, uint16_t connInterval, peripheralConnList.connSlaveLatency = connSlaveLatency; peripheralConnList.connTimeout = connTimeout; - logDebug("ParamUpdateCB (Handle)%x - (connInt 0x%x=%.1fms) - (connSlaveLatency) %x - (connTimeout 0x%x=%dms) " - , connHandle, connInterval, connInterval * 1.25, connSlaveLatency, connTimeout * 10, connTimeout * 10); + logDebug("ParamUpdateCB (Handle)%x - (connInt 0x%x=%.1fms) - (connSlaveLatency) %x - (connTimeout 0x%x=%dms) ", connHandle, connInterval, connInterval * 1.25, connSlaveLatency, connTimeout * 10, connTimeout * 10); } else { @@ -634,7 +652,9 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven // 在蓝牙建立连接之后,调用 GATT ExchangeMTU 来修改 MTU 的值 // Update MTU - attExchangeMTUReq_t req = {.clientRxMTU = BLE_BUFF_MAX_LEN - 4,}; + attExchangeMTUReq_t req = { + .clientRxMTU = BLE_BUFF_MAX_LEN - 4, + }; GATT_ExchangeMTU(peripheralConnList.connHandle, &req, Peripheral_TaskID); // Peripheral_SetMacName(); } @@ -699,65 +719,28 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven */ static void performPeriodicTask(void) { - if (mtu_flag) + gValveData.bat = BSP_ReadVbat(); + + float _humi, _temp; + if (BSP_ReadTempHumi(&_humi, &_temp) == 0) { - // 温度 - uint32_t countadc = 0; - // VBAT - uint32_t CountBat = 0; - uint16_t adcBuff[40]; - uint8_t i = 0; - // uint32_t countadc = 0; - uint16_t min_number = 0; - uint16_t max_number = 0; - - ADC_InterBATSampInit(); - for (i = 0; i < 20; i++) - { - adcBuff[i] = ADC_ExcutSingleConver(); // 连续采样20次 - } - for (i = 0; i < 20; i++) - { - CountBat += adcBuff[i]; - if (i == 0) - { - min_number = adcBuff[i]; - max_number = adcBuff[i]; - } - min_number = ((min_number > adcBuff[i]) ? adcBuff[i] : min_number); // 软件滤波 - max_number = ((max_number < adcBuff[i]) ? adcBuff[i] : max_number); - } - logDebug("min_number = %d, max_number = %d", min_number, max_number); - CountBat = (CountBat - min_number - max_number) / 18; // 删除最小与最大值 - logDebug("AverageCountBat = %d", CountBat); - - - int ret; - - GXHTC3C_Wakeup(); - DelayMs(20); - - GXHTC3C_GetStart(); - DelayMs(20); - float humi, temp; - ret = GXHTC3C_GetTempHumi(&humi, &temp); - if (ret == 0) - { - logDebug("humi %.2f %, temp %.2f C", humi, temp); - } - - GXHTC3C_Sleep(); - - TsRawFrameData RawData; - // static uint8_t humi; - // humi++; - BSP_VALVE_Generate_Data(&RawData, 0, CountBat / 100, temp, humi); - // if (humi > 99) - // { - // humi = 0; - // } - peripheralChar4Notify(&RawData.buf[0], RawData.len); + gValveData.temp = (int8_t)_temp; + gValveData.humi = (uint8_t)_humi; } + else + { + logError("Read TempHumi Err"); + return; + } + logDebug("switch_status:%d Temp:%d Bat:%d Humi:%d%% RSSI: %d" + , gValveData.switch_status, gValveData.temp, gValveData.bat, gValveData.humi, gValveData.rssi); + + + TsRawFrameData RawData; + + BSP_VALVE_Generate_UploadData(&RawData); + + peripheralChar4Notify(&RawData.buf[0], RawData.len); } /********************************************************************* @@ -809,7 +792,10 @@ static void peripheralChar4Notify(uint8_t *pValue, uint16_t len) static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len) { // tmos_event_hdr_t *test_message; - TsRawFrameData RawData; + // TsRawFrameData RawData; + + BSP_NeeedReplyCMdFirst(); + switch (paramID) { case SIMPLEPROFILE_CHAR1: @@ -820,28 +806,48 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len for (uint8_t i = 0; i < len; i++) { logDebug("%02x ", newValue[i]); - BSP_UART1_TxLoop(); + // BSP_UART1_TxLoop(); } logDebug("\n profile ChangeCB CHAR1.. End"); // test_message =(tmos_event_hdr_t*) tmos_msg_allocate(sizeof(tmos_event_hdr_t)); - BSP_UART1_TxLoop(); + // BSP_UART1_TxLoop(); break; } case SIMPLEPROFILE_CHAR3: { - uint8_t newValue[SIMPLEPROFILE_CHAR3_LEN]; - tmos_memset(newValue, 0, sizeof(newValue)); - tmos_memcpy(newValue, pValue, len); + // uint8_t newValue[SIMPLEPROFILE_CHAR3_LEN]; + // tmos_memset(newValue, 0, sizeof(newValue)); + // tmos_memcpy(newValue, pValue, len); logDebug("CHAR3 Start"); - logHexDumpAll(newValue, len); -// for (uint8_t i = 0; i < len; i++) -// { -// logDebug("%02x ", newValue[i]); -// } -#if 1 + // logHexDumpAll(newValue, len); + // TODO:发送rev数据 + uint8_t *p_rev_msg; + // TsValveMsg *ValveMsg; + // ValveMsg = tmos_msg_allocate(len); + // ValveMsg.data = tmos_msg_allocate(len); + p_rev_msg = tmos_msg_allocate(len + 1); + if ( p_rev_msg ) + { + p_rev_msg[0] = len; + tmos_memcpy(&p_rev_msg[1], pValue, len); + int ret = tmos_msg_send(vavle_task_id, p_rev_msg); + if (ret == SUCCESS) + { + logDebug("p_rev_msg send ret = %d", ret); + } + else + { + logError("p_rev_msg send ret = %d", ret); + } + } + else + { + logError("内存不足"); + } +#if 0 TsFrameData *HostFrameData = BSP_VAVLE_GetFrameData(newValue, len); if (HostFrameData != NULL) { @@ -858,15 +864,28 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len break; case kCmdCloseVavle: logDebug("kCmdCloseVavle"); - BSP_VALVE_Generate_ValveResponse(&RawData, kCmdCloseVavle, 1); - peripheralChar4Notify((uint8_t *)&RawData.buf[0], RawData.len); - BSP_UART1_TxLoop(); + + // TODO:注意这里 + BSP_NeeedReplyCMdFirst(); + + // EMV_CHARGE + EMV_CHARGE_EN; + logDebug("EMV_CHARGE_EN"); + + // 开始一个定时event,1s后产生,当前语句只会产生一次event + // 可以在event产生后去开启event,可以是别的task的,也可以是当前task的event + tmos_start_task(vavle_task_id, VAVLE_CLOSE_ACTION_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS)); + + // BSP_VALVE_Generate_ValveResponse(&RawData, kCmdCloseVavle, 1); + // // TODO: 关阀动作 + // peripheralChar4Notify((uint8_t *)&RawData.buf[0], RawData.len); break; + case kCmdOpenVavle: logDebug("kCmdOpenVavle"); BSP_VALVE_Generate_ValveResponse(&RawData, kCmdOpenVavle, 1); peripheralChar4Notify((uint8_t *)&RawData.buf[0], RawData.len); - BSP_UART1_TxLoop(); + // BSP_UART1_TxLoop(); break; default: logError("无效的命令"); @@ -891,9 +910,6 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len } } - - - #if 0 @@ -908,9 +924,6 @@ void Peripheral_UpdateAdvertData(uint8_t adType, uint8_t dataLen, uint8_t *pAdve GAP_UpdateAdvertisingData(Peripheral_TaskID, adType, dataLen, pAdvertData); } - - - #include "stdio.h" #include "stdarg.h" diff --git a/APP/peripheral_main.c b/APP/peripheral_main.c index e7a6831..5f7c015 100644 --- a/APP/peripheral_main.c +++ b/APP/peripheral_main.c @@ -29,6 +29,8 @@ #include "bsp_iwdg.h" #include "bsp_flash.h" +#include "bsp_valve.h" + #undef LOG_ENABLE #define LOG_ENABLE 1 @@ -39,14 +41,31 @@ __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; +static uint8_t key_cnt = 0; void app_task_handler(TeAppEvtType app_evt_type) { switch(app_evt_type) { - case kKeyShort:{ + case kKeyShort: logDebug("button short press"); + key_cnt++; + if (key_cnt == 1) + { + // TODO:LED鏄剧ず鐘舵 + } + else if (key_cnt == 2) + { + if (gValveData.switch_status == kClosed) + { + gValveData.switch_status = kOpened; + } + else if (gValveData.switch_status == kOpened) + { + + } + } break; - } + case kKeyLong: logDebug("button long press"); @@ -54,6 +73,7 @@ void app_task_handler(TeAppEvtType app_evt_type) case kKeyRelease: // BSP_KEY_EnterLowpower(); // DelayMs(10); + key_cnt = 0; BSP_RequestSleep(); logDebug("gpio relase;BSP_RequestSleep"); @@ -199,7 +219,7 @@ int main(void) EMV_CHARGE_OFF_DEINIT; EMV_OFF_DEINIT; - BSP_ADC_Init(); + // BSP_ADC_Init(); CH59x_BLEInit(); logDebug("%s\n", VER_LIB); @@ -231,6 +251,8 @@ int main(void) // IWDG_Init(1500); + BSP_VAVLE_Init(); + Main_Circulation(); } diff --git a/BSP/inc/bsp_adc.h b/BSP/inc/bsp_adc.h index 93da33e..a1bd348 100644 --- a/BSP/inc/bsp_adc.h +++ b/BSP/inc/bsp_adc.h @@ -14,6 +14,7 @@ #include "CONFIG.h" +uint8_t BSP_ReadVbat(void); void BSP_ADC_Init(void); diff --git a/BSP/inc/bsp_i2c.h b/BSP/inc/bsp_i2c.h index ada6b44..77b52e1 100644 --- a/BSP/inc/bsp_i2c.h +++ b/BSP/inc/bsp_i2c.h @@ -2,8 +2,8 @@ * @Author : stark1898y 1658608470@qq.com * @Date : 2024-12-15 15:42:00 * @LastEditors : stark1898y 1658608470@qq.com - * @LastEditTime : 2024-12-15 15:42:00 - * @FilePath : \BLE_TYQ_CH592F - 鍓湰\BSP\inc\bsp_i2c.h + * @LastEditTime : 2024-12-16 20:50:17 + * @FilePath : \BLE_TYQ_CH592F\BSP\inc\bsp_i2c.h * @Description : * * Copyright (c) 2024 by yzy, All Rights Reserved. @@ -138,6 +138,7 @@ void BSP_I2C_DeInit(void); void GXHTC3C_Init(void); +int BSP_ReadTempHumi(float *humi, float *temp); #endif // !__BSP_I2C_H__ diff --git a/BSP/inc/bsp_valve.h b/BSP/inc/bsp_valve.h index 76ed40d..226fbc8 100644 --- a/BSP/inc/bsp_valve.h +++ b/BSP/inc/bsp_valve.h @@ -2,7 +2,7 @@ * @Author : stark1898y 1658608470@qq.com * @Date : 2024-12-12 15:55:38 * @LastEditors : stark1898y 1658608470@qq.com - * @LastEditTime : 2024-12-15 10:40:07 + * @LastEditTime : 2024-12-16 21:00:37 * @FilePath : \BLE_TYQ_CH592F\BSP\inc\bsp_valve.h * @Description : * @@ -13,11 +13,16 @@ #include "CONFIG.h" +extern tmosTaskID vavle_task_id; + + #define VAVLE_RX_DATA_EVT (0x0001 << 0) #define VAVLE_TX_DATA_EVT (0x0001 << 1) #define VAVLE_CLOSE_START_EVT (0x0001 << 2) // 鍏抽榾锛屽紑濮嬪厖鐢 -#define VAVLE_CLOSE_END_EVT (0x0001 << 2) // 鍏抽榾锛屽紑濮嬪厖鐢 +#define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 鍏抽榾锛屽姩浣 +#define VAVLE_CLOSE_END_EVT (0x0001 << 4) // 鍏抽榾缁撴潫 + #define CHARGE_TIME_MS 1000 @@ -35,11 +40,6 @@ typedef enum kCmdData, } TeFrameCmd; -// typedef enum -// { - -// } TeCmdIndex; - typedef struct __attribute__((packed)) { TeFrameCmd cmd; // CMD/DATA @@ -51,9 +51,11 @@ typedef struct __attribute__((packed)) typedef struct __attribute__((packed)) { uint8_t len; - uint8_t buf[128]; + uint8_t buf[64]; } TsRawFrameData; +extern TsRawFrameData RelyData; + // 闃闂ㄧ被鍨 typedef enum { @@ -62,31 +64,41 @@ typedef enum kDcf, } TeVavleType; +typedef enum +{ + kUnknown = 0, + kClosed, + kOpened, +} TeValveSwitchStatus; + typedef struct __attribute__((packed)) { // uint8_t status; // 1B 闃闂ㄥ伐浣滅姸鎬 瓒呮瑺鍘嬨佽繃娴 // uint8_t connct_status; // 1B 闃闂ㄨ繛鎺ョ姸鎬 锛堢數纾侀榾BLE鎺у埗鐩掞級 0=鏈繛鎺 1=宸茶繛鎺 - uint8_t switch_status; // 1B 闃闂ㄥ紑鍏崇姸鎬 0=鏈煡 1=鍏抽棴 2=鍏抽棴杩囷紝鏈寜鎸夐敭鎭㈠ 3=鍏抽棴杩囷紝鎸変笅浜嗘仮澶嶉敭 4=鎵撳紑 + uint8_t switch_status; // 1B 闃闂ㄥ紑鍏崇姸鎬 0=鏈煡 1=鍏抽棴=鍏抽棴杩囷紝鏈寜鎸夐敭鎭㈠ 2=鍏抽棴杩囷紝鎸変笅浜嗘仮澶嶉敭 = 鎵撳紑 int8_t temp; // 1B 闃闂ㄦ俯搴 鏈夌鍙锋暣鏁 25 鈩 uint32_t in_pressure; // 4B 闃闂ㄥ叆鍙e帇鍔 Pa uint32_t out_pressure; // 4B 闃闂ㄥ嚭鍙e帇鍔 Pa uint32_t atm_pressure; // 4B 闃闂ㄥぇ姘斿帇鍔 Pa - uint8_t type; // 闃闂ㄧ被鍨 + uint8_t type; // 闃闂ㄧ被鍨 uint8_t bat; // 1B 鐢垫睜鐢靛帇 30=3V,18=1.8V - uint8_t hum; // 1B 闃闂ㄦ箍搴 %RH - uint8_t rssi; + uint8_t humi; // 1B 闃闂ㄦ箍搴 %RH + int8_t rssi; } TsValveData; +extern TsValveData gValveData; uint8_t CheckSum(const uint8_t *data, size_t len); void BSP_VAVLE_Init(void); -TsFrameData* BSP_VAVLE_GetFrameData(uint8_t *data, uint16_t len); +TsFrameData* BSP_VAVLE_GetFrameData(uint8_t *data, uint8_t len); uint8_t GenerateRawFrame(TsRawFrameData *pRawData, uint8_t cmd, const uint8_t *p_src, uint8_t src_len); -void BSP_VALVE_Generate_Data(TsRawFrameData *pRawData, uint8_t switch_status, uint8_t bat, int8_t temp, uint8_t hum); +void BSP_VALVE_Generate_Data(TsRawFrameData *pRawData, uint8_t switch_status, uint8_t bat, int8_t temp, uint8_t humi); void BSP_VALVE_Generate_ValveResponse(TsRawFrameData *pRawData, TeFrameCmd cmd, uint8_t status); +void BSP_VALVE_Generate_UploadData(TsRawFrameData *pRawData); + #endif // ! __BSP_VALVE_H__ diff --git a/BSP/src/bsp_adc.c b/BSP/src/bsp_adc.c index afeadb5..189fa08 100644 --- a/BSP/src/bsp_adc.c +++ b/BSP/src/bsp_adc.c @@ -25,28 +25,9 @@ uint16_t min_number = 0; uint16_t max_number = 0; double voltage = 0; -void BSP_ADC_Init(void) +uint8_t BSP_ReadVbat(void) { uint8_t i; - -#if 0 - // 卤10C锛屾病鍟ュ弬鑰冧环鍊 - /* 娓╁害閲囨牱骞惰緭鍑 */ - logDebug("\n1.Temperature sampling...\n"); - ADC_InterTSSampInit(); - for (i = 0; i < 20; i++) - { - adcBuff[i] = ADC_ExcutSingleConver(); // 杩炵画閲囨牱20娆 - } - for (i = 0; i < 20; i++) - { - uint32_t C25 = 0; - C25 = (*((PUINT32)ROM_CFG_TMP_25C)); - logDebug("%d %d %d \n", adc_to_temperature_celsius(adcBuff[i]), adcBuff[i], C25); - } -#endif - -#if 1 // VBAT uint32_t CountBat = 0; ADC_InterBATSampInit(); @@ -67,8 +48,38 @@ void BSP_ADC_Init(void) } logDebug("min_number = %d, max_number = %d", min_number, max_number); CountBat = (CountBat - min_number - max_number) / 18; // 鍒犻櫎鏈灏忎笌鏈澶у - logDebug("AverageCountBat = %d", CountBat); + uint8_t vbat = (uint8_t)(CountBat / 100); + logDebug("AverageCountBat = %dmV, vbat = %d(100mV)", CountBat, vbat); + + //缂╁皬鍒100mV + return vbat; +} + +void BSP_ADC_Init(void) +{ +#if 1 + // logDebug(); #endif + logDebug("ADC init"); + +#if 0 + // 卤10C锛屾病鍟ュ弬鑰冧环鍊 + /* 娓╁害閲囨牱骞惰緭鍑 */ + logDebug("\n1.Temperature sampling...\n"); + ADC_InterTSSampInit(); + for (i = 0; i < 20; i++) + { + adcBuff[i] = ADC_ExcutSingleConver(); // 杩炵画閲囨牱20娆 + } + for (i = 0; i < 20; i++) + { + uint32_t C25 = 0; + C25 = (*((PUINT32)ROM_CFG_TMP_25C)); + logDebug("%d %d %d \n", adc_to_temperature_celsius(adcBuff[i]), adcBuff[i], C25); + } +#endif + + #if 0 // 榛樿鎯呭喌涓嬶紝ADC 寮曡剼鍜屾墍鍦 GPIO 寮曡剼鐨勬暟瀛楀姛鑳芥槸鍚屾椂瀛樺湪鐨 diff --git a/BSP/src/bsp_i2c.c b/BSP/src/bsp_i2c.c index 6ea2fc8..5ad5595 100644 --- a/BSP/src/bsp_i2c.c +++ b/BSP/src/bsp_i2c.c @@ -3,6 +3,8 @@ #include "bsp_uart.h" #include "log.h" +#include "bsp_valve.h" + #undef LOG_ENABLE #define LOG_ENABLE 1 @@ -380,6 +382,7 @@ uint8_t GXHTC3C_GetTempHumi(float *humi, float *temp) return 0; } +#if 0 void GXHTC3C_Read(void) { int ret; @@ -399,6 +402,31 @@ void GXHTC3C_Read(void) GXHTC3C_Sleep(); } +#endif + +int BSP_ReadTempHumi(float *humi, float *temp) +{ + int ret; + + GXHTC3C_Wakeup(); + DelayMs(1); + + GXHTC3C_GetStart(); + DelayMs(3); + float _humi, _temp; + ret = GXHTC3C_GetTempHumi(&_humi, &_temp); + if (ret == 0) + { + *humi = _humi; + *temp = _temp; + // gValveData.temp = (int8_t)temp; + // gValveData.humi = (uint8_t)humi; + logDebug("humi %.2f %, temp %.2f C", *humi, *temp); + } + GXHTC3C_Sleep(); + + return ret; +} void GXHTC3C_Init(void) { @@ -407,26 +435,9 @@ void GXHTC3C_Init(void) int ret; GXHTC3C_Sleep(); - DelayMs(100); - GXHTC3C_Wakeup(); - DelayMs(20); - - GXHTC3C_GetStart(); - DelayMs(20); - float humi, temp; - ret = GXHTC3C_GetTempHumi(&humi, &temp); - if (ret == 0) - { - // logDebug("humi %.2f %, temp %.2f C", humi, temp); - } - - GXHTC3C_Sleep(); - - for (uint8_t i = 0; i < 3; i++) - { - GXHTC3C_Read(); - } + float _humi, _temp; + BSP_ReadTempHumi(&_humi, &_temp); #endif } diff --git a/BSP/src/bsp_valve.c b/BSP/src/bsp_valve.c index fe34fb3..a3ecf59 100644 --- a/BSP/src/bsp_valve.c +++ b/BSP/src/bsp_valve.c @@ -2,22 +2,12 @@ * @Author : stark1898y 1658608470@qq.com * @Date : 2024-12-15 15:01:15 * @LastEditors : stark1898y 1658608470@qq.com - * @LastEditTime : 2024-12-15 16:31:46 - * @FilePath : \BLE_TYQ_CH592F - 鍓湰\BSP\src\bsp_valve.c + * @LastEditTime : 2024-12-16 21:11:32 + * @FilePath : \BLE_TYQ_CH592F\BSP\src\bsp_valve.c * @Description : * * Copyright (c) 2024 by yzy, All Rights Reserved. */ -/* - * @Author: mbw - * @Date: 2024-12-09 11:40:10 - * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2024-12-11 15:43:47 - * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_valve.c - * @Description: - * - * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. - */ #include "bsp_valve.h" #include "bsp_flash.h" @@ -27,15 +17,20 @@ #include "bsp_uart.h" #include "log.h" -#undef LOG_ENABLE -#define LOG_ENABLE 0 +#include "peripheral.h" + +#undef LOG_ENABLE +#define LOG_ENABLE 1 #undef LOG_TAG #define LOG_TAG "BSP_VALVE" -//瀛樺偍 褰撳墠task id 鐨勫叏灞鍙橀噺 -tmosTaskID vavle_task_id = INVALID_TASK_ID; +TsValveData gValveData = {0}; +TsRawFrameData RelyData; + +// 瀛樺偍 褰撳墠task id 鐨勫叏灞鍙橀噺 +tmosTaskID vavle_task_id = INVALID_TASK_ID; /** * @description: 浠庡抚璧峰绗﹀紑濮嬪埌鏍¢獙鐮佷箣鍓嶆墍鏈夊瓧鑺傜殑鍜岀殑妯256锛屽嵆鍚勫瓧鑺備笉璁¤秴杩255鐨勬孩鍑哄肩殑浜岃繘鍒剁畻鏈拰銆 @@ -110,10 +105,10 @@ TsFrameData *HR_GetFrameData(const uint8_t *p_src, const uint8_t src_len) } #endif -TsFrameData* BSP_VAVLE_GetFrameData(uint8_t *data, uint16_t len) +TsFrameData *BSP_VAVLE_GetFrameData(uint8_t *data, uint8_t len) { - int ret = 0; - uint16_t index = 0; + int ret = 0; + uint16_t index = 0; TsFrameData *get_buffer = NULL; // 瑙f瀽鎺ユ敹鍒扮殑鏁版嵁甯э紝鍏堝鎵続A寮澶达紝鐒跺悗鍐嶆壘AA涓嬩竴涓瓧鑺傦紝鍏朵唬琛ㄤ簡鏁版嵁闀垮害锛岀劧鍚庢壘鍒颁唬琛ㄩ暱搴︾殑鍊肩殑闀垮害鐨勪笅涓浣嶏紝鍏朵负鏍¢獙鐮侊紝鏍¢獙鐮佸悗涓虹粨鏉熺爜0x55锛 @@ -145,8 +140,8 @@ TsFrameData* BSP_VAVLE_GetFrameData(uint8_t *data, uint16_t len) // return 3; } - uint8_t check_sum = data[index + 3 + data_len]; // 璇诲彇鏍¢獙鐮 - uint8_t calculated_sum = CheckSum(&data[index], data_len + 3); // 璁$畻鏍¢獙鐮 + uint8_t check_sum = data[index + 3 + data_len]; // 璇诲彇鏍¢獙鐮 + uint8_t calculated_sum = CheckSum(&data[index], data_len + 3); // 璁$畻鏍¢獙鐮 if (check_sum != calculated_sum) { logError("鏁版嵁甯ф牎楠岀爜閿欒 check_sum = %02X, calculated_sum = %02X", check_sum, calculated_sum); @@ -170,9 +165,9 @@ TsFrameData* BSP_VAVLE_GetFrameData(uint8_t *data, uint16_t len) return NULL; } - get_buffer->cmd = data[index + 1]; + get_buffer->cmd = data[index + 1]; get_buffer->len = data_len; -// get_buffer->data = data; + // get_buffer->data = data; if (data_len > 0) { @@ -216,73 +211,111 @@ uint8_t GenerateRawFrame(TsRawFrameData *pRawData, uint8_t cmd, const uint8_t *p return 0; } -void BSP_VALVE_Generate_Data(TsRawFrameData *pRawData, uint8_t switch_status, uint8_t bat, int8_t temp, uint8_t hum) +void BSP_VALVE_Generate_UploadData(TsRawFrameData *pRawData) +{ + GenerateRawFrame(pRawData, kCmdData, (uint8_t *)&gValveData, sizeof(gValveData)); + // logHexDumpAll(&pRawData->buf[0], pRawData->len); +} + +void BSP_VALVE_Generate_Data(TsRawFrameData *pRawData, uint8_t switch_status, uint8_t bat, int8_t temp, uint8_t humi) { TsValveData ValveData; ValveData.switch_status = 0; - ValveData.temp = temp; // 闃闂ㄦ俯搴 鏈夌鍙锋暣鏁 25 鈩 + ValveData.temp = temp; // 闃闂ㄦ俯搴 鏈夌鍙锋暣鏁 25 鈩 - ValveData.in_pressure = 1.6 * 1000000; - ValveData.out_pressure = 3000; - ValveData.atm_pressure = 96000; + ValveData.in_pressure = 0; + ValveData.out_pressure = 0; + ValveData.atm_pressure = 0; - ValveData.type = kTyq; // 闃闂ㄧ被鍨 - ValveData.bat = bat; // 鐢垫睜鐢靛帇 30=3V,18=1.8V - ValveData.hum = hum; // 闃闂ㄦ箍搴 %RH + ValveData.type = kTyq; // 闃闂ㄧ被鍨 + ValveData.bat = bat; // 鐢垫睜鐢靛帇 30=3V,18=1.8V + ValveData.humi = humi; // 闃闂ㄦ箍搴 %RH ValveData.rssi = 0; - GenerateRawFrame(pRawData, kCmdData, (uint8_t*)&ValveData, sizeof(ValveData)); + GenerateRawFrame(pRawData, kCmdData, (uint8_t *)&ValveData, sizeof(ValveData)); // logHexDumpAll(&pRawData->buf[0], pRawData->len); } void BSP_VALVE_Generate_ValveResponse(TsRawFrameData *pRawData, TeFrameCmd cmd, uint8_t status) { uint8_t data = 0; - data = status; + data = status; GenerateRawFrame(pRawData, cmd, &data, 1); // logHexDumpAll(&pRawData->buf[0], pRawData->len); } void BSP_CloseValve(void) { - // EMV_CHARGE - EMV_CHARGE_EN; - logDebug("EMV_CHARGE_EN"); - DelayMs(1000); - - EMV_CHARGE_OFF_DEINIT; - logDebug("EMV_CHARGE_OFF_DEINIT 500 ms"); - - // EMV_CTRL - EMV_ON; - logDebug("EMV_ON\n"); DelayMs(100); } -static void VAVLE_Task_ProcessTmosMsg(tmos_event_hdr_t *pMsg) +static void VAVLE_Task_ProcessTmosMsg(uint8_t *p_rev_msg) { - switch (pMsg->event) + if (p_rev_msg) { - default: - logDebug("pMsg->event %04x", pMsg->event); - break; +#if 1 + TsFrameData *HostFrameData = BSP_VAVLE_GetFrameData(&p_rev_msg[1], p_rev_msg[0]); + if (HostFrameData != NULL) + { + // logHexDumpAll(&HostFrameData->data[0], HostFrameData->len); // 鏁版嵁娈 + switch (HostFrameData->cmd) + { + case kCmdCfg: + // uint8_t data_buf[64] = {0}; + // tmos_memset(data_buf, 0, sizeof(data_buf)); + // 澶勭悊鏁版嵁甯 + logDebug("kCmdCfg"); + break; + case kCmdCloseVavle: + logDebug("kCmdCloseVavle"); + tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT); + + // TODO:娉ㄦ剰杩欓噷 + + // tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT); + // // TODO: 鍏抽榾鍔ㄤ綔 + // peripheralChar4Notify((uint8_t *)&RawData.buf[0], RawData.len); + break; + + case kCmdOpenVavle: + logDebug("kCmdOpenVavle"); + + // BSP_UART1_TxLoop(); + break; + default: + logError("鏃犳晥鐨勫懡浠"); + // logHexDumpAll(data, len); + break; + } + } + else + { + logError("鏁版嵁甯цВ鏋愬け璐"); + } + tmos_msg_deallocate((uint8_t *)HostFrameData); + HostFrameData = NULL; +#endif + } + else + { + logError("pMsg is NULL"); } } -//task鐨別vent澶勭悊鍥炶皟鍑芥暟,闇瑕佸湪娉ㄥ唽task鏃跺,浼犺繘鍘 -static uint16_t VAVLE_Task_ProcessEvent( uint8_t task_id, uint16_t events ) +// task鐨別vent澶勭悊鍥炶皟鍑芥暟,闇瑕佸湪娉ㄥ唽task鏃跺,浼犺繘鍘 +static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) { if (events & SYS_EVENT_MSG) { - uint8_t *pMsg; - if ((pMsg = tmos_msg_receive(vavle_task_id)) != NULL) + uint8_t *p_rev_msg; + if ((p_rev_msg = tmos_msg_receive(vavle_task_id)) != NULL) { - VAVLE_Task_ProcessTmosMsg((tmos_event_hdr_t *)pMsg); + VAVLE_Task_ProcessTmosMsg(p_rev_msg); // Release the TMOS message - tmos_msg_deallocate(pMsg); + tmos_msg_deallocate(p_rev_msg); } // return unprocessed events return (events ^ SYS_EVENT_MSG); @@ -303,15 +336,48 @@ static uint16_t VAVLE_Task_ProcessEvent( uint8_t task_id, uint16_t events ) { logDebug("VAVLE_CLOSE_START_EVT"); - //寮濮嬩竴涓畾鏃秂vent,1s鍚庝骇鐢,褰撳墠璇彞鍙細浜х敓涓娆vent - //鍙互鍦╡vent浜х敓鍚庡幓寮鍚痚vent,鍙互鏄埆鐨則ask鐨,涔熷彲浠ユ槸褰撳墠task鐨別vent - tmos_start_task(vavle_task_id, VAVLE_CLOSE_END_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS)); + BOOST_EN; + DelayMs(1); + + // EMV_CHARGE + EMV_CHARGE_EN; + logDebug("EMV_CHARGE_EN"); + + // 寮濮嬩竴涓畾鏃秂vent,1s鍚庝骇鐢,褰撳墠璇彞鍙細浜х敓涓娆vent + // 鍙互鍦╡vent浜х敓鍚庡幓寮鍚痚vent,鍙互鏄埆鐨則ask鐨,涔熷彲浠ユ槸褰撳墠task鐨別vent + tmos_start_task(vavle_task_id, VAVLE_CLOSE_ACTION_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS)); return (events ^ VAVLE_CLOSE_START_EVT); } + if (events & VAVLE_CLOSE_ACTION_EVT) + { + logDebug("VAVLE_CLOSE_ACTION_EVT"); + // 鍏抽榾鍔ㄤ綔 + EMV_CHARGE_OFF_DEINIT; + logDebug("EMV_CHARGE_OFF_DEINIT"); + + // EMV_CTRL + EMV_ON; + logDebug("EMV_ON"); + tmos_start_task(vavle_task_id, VAVLE_CLOSE_END_EVT, MS1_TO_SYSTEM_TIME(100)); + + return (events ^ VAVLE_CLOSE_ACTION_EVT); + } + if (events & VAVLE_CLOSE_END_EVT) + { + gValveData.switch_status = kClosed; + + tmos_memset(&RelyData, 0, sizeof(RelyData)); + BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1); + tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT); + + logDebug("VAVLE_CLOSE_END_EVT"); + return (events ^ VAVLE_CLOSE_END_EVT); + } + // Discard unknown events return 0; } @@ -320,6 +386,17 @@ void BSP_VAVLE_Init(void) { vavle_task_id = TMOS_ProcessEventRegister(VAVLE_Task_ProcessEvent); + tmos_memset(&gValveData, 0, sizeof(gValveData)); + + gValveData.switch_status = kUnknown; + gValveData.temp = -100; + gValveData.in_pressure = 0; + gValveData.out_pressure = 0; + gValveData.atm_pressure = 0; + + gValveData.type = kTyq; + gValveData.bat = 0; + // //绔嬪嵆寮濮嬩竴涓猠vent // tmos_set_event(vavle_task_id, VAVLE_RX_DATA_EVT); diff --git a/README.md b/README.md index d6c7456..a488e9b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ # [BLE_TYQ_CH592F](https://gitee.com/SXDT-Embedded/ble_-tyq_-ch592-f) 鍩轰簬鈥淐H592EVT_V1-4鈥 + + +![1734342111476](image/README/1734342111476.png) + +![1734342096541](image/README/1734342096541.png) diff --git a/image/README/1734342096541.png b/image/README/1734342096541.png new file mode 100644 index 0000000000000000000000000000000000000000..13954fb7d908c3b9fee1883f0d48b2d9b37ba71a GIT binary patch literal 46786 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�>vq*1wZsl<}J_Nk4Gm|PAk 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

n2VZh9V-utYDgz~C}}Okr}r=1=I{ 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 JpPuM>{U7`dz4`zE literal 0 HcmV?d00001 diff --git a/image/README/1734342111476.png b/image/README/1734342111476.png new file mode 100644 index 0000000000000000000000000000000000000000..13954fb7d908c3b9fee1883f0d48b2d9b37ba71a GIT binary patch literal 46786 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�>vq*1wZsl<}J_Nk4Gm|PAk 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

n2VZh9V-utYDgz~C}}Okr}r=1=I{ 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 JpPuM>{U7`dz4`zE literal 0 HcmV?d00001