From 2efab2862f756457e2bec5ab8a0422c2676c7e0d Mon Sep 17 00:00:00 2001 From: YuanHongbin <975559679@qq.com> Date: Wed, 20 May 2026 13:41:07 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81startup.s=E6=B1=87=E7=BC=96=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E7=9A=84=E4=B8=AD=E6=96=AD=E9=87=8D=E5=AE=9A?= =?UTF-8?q?=E5=90=91=E6=94=B9=E4=B8=BAifdef=EF=BC=8C=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=88=87=E6=8D=A2app=5Fdebug=E5=92=8Capp=5Fboot=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=98=AF=E5=90=A6=E7=BC=96=E8=AF=91=202=E3=80=81Sx127?= =?UTF-8?q?6Type=5Ft=20=E7=BB=93=E6=9E=84=E4=BD=93=E7=BB=99=E5=AE=9A?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E5=80=BC=203=E3=80=81lora=E9=80=9A=E9=81=93?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=8F=96=E6=B6=88=EF=BC=8C=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=91=E7=8E=87=E6=9D=A5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=80=9A=E9=81=93=204=E3=80=81=E5=A2=9E=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9lora=E5=8F=82=E6=95=B0=E7=9A=84=E5=87=BD?= =?UTF-8?q?=E6=95=B0=205=E3=80=81=E5=B0=86USE=5FBOOTLOADER=E7=9A=84?= =?UTF-8?q?=E5=AE=8F=E5=AE=9A=E4=B9=89=E6=9B=B4=E6=94=B9=E5=88=B0=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E9=A2=84=E7=BC=96=E8=AF=91define=206=E3=80=81?= =?UTF-8?q?=E5=B0=86BootPara=5Ft=E7=BB=93=E6=9E=84=E4=BD=93=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=88=B0bsp.h=E6=96=87=E4=BB=B6=E4=B8=8B=207=E3=80=81?= =?UTF-8?q?=E5=9C=A8bsp.h=E6=96=87=E4=BB=B6=E4=B8=8B=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BA=86LoraPara=5Fr=EF=BC=8CRS485Para=5Ft=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BD=93=E5=B9=B6=E5=A3=B0=E6=98=8E=208=E3=80=81=E4=B8=B2?= =?UTF-8?q?=E5=8F=A3=E5=B8=A6=E6=B3=A2=E7=89=B9=E7=8E=87=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=209=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BA=86MAIN=5FDBG=5FLOG=E5=92=8CDATA=5FDBG=5FLOG=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=89=93=E5=8D=B0=2010=E3=80=81Update.h=E7=9A=84boot?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=AE=9A=E4=B9=89=E5=9C=A8bsp.h=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=2011=E3=80=81=E5=BD=93=E5=B7=A5=E7=A8=8B=E6=98=AFapp?= =?UTF-8?q?=5Fboot=E6=97=B6=E8=B0=83=E8=AF=95=E5=8F=A3=E4=B8=BALpuart0?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E5=B7=A5=E7=A8=8B=E6=98=AFapp=5Fdebug?= =?UTF-8?q?=E6=97=B6=E8=B0=83=E8=AF=95=E5=8F=A3=E4=B8=BAuart0=2012?= =?UTF-8?q?=E3=80=81=E8=AE=BE=E5=A4=87Mac=E4=BB=8Ebootloader=E4=B8=AD?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E5=9C=B0=E5=9D=800x00002800=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=EF=BC=8C=E8=AE=BE=E5=A4=87=E7=B1=BB=E5=9E=8B=E3=80=81?= =?UTF-8?q?=E9=80=9A=E8=AE=AF=E6=96=B9=E5=BC=8F=E3=80=81=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=A0=87=E5=BF=97=E5=92=8C=E8=AE=BE=E5=A4=87=E5=BA=8F=E5=8F=B7?= =?UTF-8?q?=E4=BB=8E=E8=8E=B7=E5=8F=96=E5=88=B0=E7=9A=84mac=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E8=A7=A3=E6=9E=90=2013=E3=80=81debug=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=A2=9E=E5=8A=A0=E4=BA=86=E8=B0=83=E8=AF=95=E6=8C=87?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK/RTE/_HC32L17X_boot/RTE_Components.h | 21 + MDK/RTE/_HC32L17X_debug/RTE_Components.h | 21 + MDK/hc32l17x.uvoptx | 257 ++++++++- MDK/hc32l17x.uvprojx | 642 ++++++++++++++++++++++- MDK/startup_hc32l17x.s | 6 +- Module/LORA/sx127x.c | 106 +++- Module/LORA/sx127x.h | 12 +- Module/LaserTracing_Debug | 2 +- source/inc/SGCP.h | 4 +- source/inc/Update.h | 17 +- source/inc/bsp.h | 54 +- source/inc/main.h | 16 +- source/src/SGCP.c | 6 +- source/src/Update.c | 30 +- source/src/bsp.c | 32 +- source/src/main.c | 236 +++++---- 16 files changed, 1239 insertions(+), 223 deletions(-) create mode 100644 MDK/RTE/_HC32L17X_boot/RTE_Components.h create mode 100644 MDK/RTE/_HC32L17X_debug/RTE_Components.h diff --git a/MDK/RTE/_HC32L17X_boot/RTE_Components.h b/MDK/RTE/_HC32L17X_boot/RTE_Components.h new file mode 100644 index 0000000..20961b8 --- /dev/null +++ b/MDK/RTE/_HC32L17X_boot/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'hc32l17x' + * Target: 'HC32L17X_boot' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "HC32L170JATA.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK/RTE/_HC32L17X_debug/RTE_Components.h b/MDK/RTE/_HC32L17X_debug/RTE_Components.h new file mode 100644 index 0000000..727ddf7 --- /dev/null +++ b/MDK/RTE/_HC32L17X_debug/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'hc32l17x' + * Target: 'HC32L17X_debug' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "HC32L170JATA.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK/hc32l17x.uvoptx b/MDK/hc32l17x.uvoptx index 0b38e73..3f335ab 100644 --- a/MDK/hc32l17x.uvoptx +++ b/MDK/hc32l17x.uvoptx @@ -22,7 +22,7 @@ - HC32L17X + HC32L17X_debug 0x4 ARM-ADS @@ -75,7 +75,7 @@ 1 0 - 1 + 0 255 @@ -103,7 +103,7 @@ 1 0 0 - 6 + 12 @@ -114,7 +114,7 @@ - Segger\JL2CM3.dll + BIN\CMSIS_AGDI.dll @@ -125,7 +125,7 @@ 0 CMSIS_AGDI - -X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0FlashHC32L17X_128K.FLM -FS00 -FL020000 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM) + -X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO31 -FD20000000 -FC1000 -FN1 -FF0FlashHC32L17X_128K.FLM -FS00 -FL020000 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM) 0 @@ -153,24 +153,7 @@ - - - 0 - 0 - 60 - 1 -
15478
- 0 - 0 - 0 - 0 - 0 - 1 - ..\source\Src\main.c - - \\hc32l17x\../source/Src/main.c\60 -
-
+ 0 @@ -272,6 +255,224 @@ 1 BLPara,0x10 + + 20 + 1 + argv1,0x10 + + + + + 1 + 0 + 0x1fe00 + 0 + + + + + 2 + 2 + 0x20000f35 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + 1 + 0 + 0 + 2 + 10000000 + +
+
+ + + HC32L17X_boot + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\output\release\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 12 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + DLGUARM + + + + 0 + CMSIS_AGDI + -X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0FlashHC32L17X_128K.FLM -FS00 -FL020000 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0FlashHC32L17X_128K -FL020000 -FS00 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM) + + + 0 + JL2CM3 + -U4294967295 -O78 -S1 -ZTIFSpeedSel10000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0FlashHC32L17X_128K.FLM -FS00 -FL020000 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + + + + 0 + 1 + App,0x0A + + + 1 + 1 + LocalMAC + @@ -309,7 +510,7 @@ 0 0 0 - 1 + 0 0 0 0 @@ -679,7 +880,7 @@ Debug - 0 + 1 0 0 0 @@ -690,7 +891,7 @@ 0 0 0 - ..\Module\Debug\UartDebug.c + ..\Module\LaserTracing_Debug\UartDebug.c UartDebug.c 0 0 @@ -751,7 +952,7 @@ LORA - 1 + 0 0 0 0 @@ -759,7 +960,7 @@ 7 31 1 - 0 + 1 0 0 ..\Module\LORA\sx127x.c diff --git a/MDK/hc32l17x.uvprojx b/MDK/hc32l17x.uvprojx index 8c21bb1..5e1dee6 100644 --- a/MDK/hc32l17x.uvprojx +++ b/MDK/hc32l17x.uvprojx @@ -7,7 +7,598 @@ - HC32L17X + HC32L17X_debug + 0x4 + ARM-ADS + 6160000::V6.16::ARMCLANG + 6160000::V6.16::ARMCLANG + 1 + + + HC32L170JATA + HDSC + HDSC.HC32L17X.1.0.1 + https://raw.githubusercontent.com/hdscmcu/pack/master/ + IRAM(0x20000000,0x4000) IROM(0x00000000,0x20000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0FlashHC32L17X_128K -FS00 -FL020000 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM)) + 0 + $$Device:HC32L170JATA$Device\Include\HC32L170JATA.h + + + + + + + + + + $$Device:HC32L170JATA$SVD\HC32L170JATA.sfr + 1 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\output\ + hc32l17x + 1 + 0 + 1 + 1 + 1 + .\output\release\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 1 + + D:\Keil5\ARM\ARMCC\bin\fromelf.exe --bin -o .\output\app.bin .\output\hc32l17x.axf + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x0 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 3 + 0 + 0 + 1 + 1 + 0 + 4 + 5 + 0 + 0 + 0 + 0 + 0 + + + + + ..\mcu\common;..\source;..\driver\inc;..\source\inc;..\Module\LaserTracing_Debug;..\Module\lsm6dsl;..\Module\MMC5983;..\Module\LORA;..\Module\Imu + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + template.sct + + + --keep=*Handler + + + + + + + + common + + + startup_hc32l17x.s + 2 + .\startup_hc32l17x.s + + + system_hc32l17x.c + 1 + ..\mcu\common\system_hc32l17x.c + + + interrupts_hc32l17x.c + 1 + ..\mcu\common\interrupts_hc32l17x.c + + + + + source + + + main.c + 1 + ..\source\Src\main.c + + + bsp.c + 1 + ..\source\src\bsp.c + + + Algorithm.c + 1 + ..\source\src\Algorithm.c + + + SGCP.c + 1 + ..\source\src\SGCP.c + + + Update.c + 1 + ..\source\src\Update.c + + + + + driver + + + dmac.c + 1 + ..\driver\src\dmac.c + + + flash.c + 1 + ..\driver\src\flash.c + + + gpio.c + 1 + ..\driver\src\gpio.c + + + lpm.c + 1 + ..\driver\src\lpm.c + + + lpuart.c + 1 + ..\driver\src\lpuart.c + + + spi.c + 1 + ..\driver\src\spi.c + + + uart.c + 1 + ..\driver\src\uart.c + + + wdt.c + 1 + ..\driver\src\wdt.c + + + ddl.c + 1 + ..\driver\src\ddl.c + + + sysctrl.c + 1 + ..\driver\src\sysctrl.c + + + reset.c + 1 + ..\driver\src\reset.c + + + lptim.c + 1 + ..\driver\src\lptim.c + + + rtc.c + 1 + ..\driver\src\rtc.c + + + trim.c + 1 + ..\driver\src\trim.c + + + i2c.c + 1 + ..\driver\src\i2c.c + + + bt.c + 1 + ..\driver\src\bt.c + + + adc.c + 1 + ..\driver\src\adc.c + + + bgr.c + 1 + ..\driver\src\bgr.c + + + + + Debug + + + UartDebug.c + 1 + ..\Module\LaserTracing_Debug\UartDebug.c + + + + + LSM6DSL + + + lsm6dsl_reg.c + 1 + ..\Module\lsm6dsl\lsm6dsl_reg.c + + + lsm6dsl_app.c + 1 + ..\Module\lsm6dsl\lsm6dsl_app.c + + + + + MMC5893 + + + mmc5983.c + 1 + ..\Module\MMC5983\mmc5983.c + + + + + LORA + + + sx127x.c + 1 + ..\Module\LORA\sx127x.c + + + + + Imu + + + Imu.c + 1 + ..\Module\Imu\Imu.c + + + + + ReadMe + + + ReadMe.txt + 5 + ..\ReadMe.txt + + + + + ::CMSIS + + + + + HC32L17X_boot 0x4 ARM-ADS 6160000::V6.16::ARMCLANG @@ -330,7 +921,7 @@ 1 0 0 - 3 + 4 5 0 0 @@ -339,9 +930,9 @@ 0 - + USE_BOOTLOADER, - ..\mcu\common;..\source;..\driver\inc;..\source\inc;..\Module\Debug;..\Module\lsm6dsl;..\Module\MMC5983;..\Module\LORA;..\Module\Imu + ..\mcu\common;..\source;..\driver\inc;..\source\inc;..\Module\LaserTracing_Debug;..\Module\lsm6dsl;..\Module\MMC5983;..\Module\LORA;..\Module\Imu @@ -389,6 +980,44 @@ startup_hc32l17x.s 2 .\startup_hc32l17x.s + + + 2 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + + + USE_BOOTLOADER + + + + + + system_hc32l17x.c @@ -533,7 +1162,7 @@ UartDebug.c 1 - ..\Module\Debug\UartDebug.c + ..\Module\LaserTracing_Debug\UartDebug.c @@ -605,7 +1234,8 @@ - + + diff --git a/MDK/startup_hc32l17x.s b/MDK/startup_hc32l17x.s index 75e56af..80b8a43 100644 --- a/MDK/startup_hc32l17x.s +++ b/MDK/startup_hc32l17x.s @@ -162,7 +162,11 @@ Reset_Handler PROC RAMCODE ; reset Vector table address. LDR R0, =0xE000ED08 - LDR R2, =new_vect_table ;升级时打开 + + IF :DEF:USE_BOOTLOADER + LDR R2, =new_vect_table ;使用boot程序时 + ENDIF + STR R2, [R0] LDR R0, =SystemInit diff --git a/Module/LORA/sx127x.c b/Module/LORA/sx127x.c index e726f37..9dd68e7 100644 --- a/Module/LORA/sx127x.c +++ b/Module/LORA/sx127x.c @@ -1,22 +1,16 @@ #include "sx127x.h" #include "ddl.h" -#include "Debug.h" -#include "spi.h" -#include "bsp.h" - - -#define LORAChannel 8 -#define LORARegPreamble 10 +#include "UartDebug.h" #if (LORA_MODULE == SX1278W1) Sx1276Type_t LoRaPara = { - .ucChannel = LORAChannel, //4 or 12 + .ucChannel = 8, //4 or 12 .dwFreqHz = FREQ_CENT, .ucPower = 20, .SignalBw = SX1276_BW_250K, .SpreadFactor = SX1276_SF_512, .ErrorCoding = SX1276_EC_4_6, - .RegPreamble = LORARegPreamble,//10 or 16 + .RegPreamble = 10,//10 or 16 .ucOpModePrev = RFLR_OPMODE_STANDBY, .bAntSwPrev = RF_ANT_RECEIVER, .RegBuff = 0, @@ -70,6 +64,7 @@ void SX1276WriteBuffer(uint8_t ucAddr, uint8_t *pucBuff, uint8_t ucLen) } LORA_SPI_NSS_SET(); } + void SX1276Write(uint8_t ucAddr, uint8_t ucData) { SX1276WriteBuffer(ucAddr, &ucData, 1); @@ -229,20 +224,18 @@ void SX1276LoRaSetOpMode(Sx1276OpModeType ucOpMode) LoRaPara.ucOpModePrev = LoRaPara.RegBuff.RegOpMode & ~RFLR_OPMODE_MASK; if( ucOpMode != LoRaPara.ucOpModePrev){ if(ucOpMode == RFLR_OPMODE_TRANSMITTER){ - //CLR_LORA_RXEN(); //SET_LORA_TXEN(); - - bAntSwStatus = RF_ANT_TRANSMITTER; } else if(ucOpMode == RFLR_OPMODE_RECEIVER){ - bAntSwStatus = RF_ANT_RECEIVER; - //CLR_LORA_TXEN(); //SET_LORA_RXEN(); + bAntSwStatus = RF_ANT_RECEIVER; } else { + //CLR_LORA_TXEN(); + //CLR_LORA_RXEN(); bAntSwStatus = RF_ANT_CLOSE; } if( bAntSwStatus != LoRaPara.bAntSwPrev ){ @@ -305,8 +298,8 @@ void Sx1276LoRaInit(void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen)) LoRaPara.RegBuff.RegLna = RFLR_LNA_GAIN_G1; SX1276WriteBuffer(REG_LR_OPMODE, (uint8_t*)&(LoRaPara.RegBuff) + 1, SIZE_OF_REGISTERS); //set the RF settings - SX1276LoRaWriteChannel(LoRaPara.ucChannel); - //SX1276LoRaSetFreqHz(LoRaPara.dwFreqHz); + //SX1276LoRaWriteChannel(LoRaPara.ucChannel); + SX1276LoRaSetFreqHz(LoRaPara.dwFreqHz); //REG_LR_MODEMCONFIG1 SX1276Read(REG_LR_MODEMCONFIG1, &(LoRaPara.RegBuff.RegModemConfig1)); //SignalBandwidth @@ -333,8 +326,14 @@ void Sx1276LoRaInit(void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen)) //验证寄存器操作是否成功 SX1276Write(REG_LR_MODEMCONFIG2, LoRaPara.RegBuff.RegModemConfig2); - LoRaPara.RegBuff.RegModemConfig2 = 0; - SX1276Read(REG_LR_MODEMCONFIG2, &(LoRaPara.RegBuff.RegModemConfig2)); + uint8_t Config2 = 0; + SX1276Read(REG_LR_MODEMCONFIG2, &Config2); + if(LoRaPara.RegBuff.RegModemConfig2 == Config2) { + DBG_LOG("Lora OK!\r\n"); + } + else { + DBG_LOG("Lora Error!\r\n"); + } SX1276LoRaSetSymbTimeout(0x3FF); LoRaPara.RegBuff.RegPreambleMsb= (LoRaPara.RegPreamble >> 8) & 0x00ff; @@ -363,7 +362,8 @@ void Sx1276LoRaInit(void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen)) Sx1276LoRaEnterRx(); } -void IsrSx1276LoRaTxRx(void){ +void IsrSx1276LoRaTxRx(void) +{ switch (LoRaPara.State){ case SX1276_IDLE: case SX1276_RX: @@ -610,4 +610,72 @@ void SX1276LoCalcRssiSnr(int8_t *pswRssi, int8_t *psbSnr) } *psbSnr= sbSnr; } +int GetSx1276RxRetValue(void) +{ + return LoRaPara.RxRet; +} + +void Sx1276RxRetValue(void) +{ + LoRaPara.RxRet = -1; +} + +bool LoraSetChannel(uint8_t Channel) +{ + if(Channel > 16) + return false; + LoRaPara.ucChannel = Channel; + return true; +} + +bool LoraSetPower(uint8_t Power) +{ + if(Power > 20) + return false; + LoRaPara.ucPower = Power; + return true; +} + +bool LoraSetSignalBw(uint8_t SignalBw) +{ + if(SignalBw > 9) + return false; + LoRaPara.SignalBw = (SignalBw << 4); + return true; +} + +bool LoraSetSpreadFactor(uint8_t SpreadFactor) +{ + if(SpreadFactor < 4 || SpreadFactor > 12) + return false; + LoRaPara.SpreadFactor = (SpreadFactor << 4); + return true; +} + +bool LoraSetErrorCoding(uint8_t ErrorCoding) +{ + if(ErrorCoding == 0 || ErrorCoding > 4) + return false; + LoRaPara.ErrorCoding = ErrorCoding << 1; + return true; +} + +bool LoraSetRegPreamble(uint8_t RegPreamble) +{ + LoRaPara.RegPreamble = RegPreamble; + return true; +} +bool LoraSetFreqCent(uint32_t FreqCent) +{ + if(FreqCent < 410000000 || FreqCent > 525000000) + return false; + LoRaPara.dwFreqHz = FreqCent; + return true; +} +void LoraInit(void) +{ + Sx1276LoRaInit(LORA_RxCallBack); +} #endif + + diff --git a/Module/LORA/sx127x.h b/Module/LORA/sx127x.h index 8d1936f..9099cfd 100644 --- a/Module/LORA/sx127x.h +++ b/Module/LORA/sx127x.h @@ -2,6 +2,7 @@ #define __SX127X_H #include "bsp.h" +#include "main.h" //Constant values need to compute the RSSI value #define RSSI_OFFSET_LF -155 @@ -733,6 +734,7 @@ typedef struct { uint8_t ucTxPacketSize; uint8_t RxTxBuff[LORA_BUFF_SIZE]; void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen); + int RxRet; }Sx1276Type_t, *pSx1276Type; //ISM Freq In China @@ -802,7 +804,6 @@ 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); @@ -823,5 +824,14 @@ Sx1276StateType_t SX1276LoRaReadStatus(void); void SX1276LoCalcRssiSnr(int8_t *pswRssi, int8_t *psbSnr); void Sx1276LoRaSleep(void); void Sx1276LoRaWakeup(void); + +void LoraInit(void); +bool LoraSetChannel(uint8_t Channel); +bool LoraSetPower(uint8_t Power); +bool LoraSetSignalBw(uint8_t SignalBw); +bool LoraSetSpreadFactor(uint8_t SpreadFactor); +bool LoraSetErrorCoding(uint8_t ErrorCoding); +bool LoraSetRegPreamble(uint8_t RegPreamble); +bool LoraSetFreqCent(uint32_t FreqCent); #endif diff --git a/Module/LaserTracing_Debug b/Module/LaserTracing_Debug index 10f470d..03e1d00 160000 --- a/Module/LaserTracing_Debug +++ b/Module/LaserTracing_Debug @@ -1 +1 @@ -Subproject commit 10f470d79127ef197c1bc45aa45eea81ea46e52d +Subproject commit 03e1d001ef9f61e5b0bab0942fe242292f54108c diff --git a/source/inc/SGCP.h b/source/inc/SGCP.h index 922650f..d2d4a0c 100644 --- a/source/inc/SGCP.h +++ b/source/inc/SGCP.h @@ -4,7 +4,7 @@ #define __SGCP_H #include "bsp.h" -#define WORK_MODE 1//工作模式选择,0、本机为查询模式,1、本机为上报模式(低功耗) +#define WORK_MODE 1 //工作模式选择,0、本机为查询模式,1、本机为上报模式(低功耗) #define SGCP_SELECT 1 //协议选择,0、本机为单个主设备接多个子设备,1、本机为单个主设备不接子设备,2、本机为单个子设备 typedef struct {//网关与主设备固定帧 @@ -173,7 +173,7 @@ typedef enum { RS485 = 0x02, //0x02 RS485通讯 RS232 = 0x03, //0x03 RS232通讯 CAN = 0x04, //0x04 CAN通讯 - _4G = 0x05, //0x05 _4G通讯 + CATONE = 0x05, //0x05 _4G通讯 BLE = 0x06, //0x06 BLE通讯 WIFI = 0x07, //0x07 WIFI通讯 UART = 0x08, //0x08 UART通讯 diff --git a/source/inc/Update.h b/source/inc/Update.h index 6b0a756..b13e004 100644 --- a/source/inc/Update.h +++ b/source/inc/Update.h @@ -3,7 +3,6 @@ #include #include "bsp.h" -#include "UartDebug.h" #define APP_START_FLAG 0x55AA5A5A #define APP_UPDATE_FLAG 0xA5A5AA55 @@ -23,17 +22,6 @@ #define BOOT_PARA_ADDRESS (0x0001FC00)//(FLASH_BASE + BOOT_SIZE) #define BOOT_PARA_SIZE (FLASH_SECTOR_SIZE) - -typedef struct { - uint32_t AppFlag; - uint32_t UpdateFlag; - uint32_t PackageCnt; - uint32_t AppSize; - uint32_t Crc32Check; - uint32_t FirstRunFlag;//第一次运行 - uint8_t DevMac[6];//设备MAC - uint32_t LoraFreq;//Lora频率 -}BootPara_t, *BootPara; //主机下发升级请求载荷结构体 typedef struct { @@ -55,11 +43,10 @@ typedef struct { #define U_DBG_LOG(...) DBG_LOG(__VA_ARGS__) #define U_DELAY_MS(x) delay_ms(x) #define U_SYSTEM_TESET() SystemReset() -#define SAVE_BOOT_PARA(addr) FlashWrite(BOOT_PARA_ADDRESS, addr, sizeof(BLPara) / 4) -#define READ_BOOT_PARA(addr) FlashRead(BOOT_PARA_ADDRESS, addr, sizeof(BLPara) / 4) +#define SAVE_BOOT_PARA(addr) SAVE_APP_PARA(addr) +#define READ_BOOT_PARA(addr) READ_APP_PARA(addr) //输出接口 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 3e52434..920b5c5 100644 --- a/source/inc/bsp.h +++ b/source/inc/bsp.h @@ -6,6 +6,7 @@ #include #include "gpio.h" #include "spi.h" +#include "Update.h" /*模块启用与关闭*/ #define USE_DEBUG 1 //调试串口选择,0、关闭,1、启用 @@ -23,8 +24,7 @@ #define USE_SPI0 1 //SPI1开关,0、关闭,1、启用 #define USE_SPI1 0 //SPI1开关,0、关闭,1、启用 -#define USE_BOOTLOADER 1 //BOOTLOADER开关,0、关闭,1、启用 -#define USE_LORA_CH 0 //0为测试通道 +//#define USE_BOOTLOADER 1 //BOOTLOADER开关,0、关闭,1、启用 //<<---------------------------- MCU -------------------------------->> //< UART0 @@ -209,12 +209,22 @@ extern float VBAT_8V4; extern uint8_t VBAT_Percentage; +typedef struct { + uint32_t AppFlag; + uint32_t UpdateFlag; + uint32_t PackageCnt; + uint32_t AppSize; + uint32_t Crc32Check; + uint32_t FirstRunFlag;//第一次运行 + uint8_t DevMac[6];//设备MAC + uint32_t LoraFreq;//Lora频率 +}BootPara_t, *BootPara; typedef struct { - uint16_t CollectTime; //数据采集时间间隔,设置范围30*N秒,1<=N<=240,(默认5分钟,N=10) - uint16_t ReportInterval; //上报时间间隔,设置范围,30*N秒,10<=N<=1440(默认20分钟,N=40) - uint8_t ERInterval; //紧急上报时间间隔,设置范围,30*N秒,2<=N<=10(默认2分钟,N=4) - uint8_t ERTime; //紧急上报时长,设置范围,30*N秒,20<=N<=240(默认20分钟,N=40) + uint16_t CollectTime; //数据采集时间间隔,设置范围30*N秒,1<=N<=240,(默认300秒,N=10) + uint16_t ReportInterval; //上报时间间隔,设置范围,30*N秒,10<=N<=1440(默认1200秒,N=40) + uint8_t ERInterval; //紧急上报时间间隔,设置范围,30*N秒,2<=N<=10(默认120秒,N=4) + uint8_t ERTime; //紧急上报时长,设置范围,30*N秒,20<=N<=240(默认1200秒,N=40) uint32_t TimeStamp; //网关返回RTC时间戳 }__attribute__((packed))LayoutPara_t,*LayoutPara;//上位机下发的配置参数 @@ -225,16 +235,39 @@ typedef struct { }__attribute__ ((packed))CalibratePara_t, *CalibratePara; typedef struct { + bool OnOff; + uint8_t ucChannel; + int8_t ucPower; + uint8_t SignalBw; + uint8_t SpreadFactor; + uint8_t ErrorCoding; + uint8_t RegPreamble; + uint32_t FreqCent; +}__attribute__ ((packed))LoraPara_t, *pLoraPara; + +typedef struct { + bool Enable; //串口使能 + bool UpgradeEnable;//升级功能使能 + uint32_t Addr; //本机485地址 + uint32_t BaudRate; +}__attribute__((packed))RS485Para_t, *RS485Para; + +typedef struct { + BootPara_t BLPara; LayoutPara_t Layout; CalibratePara_t CaliPara; - uint32_t RS485Addr; //本机485地址 + RS485Para_t Rs485Ch1; + RS485Para_t Rs485Ch2; uint32_t FactoryFlag;//出厂标志位 + LoraPara_t Lora; }AppPara_T, *pAppPara; -#define APP_PARA_ADDRESS (0x0001FE00) -#define SAVE_APP_PARA(addr) FlashWrite(APP_PARA_ADDRESS, addr, sizeof(App.Para) / 4) -#define READ_APP_PARA(addr) FlashRead(APP_PARA_ADDRESS, addr, sizeof(App.Para) / 4) +//#define APP_PARA_ADDRESS (0x0001FC00) +#define SAVE_APP_PARA(addr) FlashWrite(BOOT_PARA_ADDRESS, addr, sizeof(App.Para) / 4) +#define READ_APP_PARA(addr) FlashRead(BOOT_PARA_ADDRESS, addr, sizeof(App.Para) / 4) void BspInit(void); +void LpUart0Init(uint32_t Baud); +void Uart0Init(uint32_t Baud); void EnterDeepSleep(void); void DBGUartSendByte(uint8_t sData); void DBGUartSend(uint8_t *sData, int sLen); @@ -269,3 +302,4 @@ void LORAIntDisable(void); void ACCandMMCIntEnable(void); void ACCandMMCIntDisable(void); #endif + diff --git a/source/inc/main.h b/source/inc/main.h index f3c09e7..6abd9c8 100644 --- a/source/inc/main.h +++ b/source/inc/main.h @@ -2,8 +2,16 @@ #define __MAIN_H #include "bsp.h" #include "UartDebug.h" +#include "Update.h" #include "Imu.h" +#define SOFTWARE_VERSION 12 //软件版本 +#define HARDWARE_VERSION 11 //硬件版本 + +#define MAIN_DBG_LOG(...) { if(MainDispEn) DBG_LOG(__VA_ARGS__);} +#define DATA_DBG_LOG(...) { if(DataDispEn) DBG_LOG(__VA_ARGS__);} + + #define X 0 #define Y 1 #define Z 2 @@ -94,14 +102,16 @@ typedef struct { int16_t Nonce; //随机数 - uint32_t TestTimeCnt; - uint8_t Tcnt; bool LaserFlag; }AppDetect_t; - extern AppDetect_t App; + +void MainDBGOnOff(bool OnOff); +void DataDBGOnOff(bool OnOff); + #endif + diff --git a/source/src/SGCP.c b/source/src/SGCP.c index a100259..2f196ec 100644 --- a/source/src/SGCP.c +++ b/source/src/SGCP.c @@ -758,7 +758,7 @@ static void MasRevHandler(void) return; } - if(SFHeader->Addr != App.Para.RS485Addr) + if(SFHeader->Addr != App.Para.Rs485Ch1.Addr) { if(SFHeader->Addr != 0x00) { @@ -1120,7 +1120,7 @@ static void InRevHandler(void) } else { - App.Para.RS485Addr = temp; + App.Para.Rs485Ch1.Addr = temp; SAVE_APP_PARA((uint32_t *)&App.Para); if(SGCP.InStatus == IN_STATUS_IDLE) { @@ -2195,7 +2195,7 @@ void InRevLoopHandler(void) case IN_STATUS_ALTER_485ADDR:{ PrintfMess(); Alter485AddrRes(LocalMAC, true); - DBG_LOG("Alter RS485Addr:%X\r\n", App.Para.RS485Addr); + DBG_LOG("Alter RS485Addr:%X\r\n", App.Para.Rs485Ch1.Addr); SGCP.InStatus = IN_STATUS_IDLE; break;} diff --git a/source/src/Update.c b/source/src/Update.c index eebee7a..c1f023e 100644 --- a/source/src/Update.c +++ b/source/src/Update.c @@ -1,7 +1,7 @@ #include "Update.h" #include "UartDebug.h" - -BootPara_t BLPara; +#include "main.h" +#include "bsp.h" /***************************************************************************************** * 函数名称: Update @@ -14,19 +14,19 @@ void Update(uint8_t *PayLoad) UpDataRequset_t Req; memcpy(&Req, PayLoad, sizeof(UpDataRequset_t)); - BLPara.AppSize = Req.AppSize; - BLPara.Crc32Check = Req.AppCrc32; - BLPara.PackageCnt = Req.PackageNum; - BLPara.AppFlag = 0; - BLPara.UpdateFlag = APP_UPDATE_FLAG; + App.Para.BLPara.AppSize = Req.AppSize; + App.Para.BLPara.Crc32Check = Req.AppCrc32; + App.Para.BLPara.PackageCnt = Req.PackageNum; + App.Para.BLPara.AppFlag = 0; + App.Para.BLPara.UpdateFlag = APP_UPDATE_FLAG; U_DBG_LOG("Receive upgrade command:\r\n"); - U_DBG_LOG("PackageNum: %d\r\n", BLPara.PackageCnt); - U_DBG_LOG("AppSize: %d\r\n", BLPara.AppSize); - U_DBG_LOG("AppCrc32: 0x%08x\r\n", BLPara.Crc32Check); + U_DBG_LOG("PackageNum: %d\r\n", App.Para.BLPara.PackageCnt); + U_DBG_LOG("AppSize: %d\r\n", App.Para.BLPara.AppSize); + U_DBG_LOG("AppCrc32: 0x%08x\r\n", App.Para.BLPara.Crc32Check); U_DBG_LOG("System Reset!\r\n"); - SAVE_BOOT_PARA((uint32_t *)&BLPara); + SAVE_BOOT_PARA((uint32_t *)&App.Para); U_DELAY_MS(200); U_SYSTEM_TESET(); } @@ -39,10 +39,10 @@ void Update(uint8_t *PayLoad) *****************************************************************************************/ void UpdateInit(void) { - READ_BOOT_PARA((uint32_t *)&BLPara); - if(BLPara.AppFlag != APP_START_FLAG) { - BLPara.AppFlag = APP_START_FLAG; - SAVE_BOOT_PARA((uint32_t *)&BLPara); + READ_BOOT_PARA((uint32_t *)&App.Para); + if(App.Para.BLPara.AppFlag != APP_START_FLAG) { + App.Para.BLPara.AppFlag = APP_START_FLAG; + SAVE_BOOT_PARA((uint32_t *)&App.Para); } } diff --git a/source/src/bsp.c b/source/src/bsp.c index a01992c..f41ade4 100644 --- a/source/src/bsp.c +++ b/source/src/bsp.c @@ -89,7 +89,7 @@ static void SystemRCLInit(void) Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); ///< 使能RCL时钟 } -static void Uart0Init(void) +void Uart0Init(uint32_t Baud) { stc_gpio_cfg_t stcGpioCfg; stc_uart_cfg_t stcCfg; @@ -116,7 +116,7 @@ static void Uart0Init(void) stcCfg.enMmdorCk = UartMskEven; ///<偶校验 stcCfg.stcBaud.u32Pclk = Sysctrl_GetPClkFreq(); ///> 8) & 0xFF; - LocalMAC[2] = CommWay; - LocalMAC[3] = (AddNumber >> 16) & 0xFF; - LocalMAC[4] = (AddNumber >> 8) & 0xFF; - LocalMAC[5] = AddNumber & 0xFF; - - if(AddNumber <= 0x14) - { - SX1276LoRaSetFreqHz(CH1); //Lora棰戠巼:433100000ul + 200000*N - BLPara.LoraFreq = CH1; - memcpy(&BLPara.DevMac[0], LocalMAC, 6); - } - else if(AddNumber > 0x14 && AddNumber < 0x23) - { - SX1276LoRaSetFreqHz(CH2); //Lora棰戠巼:433100000ul + 200000*N - BLPara.LoraFreq = CH2; - memcpy(&BLPara.DevMac[0], LocalMAC, 6); - } + + for(int i = 0; i < 6; i++) { + LocalMAC[i] = *((volatile const uint8_t *)(0x00002800 + i)); } - if(App.Para.FactoryFlag != 0x00) - { - App.Para.FactoryFlag = 0x00; - /*鏍″噯鍙傛暟鍒濆鍖*/ - App.Para.CaliPara.PitchZero = 0; - App.Para.CaliPara.RollZero = 0; - App.Para.CaliPara.YawZero = 0; - } -#elif + memcpy(&App.Para.BLPara.DevMac, &LocalMAC[0], 6); + LocalType = (App.Para.BLPara.DevMac[0] | (App.Para.BLPara.DevMac[1] << 8)); //鏈満璁惧绫诲瀷 + CommWay = App.Para.BLPara.DevMac[2]; //鏈満閫氳鏂瑰紡 + DeviceSign = App.Para.BLPara.DevMac[3] & 0x80; //鏈満璁惧鏍囧織 + AddNumber = ((App.Para.BLPara.DevMac[3] << 16)+ (App.Para.BLPara.DevMac[4] << 8) + App.Para.BLPara.DevMac[5]) - 0x800000; //鏈満鍦板潃缂栧彿锛屾暟瀛楅儴鍒嗗搴斿敮涓鍦板潃缂栧彿 +#else LocalType = LASER_TRACING; //鏈満璁惧绫诲瀷 CommWay = LORA; //鏈満閫氳鏂瑰紡 DeviceSign = MASTER; //鏈満璁惧鏍囧織 AddNumber = 0x000023 + DeviceSign;//鏈満鍦板潃缂栧彿锛屾暟瀛楅儴鍒嗗搴斿敮涓鍦板潃缂栧彿 - SX1276LoRaSetFreqHz(CH0); //Lora棰戠巼:433100000ul + 200000*N + App.Para.BLPara.LoraFreq = CH0; LocalMAC[0] = LocalType & 0xFF; //鏈満MAC鍦板潃 LocalMAC[1] = (LocalType >> 8) & 0xFF; LocalMAC[2] = CommWay; @@ -106,8 +100,49 @@ static void AppInit(void) LocalMAC[5] = AddNumber & 0xFF; #endif - if(App.Para.RS485Addr > 16 || App.Para.RS485Addr < 1){ - App.Para.RS485Addr = 1; + if(App.Para.FactoryFlag != 0x00) + { + App.Para.FactoryFlag = 0x00; + /*鏍″噯鍙傛暟鍒濆鍖*/ + App.Para.CaliPara.PitchZero = 0; + App.Para.CaliPara.RollZero = 0; + App.Para.CaliPara.YawZero = 0; + + App.Para.Rs485Ch1.Enable = true; + App.Para.Rs485Ch1.UpgradeEnable = true; + App.Para.Rs485Ch1.Addr = 1; + App.Para.Rs485Ch1.BaudRate = 9600; + + App.Para.Rs485Ch2.Enable = false; + App.Para.Rs485Ch2.UpgradeEnable = false; + App.Para.Rs485Ch2.Addr = 1; + App.Para.Rs485Ch2.BaudRate = 500000; + + App.Para.Lora.OnOff = true; + App.Para.Lora.ucChannel = 8; + App.Para.Lora.ucPower = 20; + App.Para.Lora.SignalBw = 8; + App.Para.Lora.SpreadFactor = 9; + App.Para.Lora.ErrorCoding = 2; + App.Para.Lora.RegPreamble = 10; + App.Para.BLPara.LoraFreq = CH0; + + App.Para.Layout.CollectTime = 10; + App.Para.Layout.ReportInterval = 40; + App.Para.Layout.ERInterval = 4; + App.Para.Layout.ERTime = 40; + } + + if(App.Para.BLPara.LoraFreq < 410000000 || App.Para.BLPara.LoraFreq > 525000000) + App.Para.BLPara.LoraFreq = CH0; + App.Para.Lora.FreqCent = App.Para.BLPara.LoraFreq; + SX1276LoRaWriteFreq(App.Para.Lora.FreqCent); //Lora棰戠巼:433100000ul + 200000*N + + if(App.Para.Rs485Ch1.Addr > 16 || App.Para.Rs485Ch1.Addr < 1){ + App.Para.Rs485Ch1.Addr = 1; + } + if(App.Para.Rs485Ch2.Addr > 16 || App.Para.Rs485Ch2.Addr < 1){ + App.Para.Rs485Ch2.Addr = 1; } if(App.Para.Layout.CollectTime > 240 || App.Para.Layout.CollectTime < 1) { App.Para.Layout.CollectTime = 10; @@ -121,24 +156,12 @@ static void AppInit(void) if(App.Para.Layout.ERTime > 240 || App.Para.Layout.ERTime < 20) { App.Para.Layout.ERTime = 40; } + SAVE_APP_PARA((uint32_t *)&App.Para); - DBG_LOG("\r\n\r\n"); - DBG_LOG("****************************************************\r\n"); - DBG_LOG("** **\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__); - DBG_LOG("** **\r\n"); - 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",(App.Para.Layout.CollectTime*30)); - DBG_LOG("LoraFreq: %d\r\n\r\n",BLPara.LoraFreq); - //09 00 01 00 00 00 + LpUart0Init(App.Para.Rs485Ch1.BaudRate);//浣庡姛鑰椾覆鍙e垵濮嬪寲 LORAIntEnable(); - Sx1276LoRaInit(LORA_RxCallBack); //< LORA鑺墖鍒濆鍖 + LoraInit(); //< LORA鑺墖鍒濆鍖 FeedDog(); Lsm6dslInit(); @@ -172,7 +195,7 @@ static void AppInit(void) App.Login_LPTimer0 = true; //LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms LPTimer0_ON(50); - DBG_LOG("Login LPTimer0 Open\r\n"); + MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); App.Upload45S10SCount = 0; App.UploadFlag = false; @@ -202,7 +225,7 @@ static void ReadDataLoopHandler(void) break;} case READDATA_STATUS_UPDAING:{ - DBG_LOG("<------------ Sensor Data Updaing ------------> \r\n"); + DATA_DBG_LOG("<------------ Sensor Data Updaing ------------> \r\n"); App.UpdateOk = false; Lsm6dsStart(); MMC5983Start(); @@ -213,9 +236,9 @@ static void ReadDataLoopHandler(void) case READDATA_STATUS_WAIT_UPDAING:{ if(App.ReadData1mSDelayCnt <= 0){ if(App.AccRead_EndFlag == false) - DBG_LOG("Lsm6dsl Get Data TimeOut...\r\n"); + DATA_DBG_LOG("Lsm6dsl Get Data TimeOut...\r\n"); if(App.MagRead_EndFlag == false) - DBG_LOG("MMC5983 Get Data TimeOut...\r\n"); + DATA_DBG_LOG("MMC5983 Get Data TimeOut...\r\n"); App.RDStatus = READDATA_STATUS_DATA_HANDLE; } else if(App.MagRead_EndFlag == true @@ -226,7 +249,7 @@ static void ReadDataLoopHandler(void) case READDATA_STATUS_DATA_HANDLE:{ if(App.MagRead_EndFlag == false || App.AccRead_EndFlag == false){ - DBG_LOG("<------------ Sensor Data Upda End ------------> \r\n"); + DATA_DBG_LOG("<------------ Sensor Data Upda End ------------> \r\n"); App.RDStatus = READDATA_STATUS_IDLE; App.UpdateOk = false; break; @@ -238,7 +261,7 @@ static void ReadDataLoopHandler(void) App.ConvertedData.Pitch = (int16_t)(App.AHRSData.Deg.pitch * 10); App.ConvertedData.Roll = (int16_t)(App.AHRSData.Deg.roll * 10); App.ConvertedData.Yaw = (int16_t)(App.AHRSData.Deg.yaw * 10); - DBG_LOG("PitchAngle:%06.1f, RollAngle:%06.1f, YawAngle:%06.1f\r\n",App.AHRSData.Deg.pitch, App.AHRSData.Deg.roll, App.AHRSData.Deg.yaw); + DATA_DBG_LOG("PitchAngle:%06.1f, RollAngle:%06.1f, YawAngle:%06.1f\r\n",App.AHRSData.Deg.pitch, App.AHRSData.Deg.roll, App.AHRSData.Deg.yaw); if(SGCP.MasterCaliOk == true) { @@ -261,9 +284,9 @@ static void ReadDataLoopHandler(void) { //瑙﹀彂绱фヤ笂鎶 App.ERFlag = true; - DBG_LOG("PitchDiff=%04d, PitchDiff=%04d\r\n", PitchDiff,RollDiff); - DBG_LOG("Start emergency reporting!\r\n"); - DBG_LOG("ERInterval: %dMin, ERTime: %dMin\r\n", App.Para.Layout.ERInterval/2, App.Para.Layout.ERTime/2); + DATA_DBG_LOG("PitchDiff=%04d, PitchDiff=%04d\r\n", PitchDiff,RollDiff); + DATA_DBG_LOG("Start emergency reporting!\r\n"); + DATA_DBG_LOG("ERInterval: %dMin, ERTime: %dMin\r\n", App.Para.Layout.ERInterval/2, App.Para.Layout.ERTime/2); } } @@ -284,7 +307,7 @@ static void ReadDataLoopHandler(void) #endif memcpy(LocalDataPack, &SGCP.DevData.LaserTracing, sizeof(LocalDataPack)); - DBG_LOG("<------------ Sensor Data Upda End ------------> \r\n"); + DATA_DBG_LOG("<------------ Sensor Data Upda End ------------> \r\n"); //App.RDStatus = READDATA_STATUS_UPDAING;//鎸佺画宸ヤ綔 App.RDStatus = READDATA_STATUS_IDLE; App.UpdateOk = true; @@ -299,7 +322,7 @@ static void AppLoopHandler(void) break;} case APP_STATUS_SLEEP:{ - DBG_LOG("Sleep...\r\n\n\n"); + MAIN_DBG_LOG("Sleep...\r\n\n\n"); FeedDog(); EnterDeepSleep(); FeedDog(); @@ -318,7 +341,7 @@ static void AppLoopHandler(void) case APP_STATUS_OFF:{ LED_OFF(); App.Status = APP_STATUS_SLEEP; - DBG_LOG("Power Off...\r\n"); + MAIN_DBG_LOG("Power Off...\r\n"); break;} case APP_STATUS_ACTION:{ @@ -355,8 +378,7 @@ static void AppLoopHandler(void) && SGCP.TimingAcquisition == false && App.TD1mSDelayCnt == 0 && App.ReadData1mSDelayCnt == 0 - && SGCP.LaserOnOff == false - && App.TestTimeCnt == 0) + && SGCP.LaserOnOff == false) { //App.Status = APP_STATUS_ACTION;//鎸佺画宸ヤ綔 App.Status = APP_STATUS_OFF; @@ -364,7 +386,6 @@ static void AppLoopHandler(void) else if(App.LaserFlag == true) { App.LaserFlag = false; - App.TestTimeCnt = 3000; LASER1_ON(); } break;} @@ -378,8 +399,8 @@ static void AppLoopHandler(void) if(App.Login2Min30SCount >= 3) { PrintfMess(); - DBG_LOG("Number of registration failures:%d\r\n",App.Login2Min30SCount); - DBG_LOG("Login RTC Open\r\n"); + MAIN_DBG_LOG("Number of registration failures:%d\r\n",App.Login2Min30SCount); + MAIN_DBG_LOG("Login RTC Open\r\n"); App.Login2Min30SCount = 0; App.Login30MinCount = 0; App.Login_RTC = true;//鍚姩30鍒嗘敞鍐屽畾鏃跺櫒 @@ -390,8 +411,8 @@ static void AppLoopHandler(void) App.Login_LPTimer0 = true; LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms //LPTimer0_ON(100);//瀹氭椂10s - DBG_LOG("Number of registration failures:%d\r\n",App.Login2Min30SCount); - DBG_LOG("Login LPTimer0 Open\r\n"); + MAIN_DBG_LOG("Number of registration failures:%d\r\n",App.Login2Min30SCount); + MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); } } else if(SGCP.LoginOk == true) @@ -417,10 +438,10 @@ static void AppLoopHandler(void) if((App.Upload45S10SCount%3) == 0) { PrintfMess(); - DBG_LOG("Number of failed uploads:%d\r\n",App.Upload45S10SCount); + MAIN_DBG_LOG("Number of failed uploads:%d\r\n",App.Upload45S10SCount); if(App.Upload45S10SCount >= 9) { - DBG_LOG("Resend registration information.\r\n"); + MAIN_DBG_LOG("Resend registration information.\r\n"); SGCP.LoginOk = false; App.LoginFlag = true; } @@ -431,8 +452,8 @@ static void AppLoopHandler(void) App.Upload_LPTimer0 = true; LPTimer0_ON((App.Nonce % 100) + 45);//闅忔満寤舵椂100~10000ms+45绉掑悗閲嶆柊鍙戦 //LPTimer0_ON(100);//瀹氭椂10s - DBG_LOG("Number of failed uploads:%d\r\n",App.Upload45S10SCount); - DBG_LOG("Upload LPTimer0 Open\r\n"); + MAIN_DBG_LOG("Number of failed uploads:%d\r\n",App.Upload45S10SCount); + MAIN_DBG_LOG("Upload LPTimer0 Open\r\n"); } } else if(SGCP.UploadOk == true) @@ -454,14 +475,6 @@ static void App1mSRoutine(void) if(App.ReadData1mSDelayCnt > 0) App.ReadData1mSDelayCnt--; App.FeedDogDlyCnt++; - if(App.TestTimeCnt > 0) - { - App.TestTimeCnt--; - if(App.TestTimeCnt <= 0) - { - LASER1_OFF(); - } - } } void FeedDogHandler(void) @@ -497,6 +510,17 @@ int32_t main(void) delay_ms(3000);//涓婄數寤舵椂锛岀瓑寰呬粠璁惧鍚姩 AppInit(); + DBG_LOG("\r\n\r\n"); + DBG_LOG("****************************************************\r\n"); + DBG_LOG("** **\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__); + DBG_LOG("** **\r\n"); + DBG_LOG("****************************************************\r\n\r\n"); + //09 00 01 00 00 00 + while (1) { #if(USE_VBAT_AD == 1) ADCLoopHandler(); @@ -530,19 +554,11 @@ void SysTick_CallBack(void) void RtcIRQHander(void) { //SGCP.TimingAcquisition = true; //30S鏇存柊涓娆℃暟鎹 -#if USE_LORA_CH == CH0 - App.Tcnt++;//涓鍒嗛挓寮鍚縺鍏3绉 - if(App.Tcnt >= 2) - { - App.Tcnt = 0; - App.LaserFlag = true; - } -#endif if(SGCP.LoginOk == true) { App.RepeLoginCount++; if(App.RepeLoginCount >= SYSTEM_TIMING_LOGIN){ - DBG_LOG("24h Repetition Login\r\n"); + MAIN_DBG_LOG("24h Repetition Login\r\n"); App.RepeLoginCount = 0; SGCP.LoginOk = false;//24h閲嶅娉ㄥ唽 App.Login2Min30SCount = 0; @@ -550,7 +566,7 @@ void RtcIRQHander(void) App.Login_RTC = false;//鍏抽棴30鍒嗘敞鍐屽畾鏃跺櫒 LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms - DBG_LOG("Login LPTimer0 Open\r\n"); + MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); } App.Coll_N++; @@ -594,12 +610,12 @@ void RtcIRQHander(void) PrintfMess(); App.Login30MinCount = 0; App.Login_RTC = false;//鍏抽棴30鍒嗘敞鍐屽畾鏃跺櫒 - DBG_LOG("Login RTC Close\r\n"); + MAIN_DBG_LOG("Login RTC Close\r\n"); App.Login_LPTimer0 = true; LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms //LPTimer0_ON(100);//瀹氭椂10s - DBG_LOG("Login LPTimer0 Open\r\n"); + MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); } } }