diff --git a/App/Inc/uart_dev.h b/App/Inc/uart_dev.h index 911d42a..977f9e1 100644 --- a/App/Inc/uart_dev.h +++ b/App/Inc/uart_dev.h @@ -41,6 +41,7 @@ void init_term_uart(); void init_lora_uart(); void uart_close(uartIndex_e uart_index); void term_printf(char *format, ...); +void uart_dev_write(device_handle device, void *data, int len); int term_uart_readln(u_int8_t *buff, int buff_size, u_int32_t timeout_ms); int uart_dev_char_present(device_handle device); char uart_dev_in_char(device_handle device); diff --git a/App/Src/frt_protocol.c b/App/Src/frt_protocol.c index e131384..e1d81b3 100644 --- a/App/Src/frt_protocol.c +++ b/App/Src/frt_protocol.c @@ -397,7 +397,7 @@ static int uart_read_frt_climate_pack(device_handle uart_handle,u_int8_t *buff, c = uart_dev_in_char(uart_handle); buff[i] = c; } - + uart_dev_write(g_term_uart_handle, buff, sizeof(buff));//数据发回调试串口 int start_index = buff_size; // 初始化为一个不可能的值 // 遍历数组以找到符合条件的字节对 diff --git a/App/Src/uart_dev.c b/App/Src/uart_dev.c index 600d0cd..363c43a 100644 --- a/App/Src/uart_dev.c +++ b/App/Src/uart_dev.c @@ -299,7 +299,7 @@ void init_term_uart() * @brief ʼRS485. * @retval None */ -void init_rs485_uart() +void init_lora_uart() { g_lora_uart_handle = uart_dev_init(LORA_UART_INDEX, lora_in_buff, sizeof(lora_in_buff)); } diff --git a/Core/Src/main.c b/Core/Src/main.c index 82c694b..8f58a0a 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -31,6 +31,7 @@ #include "uart_dev.h" #include "frt_protocol.h" +#include "e22.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -236,14 +237,16 @@ int main(void) /* USER CODE END SysInit */ /* Initialize all configured peripherals */ - MX_USART1_UART_Init(9600); - MX_USART3_UART_Init(9600); HAL_GPIO_WritePin(RF_PWR_CTRL_GPIO_Port, RF_PWR_CTRL_Pin, GPIO_PIN_SET);//使能e22 MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); MX_TIM6_Init(); MX_DAC1_Init(); + +// 串口初始化 + init_lora_uart(); + init_term_uart(); /* USER CODE BEGIN 2 */ // HAL_PWREx_EnterSTOP0Mode(PWR_STOPENTRY_WFI); @@ -260,21 +263,21 @@ int main(void) HAL_ADC_Start_DMA(&hadc1,(uint32_t *)adc_value,DATA_LEN * 2); HAL_TIM_Base_Start(&htim6); +// 初始化E22 + e22_init(); //HAL_Delay(500); /* USER CODE END 2 */ - /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ - + /* USER CODE BEGIN 3 */ // HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,2048); //HAL_ADC_Start_DMA(&hadc1,(uint32_t *)result_data,DATA_LEN); // HAL_GPIO_TogglePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin); - read_and_process_uart_data(g_term_uart_handle); read_and_process_uart_data(g_lora_uart_handle); HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI); diff --git a/Drivers/e22/e22.c b/Drivers/e22/e22.c index 43d51d7..5d2e2b2 100644 --- a/Drivers/e22/e22.c +++ b/Drivers/e22/e22.c @@ -1,18 +1,19 @@ #include "e22.h" #include "main.h" #include "inflash.h" +#include "uart_dev.h" uint8_t e22_state = 0; //c0 00 09 0000 00 64 00 0b 41 00 00 WOR㷢 //c0 00 09 0000 00 64 00 0b 49 00 00 WOR /* */ -uint8_t e22_config_data[12] = { 0xc0, 0x00, 0x09, //д0ʼ9 +e22_config_pack e22_config_data = { 0xc0, 0x00, 0x09, //д0ʼ9 0x00, 0x30, //ַ 0x00, //ID 0x64, //96008N19.6k 0x00, 0x0A, //ŵ10 - 0x49, + 0x40, 0x00, 0x00}; // static unsigned short CRC16(unsigned char *arr_buff, unsigned char len) @@ -37,24 +38,28 @@ void lora_set_mode_normal() { HAL_GPIO_WritePin(RF_M0_GPIO_Port, RF_M0_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RF_M1_GPIO_Port, RF_M1_Pin, GPIO_PIN_RESET); + HAL_Delay(200); } void lora_set_mode_wor() { HAL_GPIO_WritePin(RF_M0_GPIO_Port, RF_M0_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(RF_M1_GPIO_Port, RF_M1_Pin, GPIO_PIN_RESET); + HAL_Delay(200); } void lora_set_mode_config() { HAL_GPIO_WritePin(RF_M0_GPIO_Port, RF_M0_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RF_M1_GPIO_Port, RF_M1_Pin, GPIO_PIN_SET); + HAL_Delay(200); } void lora_set_mode_sleep() { HAL_GPIO_WritePin(RF_M0_GPIO_Port, RF_M0_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(RF_M1_GPIO_Port, RF_M1_Pin, GPIO_PIN_SET); + HAL_Delay(200); } void lora_set_mode(e22_mode mode) @@ -63,19 +68,15 @@ void lora_set_mode(e22_mode mode) { case NORMAL: lora_set_mode_normal(); - HAL_Delay(200); break; case WOR: lora_set_mode_wor(); - HAL_Delay(200); break; case CONFIG: lora_set_mode_config(); - HAL_Delay(200); break; case SLEEP: lora_set_mode_sleep(); - HAL_Delay(200); break; default: break; @@ -84,16 +85,7 @@ void lora_set_mode(e22_mode mode) void e22_init() { - uint8_t init_cmd[] = {0xC0, - 0x00, 0x09, - 0x00, 0x30, - 0x00, - 0x64, - 0x00, - 0x0A, - 0x48, - 0x00, 0x00 - }; - lora_set_mode(CONFIG); + uart_dev_write(g_term_uart_handle, (void *)&e22_config_data, sizeof(e22_config_data)); + lora_set_mode(WOR); } \ No newline at end of file diff --git a/Drivers/e22/e22.h b/Drivers/e22/e22.h index b966f81..feba667 100644 --- a/Drivers/e22/e22.h +++ b/Drivers/e22/e22.h @@ -16,15 +16,17 @@ extern "C" { #pragma pack(push,1) typedef struct _e22_config_pack{ unsigned char func; - unsigned char func; - unsigned char func; - unsigned char addr_h; - unsigned char addr_l; - unsigned char net_addr; - unsigned char baudRate; - unsigned char packetFragments; - unsigned char channel; - unsigned char transmissionMode; + unsigned char start_add; + unsigned char data_len; + unsigned char ADDH; + unsigned char ADDL; + unsigned char NETID; + unsigned char REG0; + unsigned char REG1; + unsigned char REG2; + unsigned char REG3; + unsigned char CRYPT_H; + unsigned char CRYPT_L; }e22_config_pack; #pragma pack(pop) @@ -34,15 +36,9 @@ extern UART_HandleTypeDef huart3; extern void Serial_SendArray_3(uint8_t *Array, uint16_t Length); -void e22_config(void); +void e22_init(); void lora_set_mode(e22_mode mode); -void e22_config_get(void); -void set_addr(uint8_t buf); -void set_net_id(uint8_t buf); -extern uint16_t MB_register[40]; -extern uint8_t Transfer_Data_3[DATA_LEN_MAX]; // -extern uint8_t Receive_Data_3[DATA_LEN_MAX]; // #ifdef __cplusplus } diff --git a/EWARM/STM32L431_XL_CURRENT_V10.ewp b/EWARM/STM32L431_XL_CURRENT_V10.ewp index dcb2644..5d3e896 100644 --- a/EWARM/STM32L431_XL_CURRENT_V10.ewp +++ b/EWARM/STM32L431_XL_CURRENT_V10.ewp @@ -362,6 +362,7 @@ $PROJ_DIR$\..\Middlewares\ST\ARM\DSP\Lib $PROJ_DIR$\..\App\Inc $PROJ_DIR$\..\Drivers\RingQueue + $PROJ_DIR$\..\Drivers\e22