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