From 9b061453419d0663fcbb086e62e7ee832436356d Mon Sep 17 00:00:00 2001 From: YuanHongbin <975559679@qq.com> Date: Mon, 11 May 2026 10:10:13 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81sx127x.h=E5=A2=9E=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E9=A2=91=E7=8E=87=E5=8F=AF=E8=B0=83=E5=87=BD=E6=95=B0=202?= =?UTF-8?q?=E3=80=81=E5=88=A0=E9=99=A4=E4=BA=86bsp.h=E7=9A=84lora=E9=80=9A?= =?UTF-8?q?=E9=81=93=E9=85=8D=E7=BD=AE=E5=AE=8F=E5=AE=9A=E4=B9=89=203?= =?UTF-8?q?=E3=80=81=E5=88=A0=E9=99=A4=E4=BA=86SGCP.h=E4=B8=ADMAC=E7=9A=84?= =?UTF-8?q?=E7=BB=84=E6=88=90=E5=8F=82=E6=95=B0=E5=AE=9A=E4=B9=89=EF=BC=8C?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=9C=A8main.c=E4=B8=AD=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=EF=BC=8C=E5=BD=93=E4=BD=BF=E7=94=A8bootloade?= =?UTF-8?q?r=E6=97=B6=E9=80=9A=E8=BF=87=E8=AF=BB=E5=8F=96BootPara=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BD=93=E5=8F=82=E6=95=B0=E8=8E=B7=E5=8F=96=E6=9C=AC?= =?UTF-8?q?=E6=9C=BAMAC=EF=BC=8C=E5=90=A6=E5=88=99=E5=B0=86=E9=80=9A?= =?UTF-8?q?=E8=BF=87App=E7=A8=8B=E5=BA=8F=E8=87=AA=E5=AE=9A=E4=B9=89MAC=20?= =?UTF-8?q?4=E3=80=81BootPara=E7=BB=93=E6=9E=84=E4=BD=93=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK/hc32l17x.uvoptx | 30 ++++++++++++++++++++++++++---- Module/LORA/sx127x.h | 1 + source/inc/SGCP.h | 10 ++-------- source/inc/Update.h | 4 ++++ source/inc/bsp.h | 2 +- source/src/SGCP.c | 10 +++++++--- source/src/Update.c | 2 +- source/src/main.c | 36 ++++++++++++++++++++++++++++++------ 8 files changed, 72 insertions(+), 23 deletions(-) diff --git a/MDK/hc32l17x.uvoptx b/MDK/hc32l17x.uvoptx index 942295c..8c07dba 100644 --- a/MDK/hc32l17x.uvoptx +++ b/MDK/hc32l17x.uvoptx @@ -103,7 +103,7 @@ 1 0 0 - 12 + 6 @@ -114,7 +114,7 @@ - BIN\CMSIS_AGDI.dll + Segger\JL2CM3.dll @@ -153,7 +153,24 @@ - + + + 0 + 0 + 43 + 1 +
41708
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\source\src\Update.c + + \\hc32l17x\../source/src/Update.c\43 +
+
0 @@ -250,6 +267,11 @@ 1 App.LaserFlag,0x0A + + 19 + 1 + BLPara,0x10 + @@ -287,7 +309,7 @@ 0 0 0 - 0 + 1 0 0 0 diff --git a/Module/LORA/sx127x.h b/Module/LORA/sx127x.h index e977a1a..8d1936f 100644 --- a/Module/LORA/sx127x.h +++ b/Module/LORA/sx127x.h @@ -802,6 +802,7 @@ typedef struct { ////////////////////////////////////////////////////////////////////// void Sx1276LoRaLoopHandler(void); void Sx1276LoRaInit(void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen)); +void SX1276LoRaSetFreqHz(uint32_t dwFreqHz); void Sx1276LoRaSendBuffer(uint8_t* pucBuff, uint8_t ucLen); uint8_t SX1276LoRaReadChannel(void); boolean_t SX1276LoRaWriteChannel(uint8_t Channel); diff --git a/source/inc/SGCP.h b/source/inc/SGCP.h index 448f0dc..922650f 100644 --- a/source/inc/SGCP.h +++ b/source/inc/SGCP.h @@ -4,14 +4,8 @@ #define __SGCP_H #include "bsp.h" -#define WORK_MODE 1 //工作模式选择,0、本机为查询模式,1、本机为上报模式(低功耗) -#define SGCP_SELECT 1 //协议选择,0、本机为单个主设备接多个子设备,1、本机为单个主设备不接子设备,2、本机为单个子设备 -#define LocalDataLen sizeof(SGCP.DevData.LaserTracing)//本机设备数据长度 -#define LocalType LASER_TRACING //本机设备类型 -#define CommWay LORA //本机通讯方式 -#define DeviceSign MASTER //本机设备标志 -#define AddNumber (0x000017 + DeviceSign)//本机地址编号,数字部分对应唯一地址编号 -//09 00 01 00 00 00 +#define WORK_MODE 1//工作模式选择,0、本机为查询模式,1、本机为上报模式(低功耗) +#define SGCP_SELECT 1 //协议选择,0、本机为单个主设备接多个子设备,1、本机为单个主设备不接子设备,2、本机为单个子设备 typedef struct {//网关与主设备固定帧 uint8_t Header; diff --git a/source/inc/Update.h b/source/inc/Update.h index 2bf53aa..6b0a756 100644 --- a/source/inc/Update.h +++ b/source/inc/Update.h @@ -30,6 +30,9 @@ typedef struct { uint32_t PackageCnt; uint32_t AppSize; uint32_t Crc32Check; + uint32_t FirstRunFlag;//第一次运行 + uint8_t DevMac[6];//设备MAC + uint32_t LoraFreq;//Lora频率 }BootPara_t, *BootPara; //主机下发升级请求载荷结构体 @@ -58,4 +61,5 @@ typedef struct { //输出接口 void Update(uint8_t *PayLoad); void UpdateInit(void); +extern BootPara_t BLPara; #endif \ No newline at end of file diff --git a/source/inc/bsp.h b/source/inc/bsp.h index 377ecdf..3e52434 100644 --- a/source/inc/bsp.h +++ b/source/inc/bsp.h @@ -24,7 +24,7 @@ #define USE_SPI1 0 //SPI1开关,0、关闭,1、启用 #define USE_BOOTLOADER 1 //BOOTLOADER开关,0、关闭,1、启用 -#define USE_LORA_CH 1 //0为测试通道 +#define USE_LORA_CH 0 //0为测试通道 //<<---------------------------- MCU -------------------------------->> //< UART0 diff --git a/source/src/SGCP.c b/source/src/SGCP.c index e0240f8..c47421e 100644 --- a/source/src/SGCP.c +++ b/source/src/SGCP.c @@ -11,11 +11,15 @@ IROM1 串口升级打开USE_BOOTLOADER和点s文件中的LDR R2, =new_vect_table ;升级时打开 */ +uint32_t LocalType; //本机设备类型 +uint32_t CommWay; //本机通讯方式 +uint32_t DeviceSign; //本机设备标志 +uint32_t AddNumber; //本机地址编号,数字部分对应唯一地址编号 //09 00 01 00 00 00 -uint8_t LocalMAC[6] = {LocalType & 0xFF, (LocalType >> 8) & 0xFF, CommWay, (AddNumber >> 16) & 0xFF, (AddNumber >> 8) & 0xFF, AddNumber & 0xFF}; //本机MAC地址 +uint8_t LocalMAC[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};//本机MAC地址 uint8_t GatewayMAC[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //网关MAC地址,注册时全为0 -uint8_t LocalDataPack[LocalDataLen]; //本机数据包 - +uint8_t LocalDataPack[sizeof(SGCP.DevData.LaserTracing)]; //本机数据包 +uint8_t LocalDataLen = sizeof(SGCP.DevData.LaserTracing); //本机设备数据长度 SGCP_t SGCP; diff --git a/source/src/Update.c b/source/src/Update.c index ec791e3..eebee7a 100644 --- a/source/src/Update.c +++ b/source/src/Update.c @@ -1,7 +1,7 @@ #include "Update.h" #include "UartDebug.h" -static BootPara_t BLPara; +BootPara_t BLPara; /***************************************************************************************** * 函数名称: Update diff --git a/source/src/main.c b/source/src/main.c index 3475a40..c84835d 100644 --- a/source/src/main.c +++ b/source/src/main.c @@ -19,6 +19,11 @@ AppDetect_t App; +extern uint32_t LocalType; +extern uint32_t CommWay; +extern uint32_t DeviceSign; +extern uint32_t AddNumber; + extern uint8_t LocalMAC[6]; //鏈満MAC鍦板潃 extern uint8_t GatewayMAC[6]; //缃戝叧MAC鍦板潃锛屾敞鍐屾椂鍏ㄤ负0 extern uint8_t LocalDataPack[sizeof(SGCP.DevData.LaserTracing)]; //鏈満鏁版嵁鍖 //鏈満鏁版嵁鍖 @@ -46,7 +51,12 @@ static void AppInit(void) #if(USE_BOOTLOADER == 1) UpdateInit(); - + memcpy(&LocalMAC, &BLPara.DevMac[0], 6); + SX1276LoRaSetFreqHz(BLPara.LoraFreq); //Lora棰戠巼:433100000ul + 200000*N + LocalType = (BLPara.DevMac[0] | (BLPara.DevMac[1] << 8)); //鏈満璁惧绫诲瀷 + CommWay = BLPara.DevMac[2]; //鏈満閫氳鏂瑰紡 + DeviceSign = BLPara.DevMac[3] & 0x80; //鏈満璁惧鏍囧織 + AddNumber = ((BLPara.DevMac[3] << 16)+ (BLPara.DevMac[4] << 8) + BLPara.DevMac[5]) - 0x800000; //鏈満鍦板潃缂栧彿锛屾暟瀛楅儴鍒嗗搴斿敮涓鍦板潃缂栧彿 if(App.Para.FactoryFlag != 0x00) { App.Para.FactoryFlag = 0x00; @@ -56,8 +66,20 @@ static void AppInit(void) App.Para.CaliPara.YawZero = 0; SAVE_APP_PARA((uint32_t *)&App.Para); } +#elif + LocalType = LASER_TRACING; //鏈満璁惧绫诲瀷 + CommWay = LORA; //鏈満閫氳鏂瑰紡 + DeviceSign = MASTER; //鏈満璁惧鏍囧織 + AddNumber = 0x000023 + DeviceSign;//鏈満鍦板潃缂栧彿锛屾暟瀛楅儴鍒嗗搴斿敮涓鍦板潃缂栧彿 + SX1276LoRaSetFreqHz(CH0); //Lora棰戠巼:433100000ul + 200000*N + LocalMAC[0] = LocalType & 0xFF; //鏈満MAC鍦板潃 + LocalMAC[1] = (LocalType >> 8) & 0xFF; + LocalMAC[2] = CommWay; + LocalMAC[3] = (AddNumber >> 16) & 0xFF; + LocalMAC[4] = (AddNumber >> 8) & 0xFF; + LocalMAC[5] = AddNumber & 0xFF; #endif - + if(App.Para.RS485Addr > 16 || App.Para.RS485Addr < 1){ App.Para.RS485Addr = 1; } @@ -77,7 +99,7 @@ static void AppInit(void) DBG_LOG("\r\n\r\n"); DBG_LOG("****************************************************\r\n"); DBG_LOG("** **\r\n"); - DBG_LOG("** LaserTracing **\r\n"); + DBG_LOG("** LaserTracing **\r\n"); DBG_LOG("** SoftWare V:%d.%d **\r\n", SOFTWARE_VERSION / 10, SOFTWARE_VERSION % 10); DBG_LOG("** HardWare V:%d.%d **\r\n", HARDWARE_VERSION / 10, HARDWARE_VERSION % 10); DBG_LOG("** Compile: %s %s **\r\n", __DATE__, __TIME__); @@ -85,8 +107,10 @@ static void AppInit(void) DBG_LOG("****************************************************\r\n\r\n"); DBG_LOG("RS485Addr: %02X\r\n",App.Para.RS485Addr); DBG_LOG("LocalMAC: %02X %02X %02X %02X %02X %02X\r\n",LocalMAC[0], LocalMAC[1], LocalMAC[2], LocalMAC[3], LocalMAC[4], LocalMAC[5]); - DBG_LOG("CollectTime: %ds\r\n\r\n",(App.Para.Layout.CollectTime*30)); - + DBG_LOG("CollectTime: %ds\r\n",(App.Para.Layout.CollectTime*30)); + DBG_LOG("LoraFreq: %d\r\n\r\n",BLPara.LoraFreq); + //09 00 01 00 00 00 + LORAIntEnable(); Sx1276LoRaInit(LORA_RxCallBack); //< LORA鑺墖鍒濆鍖 FeedDog(); @@ -480,7 +504,7 @@ void SysTick_CallBack(void) void RtcIRQHander(void) { //SGCP.TimingAcquisition = true; //30S鏇存柊涓娆℃暟鎹 -#if USE_LORA_CH == 0 +#if USE_LORA_CH == CH0 App.Tcnt++;//涓鍒嗛挓寮鍚縺鍏3绉 if(App.Tcnt >= 2) {