Procházet zdrojové kódy

MBIC _ 고장난 부트러도 ㅓ

PYJ před 5 roky
rodič
revize
c408d8729e

+ 1 - 0
.gitignore

@@ -3,3 +3,4 @@ insight
3 3
 insight
4 4
 insight
5 5
 /Debug/
6
+/Release/

+ 10 - 0
.settings/org.eclipse.cdt.managedbuilder.core.prefs

@@ -1,10 +1,20 @@
1 1
 eclipse.preferences.version=1
2
+environment/buildEnvironmentInclude/com.atollic.truestudio.configuration.release.1518366166/CPATH/delimiter=;
3
+environment/buildEnvironmentInclude/com.atollic.truestudio.configuration.release.1518366166/CPATH/operation=remove
4
+environment/buildEnvironmentInclude/com.atollic.truestudio.configuration.release.1518366166/C_INCLUDE_PATH/delimiter=;
5
+environment/buildEnvironmentInclude/com.atollic.truestudio.configuration.release.1518366166/C_INCLUDE_PATH/operation=remove
6
+environment/buildEnvironmentInclude/com.atollic.truestudio.configuration.release.1518366166/append=true
7
+environment/buildEnvironmentInclude/com.atollic.truestudio.configuration.release.1518366166/appendContributed=true
2 8
 environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/delimiter=;
3 9
 environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/operation=remove
4 10
 environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/delimiter=;
5 11
 environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/operation=remove
6 12
 environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/append=true
7 13
 environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/appendContributed=true
14
+environment/buildEnvironmentLibrary/com.atollic.truestudio.configuration.release.1518366166/LIBRARY_PATH/delimiter=;
15
+environment/buildEnvironmentLibrary/com.atollic.truestudio.configuration.release.1518366166/LIBRARY_PATH/operation=remove
16
+environment/buildEnvironmentLibrary/com.atollic.truestudio.configuration.release.1518366166/append=true
17
+environment/buildEnvironmentLibrary/com.atollic.truestudio.configuration.release.1518366166/appendContributed=true
8 18
 environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/delimiter=;
9 19
 environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/operation=remove
10 20
 environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/append=true

binární
Debug/STM32F103_ATTEN_PLL_Zig.elf


Diff nebyl zobrazen, protože je příliš veliký
+ 543 - 524
Debug/STM32F103_ATTEN_PLL_Zig.hex


Diff nebyl zobrazen, protože je příliš veliký
+ 3218 - 3006
Debug/STM32F103_ATTEN_PLL_Zig.list


Diff nebyl zobrazen, protože je příliš veliký
+ 500 - 470
Debug/STM32F103_ATTEN_PLL_Zig.map


+ 5 - 5
Debug/Src/main.su

@@ -1,5 +1,5 @@
1
-main.c:75:6:HAL_TIM_PeriodElapsedCallback	0	static
2
-main.c:84:5:_write	8	static
3
-main.c:165:6:SystemClock_Config	72	static
4
-main.c:100:5:main	40	static
5
-main.c:366:6:Error_Handler	0	static
1
+main.c:82:6:HAL_TIM_PeriodElapsedCallback	0	static
2
+main.c:91:5:_write	8	static
3
+main.c:189:6:SystemClock_Config	72	static
4
+main.c:107:5:main	40	static
5
+main.c:432:6:Error_Handler	0	static

binární
Debug/Src/stm32f1xx_hal_msp.o


+ 7 - 7
Debug/Src/stm32f1xx_hal_msp.su

@@ -1,7 +1,7 @@
1
-stm32f1xx_hal_msp.c:67:6:HAL_MspInit	8	static
2
-stm32f1xx_hal_msp.c:93:6:HAL_I2C_MspInit	32	static
3
-stm32f1xx_hal_msp.c:127:6:HAL_I2C_MspDeInit	0	static
4
-stm32f1xx_hal_msp.c:156:6:HAL_TIM_Base_MspInit	8	static
5
-stm32f1xx_hal_msp.c:178:6:HAL_TIM_Base_MspDeInit	0	static
6
-stm32f1xx_hal_msp.c:203:6:HAL_UART_MspInit	40	static
7
-stm32f1xx_hal_msp.c:275:6:HAL_UART_MspDeInit	8	static
1
+stm32f1xx_hal_msp.c:71:6:HAL_MspInit	8	static
2
+stm32f1xx_hal_msp.c:97:6:HAL_I2C_MspInit	32	static
3
+stm32f1xx_hal_msp.c:131:6:HAL_I2C_MspDeInit	0	static
4
+stm32f1xx_hal_msp.c:160:6:HAL_TIM_Base_MspInit	8	static
5
+stm32f1xx_hal_msp.c:182:6:HAL_TIM_Base_MspDeInit	0	static
6
+stm32f1xx_hal_msp.c:207:6:HAL_UART_MspInit	48	static
7
+stm32f1xx_hal_msp.c:339:6:HAL_UART_MspDeInit	8	static

binární
Debug/Src/stm32f1xx_it.o


+ 16 - 13
Debug/Src/stm32f1xx_it.su

@@ -1,13 +1,16 @@
1
-stm32f1xx_it.c:73:6:NMI_Handler	0	static
2
-stm32f1xx_it.c:86:6:HardFault_Handler	0	static
3
-stm32f1xx_it.c:101:6:MemManage_Handler	0	static
4
-stm32f1xx_it.c:116:6:BusFault_Handler	0	static
5
-stm32f1xx_it.c:131:6:UsageFault_Handler	0	static
6
-stm32f1xx_it.c:146:6:SVC_Handler	0	static
7
-stm32f1xx_it.c:159:6:DebugMon_Handler	0	static
8
-stm32f1xx_it.c:172:6:PendSV_Handler	0	static
9
-stm32f1xx_it.c:185:6:SysTick_Handler	0	static
10
-stm32f1xx_it.c:206:6:DMA1_Channel4_IRQHandler	0	static
11
-stm32f1xx_it.c:220:6:DMA1_Channel5_IRQHandler	0	static
12
-stm32f1xx_it.c:234:6:USART1_IRQHandler	0	static
13
-stm32f1xx_it.c:248:6:TIM6_IRQHandler	0	static
1
+stm32f1xx_it.c:76:6:NMI_Handler	0	static
2
+stm32f1xx_it.c:89:6:HardFault_Handler	0	static
3
+stm32f1xx_it.c:104:6:MemManage_Handler	0	static
4
+stm32f1xx_it.c:119:6:BusFault_Handler	0	static
5
+stm32f1xx_it.c:134:6:UsageFault_Handler	0	static
6
+stm32f1xx_it.c:149:6:SVC_Handler	0	static
7
+stm32f1xx_it.c:162:6:DebugMon_Handler	0	static
8
+stm32f1xx_it.c:175:6:PendSV_Handler	0	static
9
+stm32f1xx_it.c:188:6:SysTick_Handler	0	static
10
+stm32f1xx_it.c:209:6:DMA1_Channel4_IRQHandler	0	static
11
+stm32f1xx_it.c:223:6:DMA1_Channel5_IRQHandler	0	static
12
+stm32f1xx_it.c:237:6:DMA1_Channel6_IRQHandler	0	static
13
+stm32f1xx_it.c:251:6:DMA1_Channel7_IRQHandler	0	static
14
+stm32f1xx_it.c:265:6:USART1_IRQHandler	0	static
15
+stm32f1xx_it.c:279:6:USART2_IRQHandler	0	static
16
+stm32f1xx_it.c:293:6:TIM6_IRQHandler	0	static

+ 461 - 215
Inc/eeprom.h

@@ -8,13 +8,12 @@
8 8
 #ifndef EEPROM_H_
9 9
 #define EEPROM_H_
10 10
 
11
-
12 11
 #define EEPROM_M24C08_ID                  0xA0
13 12
 #define EEPROM_Block0_ADDRESS             EEPROM_M24C08_ID
14 13
 #define EEPROM_ATT_BASE					  0x0000 + 96
15
-
14
+                                             
16 15
 #if 1 // PYJ.2020.04.25_BEGIN -- 
17
-
16
+                                             
18 17
 #define EEPROM_ATT_DL1_TABLE_ADDRESDS	 (( EEPROM_ATT_BASE                 + (sizeof(ATT_TABLE_st))   )  & 0xFFFF) //128
19 18
 #define EEPROM_ATT_DL2_TABLE_ADDRESDS	 (( EEPROM_ATT_DL1_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  ) & 0xFFFF) 
20 19
 #define EEPROM_ATT_DL3_TABLE_ADDRESDS	 (( EEPROM_ATT_DL2_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  ) & 0xFFFF)
@@ -23,22 +22,22 @@
23 22
 #define EEPROM_ATT_UL2_TABLE_ADDRESDS	 (( EEPROM_ATT_UL1_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  )    & 0xFFFF)
24 23
 #define EEPROM_ATT_UL3_TABLE_ADDRESDS	 (( EEPROM_ATT_UL2_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  )    & 0xFFFF)
25 24
 #define EEPROM_ATT_UL4_TABLE_ADDRESDS	 (( EEPROM_ATT_UL3_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  )    & 0xFFFF)//128
26
-#define EEPROM_DET_DL1_TABLE_ADDRESDS	 (( EEPROM_ATT_UL4_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)+ 2))    & 0xFFFF)
27
-#define EEPROM_DET_DL2_TABLE_ADDRESDS	 (( EEPROM_DET_DL1_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)+ 2))    & 0xFFFF)
28
-#define EEPROM_DET_DL3_TABLE_ADDRESDS	 (( EEPROM_DET_DL2_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)+ 2))    & 0xFFFF)
29
-#define EEPROM_DET_DL4_TABLE_ADDRESDS	 (( EEPROM_DET_DL3_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)+ 2))    & 0xFFFF)
30
-#define EEPROM_DET_UL1_TABLE_ADDRESDS	 (( EEPROM_DET_DL4_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st) + 4))     & 0xFFFF)
31
-#define EEPROM_DET_UL2_TABLE_ADDRESDS	 (( EEPROM_DET_UL1_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st)+ 4))     & 0xFFFF)
32
-#define EEPROM_DET_UL3_TABLE_ADDRESDS	 (( EEPROM_DET_UL2_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st)+ 4))     & 0xFFFF)
33
-#define EEPROM_DET_UL4_TABLE_ADDRESDS	 (( EEPROM_DET_UL3_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st)+ 4))     & 0xFFFF)
34
-#define EEPROM_TEMP_DL1_TABLE_ADDRESDS	 (( EEPROM_DET_UL4_TABLE_ADDRESDS  + (sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
35
-#define EEPROM_TEMP_DL2_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL1_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
36
-#define EEPROM_TEMP_DL3_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL2_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
37
-#define EEPROM_TEMP_DL4_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL3_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
38
-#define EEPROM_TEMP_UL1_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL4_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
39
-#define EEPROM_TEMP_UL2_TABLE_ADDRESDS	 (( EEPROM_TEMP_UL1_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
40
-#define EEPROM_TEMP_UL3_TABLE_ADDRESDS	 (( EEPROM_TEMP_UL2_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
41
-#define EEPROM_TEMP_UL4_TABLE_ADDRESDS	 (( EEPROM_TEMP_UL3_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)+12))     & 0xFFFF)
25
+#define EEPROM_DET_DL1_TABLE_ADDRESDS	 (( EEPROM_ATT_UL4_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)))    & 0xFFFF)
26
+#define EEPROM_DET_DL2_TABLE_ADDRESDS	 (( EEPROM_DET_DL1_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)))    & 0xFFFF)
27
+#define EEPROM_DET_DL3_TABLE_ADDRESDS	 (( EEPROM_DET_DL2_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)))    & 0xFFFF)
28
+#define EEPROM_DET_DL4_TABLE_ADDRESDS	 (( EEPROM_DET_DL3_TABLE_ADDRESDS  + (sizeof(DET_TABLEDL_st)))    & 0xFFFF)
29
+#define EEPROM_DET_UL1_TABLE_ADDRESDS	 (( EEPROM_DET_DL4_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st)))     & 0xFFFF)
30
+#define EEPROM_DET_UL2_TABLE_ADDRESDS	 (( EEPROM_DET_UL1_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st)))     & 0xFFFF)
31
+#define EEPROM_DET_UL3_TABLE_ADDRESDS	 (( EEPROM_DET_UL2_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st)))     & 0xFFFF)
32
+#define EEPROM_DET_UL4_TABLE_ADDRESDS	 (( EEPROM_DET_UL3_TABLE_ADDRESDS  + (sizeof(DET_TABLEUL_st)))     & 0xFFFF)
33
+#define EEPROM_TEMP_DL1_TABLE_ADDRESDS	 (( EEPROM_DET_UL4_TABLE_ADDRESDS  + (sizeof(TEMP_TABLE_st)))     & 0xFFFF)
34
+#define EEPROM_TEMP_DL2_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL1_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)))     & 0xFFFF)
35
+#define EEPROM_TEMP_DL3_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL2_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)))     & 0xFFFF)
36
+#define EEPROM_TEMP_DL4_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL3_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)))     & 0xFFFF)
37
+#define EEPROM_TEMP_UL1_TABLE_ADDRESDS	 (( EEPROM_TEMP_DL4_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)))     & 0xFFFF)
38
+#define EEPROM_TEMP_UL2_TABLE_ADDRESDS	 (( EEPROM_TEMP_UL1_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)))     & 0xFFFF)
39
+#define EEPROM_TEMP_UL3_TABLE_ADDRESDS	 (( EEPROM_TEMP_UL2_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)))     & 0xFFFF)
40
+#define EEPROM_TEMP_UL4_TABLE_ADDRESDS	 (( EEPROM_TEMP_UL3_TABLE_ADDRESDS +( sizeof(TEMP_TABLE_st)))     & 0xFFFF)
42 41
 #define EEPROM_USER_ATTEN_VALUE_ADDRESDS (( EEPROM_TEMP_UL4_TABLE_ADDRESDS +( sizeof(USER_ATTEN_st)+16))     & 0xFFFF)
43 42
 #define EEPROM_WINDOW_STATUS_ADDRESDS	 ((EEPROM_USER_ATTEN_VALUE_ADDRESDS + (sizeof(BLUESTATUS_st))) & 0xFFFF) //96byte
44 43
 
@@ -107,91 +106,105 @@ typedef struct{
107 106
 }USER_ATTEN_st;
108 107
 
109 108
 
110
-
111 109
 typedef struct{
112
-
113
-  uint8_t Table_10_Temp_H;   uint8_t Table_10_Temp_L;
114
-  uint8_t Table_15_Temp_H;   uint8_t Table_15_Temp_L;
115
-  uint8_t Table_20_Temp_H;   uint8_t Table_20_Temp_L;
116
-  uint8_t Table_25_Temp_H;   uint8_t Table_25_Temp_L;
117
-  uint8_t Table_30_Temp_H;   uint8_t Table_30_Temp_L;
118
-  uint8_t Table_35_Temp_H;   uint8_t Table_35_Temp_L;
119
-  uint8_t Table_40_Temp_H;   uint8_t Table_40_Temp_L;
120
-  uint8_t Table_45_Temp_H;   uint8_t Table_45_Temp_L;
121
-  uint8_t Table_50_Temp_H;   uint8_t Table_50_Temp_L;
122
-  uint8_t Table_55_Temp_H;   uint8_t Table_55_Temp_L;
123
-}TEMP_TABLE_st;
124
-
125
-
126
-
127
-typedef struct{
128
-  uint8_t Table_0_0_dBm;
129
-  uint8_t Table_0_5_dBm;
130
-  uint8_t Table_1_0_dBm;
131
-  uint8_t Table_1_5_dBm;
132
-  uint8_t Table_2_0_dBm;
133
-  uint8_t Table_2_5_dBm;
134
-  uint8_t Table_3_0_dBm;
135
-  uint8_t Table_3_5_dBm;
136
-  uint8_t Table_4_0_dBm;
137
-  uint8_t Table_4_5_dBm;
138
-  uint8_t Table_5_0_dBm;
139
-  uint8_t Table_5_5_dBm;
140
-  uint8_t Table_6_0_dBm;
141
-  uint8_t Table_6_5_dBm;
142
-  uint8_t Table_7_0_dBm;
143
-  uint8_t Table_7_5_dBm;
144
-  uint8_t Table_8_0_dBm;
145
-  uint8_t Table_8_5_dBm;
146
-  uint8_t Table_9_0_dBm;
147
-  uint8_t Table_9_5_dBm;
148
-  uint8_t Table_10_0_dBm;
149
-  uint8_t Table_10_5_dBm;
150
-  uint8_t Table_11_0_dBm;
151
-  uint8_t Table_11_5_dBm;
152
-  uint8_t Table_12_0_dBm;
153
-  uint8_t Table_12_5_dBm;
154
-  uint8_t Table_13_0_dBm;
155
-  uint8_t Table_13_5_dBm;
156
-  uint8_t Table_14_0_dBm;
157
-  uint8_t Table_14_5_dBm;
158
-  uint8_t Table_15_0_dBm;
159
-  uint8_t Table_15_5_dBm;
160
-  uint8_t Table_16_0_dBm;
161
-  uint8_t Table_16_5_dBm;
162
-  uint8_t Table_17_0_dBm;
163
-  uint8_t Table_17_5_dBm;
164
-  uint8_t Table_18_0_dBm;
165
-  uint8_t Table_18_5_dBm;
166
-  uint8_t Table_19_0_dBm;
167
-  uint8_t Table_19_5_dBm;
168
-  uint8_t Table_20_0_dBm;
169
-  uint8_t Table_20_5_dBm;
170
-  uint8_t Table_21_0_dBm;
171
-  uint8_t Table_21_5_dBm;
172
-  uint8_t Table_22_0_dBm;
173
-  uint8_t Table_22_5_dBm;
174
-  uint8_t Table_23_0_dBm;
175
-  uint8_t Table_23_5_dBm;
176
-  uint8_t Table_24_0_dBm;
177
-  uint8_t Table_24_5_dBm;
178
-  uint8_t Table_25_0_dBm;
179
-  uint8_t Table_25_5_dBm;
180
-  uint8_t Table_26_0_dBm;
181
-  uint8_t Table_26_5_dBm;
182
-  uint8_t Table_27_0_dBm;
183
-  uint8_t Table_27_5_dBm;
184
-  uint8_t Table_28_0_dBm;
185
-  uint8_t Table_28_5_dBm;
186
-  uint8_t Table_29_0_dBm;
187
-  uint8_t Table_29_5_dBm;
188
-  uint8_t Table_30_0_dBm;
189
-  uint8_t Table_30_5_dBm;
190
-  uint8_t Table_31_0_dBm;
191
-  uint8_t Table_31_5_dBm;
110
+    uint8_t Table_0_0_dBm;
111
+    uint8_t Table_0_5_dBm;
112
+    uint8_t Table_1_0_dBm;
113
+    uint8_t Table_1_5_dBm;
114
+    uint8_t Table_2_0_dBm;
115
+    uint8_t Table_2_5_dBm;
116
+    uint8_t Table_3_0_dBm;
117
+    uint8_t Table_3_5_dBm;
118
+    uint8_t Table_4_0_dBm;
119
+    uint8_t Table_4_5_dBm;
120
+    uint8_t Table_5_0_dBm;
121
+    uint8_t Table_5_5_dBm;
122
+    uint8_t Table_6_0_dBm;
123
+    uint8_t Table_6_5_dBm;
124
+    uint8_t Table_7_0_dBm;
125
+    uint8_t Table_7_5_dBm;
126
+    uint8_t Table_8_0_dBm;
127
+    uint8_t Table_8_5_dBm;
128
+    uint8_t Table_9_0_dBm;
129
+    uint8_t Table_9_5_dBm;
130
+    uint8_t Table_10_0_dBm;
131
+    uint8_t Table_10_5_dBm;
132
+    uint8_t Table_11_0_dBm;
133
+    uint8_t Table_11_5_dBm;
134
+    uint8_t Table_12_0_dBm;
135
+    uint8_t Table_12_5_dBm;
136
+    uint8_t Table_13_0_dBm;
137
+    uint8_t Table_13_5_dBm;
138
+    uint8_t Table_14_0_dBm;
139
+    uint8_t Table_14_5_dBm;
140
+    uint8_t Table_15_0_dBm;
141
+    uint8_t Table_15_5_dBm;
142
+    uint8_t Table_16_0_dBm;
143
+    uint8_t Table_16_5_dBm;
144
+    uint8_t Table_17_0_dBm;
145
+    uint8_t Table_17_5_dBm;
146
+    uint8_t Table_18_0_dBm;
147
+    uint8_t Table_18_5_dBm;
148
+    uint8_t Table_19_0_dBm;
149
+    uint8_t Table_19_5_dBm;
150
+    uint8_t Table_20_0_dBm;
151
+    uint8_t Table_20_5_dBm;
152
+    uint8_t Table_21_0_dBm;
153
+    uint8_t Table_21_5_dBm;
154
+    uint8_t Table_22_0_dBm;
155
+    uint8_t Table_22_5_dBm;
156
+    uint8_t Table_23_0_dBm;
157
+    uint8_t Table_23_5_dBm;
158
+    uint8_t Table_24_0_dBm;
159
+    uint8_t Table_24_5_dBm;
160
+    uint8_t Table_25_0_dBm;
161
+    uint8_t Table_25_5_dBm;
162
+    uint8_t Table_26_0_dBm;
163
+    uint8_t Table_26_5_dBm;
164
+    uint8_t Table_27_0_dBm;
165
+    uint8_t Table_27_5_dBm;
166
+    uint8_t Table_28_0_dBm;
167
+    uint8_t Table_28_5_dBm;
168
+    uint8_t Table_29_0_dBm;
169
+    uint8_t Table_29_5_dBm;
170
+    uint8_t Table_30_0_dBm;
171
+    uint8_t Table_30_5_dBm;
172
+    uint8_t Table_31_0_dBm;
173
+    uint8_t Table_31_5_dBm;
174
+    uint8_t Table_xx_x_1_dBm;
175
+    uint8_t Table_xx_x_2_dBm;
176
+    uint8_t Table_xx_x_3_dBm;
177
+    uint8_t Table_xx_x_4_dBm;
178
+    uint8_t Table_xx_x_5_dBm;
179
+    uint8_t Table_xx_x_6_dBm;
180
+    uint8_t Table_xx_x_7_dBm;
181
+    uint8_t Table_xx_x_8_dBm;
182
+    uint8_t Table_xx_x_9_dBm;
183
+    uint8_t Table_xx_x_10_dBm;
184
+    uint8_t Table_xx_x_11_dBm;
185
+    uint8_t Table_xx_x_12_dBm;
186
+    uint8_t Table_xx_x_13_dBm;
187
+    uint8_t Table_xx_x_14_dBm;
188
+    uint8_t Table_xx_x_15_dBm;
189
+    uint8_t Table_xx_x_16_dBm;
190
+    uint8_t Table_xx_x_17_dBm;
191
+    uint8_t Table_xx_x_18_dBm;
192
+    uint8_t Table_xx_x_19_dBm;
193
+    uint8_t Table_xx_x_20_dBm;
194
+    uint8_t Table_xx_x_21_dBm;
195
+    uint8_t Table_xx_x_22_dBm;
196
+    uint8_t Table_xx_x_23_dBm;
197
+    uint8_t Table_xx_x_24_dBm;
198
+    uint8_t Table_xx_x_25_dBm;
199
+    uint8_t Table_xx_x_26_dBm;
200
+    uint8_t Table_xx_x_27_dBm;
201
+    uint8_t Table_xx_x_28_dBm;
202
+    uint8_t Table_xx_x_29_dBm;
203
+    uint8_t Table_xx_x_30_dBm;
204
+    uint8_t Table_Ref;
205
+    uint8_t Table_Length;
192 206
 }ATT_TABLE_st;
193 207
 typedef struct{
194
-
195 208
     uint8_t Table_Det5_dBm_H	;
196 209
     uint8_t Table_Det5_dBm_L	;
197 210
     uint8_t Table_Det4_dBm_H	;
@@ -254,102 +267,303 @@ typedef struct{
254 267
     uint8_t Table_Det_24_dBm_L	;
255 268
     uint8_t Table_Det_25_dBm_H	;
256 269
     uint8_t Table_Det_25_dBm_L	;
270
+    uint8_t Table_Det_xx1_dBm_H	;
271
+    uint8_t Table_Det_xx1_dBm_L	;
272
+    uint8_t Table_Det_xx2_dBm_H	;
273
+    uint8_t Table_Det_xx2_dBm_L	;
274
+    uint8_t Table_Det_xx3_dBm_H	;
275
+    uint8_t Table_Det_xx3_dBm_L	;
276
+    uint8_t Table_Det_xx4_dBm_H	;
277
+    uint8_t Table_Det_xx4_dBm_L	;
278
+    uint8_t Table_Det_xx5_dBm_H	;
279
+    uint8_t Table_Det_xx5_dBm_L	;
280
+    uint8_t Table_Det_xx6_dBm_H	;
281
+    uint8_t Table_Det_xx6_dBm_L	;
282
+    uint8_t Table_Det_xx7_dBm_H	;
283
+    uint8_t Table_Det_xx7_dBm_L	;
284
+    uint8_t Table_Det_xx8_dBm_H	;
285
+    uint8_t Table_Det_xx8_dBm_L	;
286
+    uint8_t Table_Det_xx9_dBm_H	;
287
+    uint8_t Table_Det_xx9_dBm_L	;
288
+    uint8_t Table_Det_xx10_dBm_H	;
289
+    uint8_t Table_Det_xx10_dBm_L	;
290
+    uint8_t Table_Det_xx11_dBm_H	;
291
+    uint8_t Table_Det_xx11_dBm_L	;
292
+    uint8_t Table_Det_xx12_dBm_H	;
293
+    uint8_t Table_Det_xx12_dBm_L	;
294
+    uint8_t Table_Det_xx13_dBm_H	;
295
+    uint8_t Table_Det_xx13_dBm_L	;
296
+    uint8_t Table_Det_xx14_dBm_H	;
297
+    uint8_t Table_Det_xx14_dBm_L	;
298
+    uint8_t Table_Det_xx15_dBm_H	;
299
+    uint8_t Table_Det_xx15_dBm_L	;
300
+    uint8_t Table_Det_xx16_dBm_H	;
301
+    uint8_t Table_Det_xx16_dBm_L	;
302
+    uint8_t Table_Det_xx17_dBm_H	;
303
+    uint8_t Table_Det_xx17_dBm_L	;
304
+    uint8_t Table_Det_xx18_dBm_H	;
305
+    uint8_t Table_Det_xx18_dBm_L	;
306
+    uint8_t Table_Det_xx19_dBm_H	;
307
+    uint8_t Table_Det_xx19_dBm_L	;
308
+    uint8_t Table_Det_xx20_dBm_H	;
309
+    uint8_t Table_Det_xx20_dBm_L	;
310
+    uint8_t Table_Det_xx21_dBm_H	;
311
+    uint8_t Table_Det_xx21_dBm_L	;
312
+    uint8_t Table_Det_xx22_dBm_H	;
313
+    uint8_t Table_Det_xx22_dBm_L	;
314
+    uint8_t Table_Det_xx23_dBm_H	;
315
+    uint8_t Table_Det_xx23_dBm_L	;
316
+    uint8_t Table_Det_xx24_dBm_H	;
317
+    uint8_t Table_Det_xx24_dBm_L	;
318
+    uint8_t Table_Det_xx25_dBm_H	;
319
+    uint8_t Table_Det_xx25_dBm_L	;
320
+    uint8_t Table_Det_xx26_dBm_H	;
321
+    uint8_t Table_Det_xx26_dBm_L	;
322
+    uint8_t Table_Det_xx27_dBm_H	;
323
+    uint8_t Table_Det_xx27_dBm_L	;
324
+    uint8_t Table_Det_xx28_dBm_H	;
325
+    uint8_t Table_Det_xx28_dBm_L	;
326
+    uint8_t Table_Det_xx29_dBm_H	;
327
+    uint8_t Table_Det_xx29_dBm_L	;
328
+    uint8_t Table_Det_xx30_dBm_H	;
329
+    uint8_t Table_Det_xx30_dBm_L	;
330
+    uint8_t Table_Det_xx31_dBm_H	;
331
+    uint8_t Table_Det_xx31_dBm_L	;
332
+    uint8_t Table_Det_xx32_dBm_H	;
333
+    uint8_t Table_Det_xx32_dBm_L	;
334
+    uint8_t Table_Det_xx33_dBm_H	;
335
+    uint8_t Table_Det_xx33_dBm_L	;
336
+    uint8_t Table_Det_xx34_dBm_H	;
337
+    uint8_t Table_Det_xx34_dBm_L	;
338
+    uint8_t Table_Det_xx35_dBm_H	;
339
+    uint8_t Table_Det_xx35_dBm_L	;
340
+    uint8_t Table_Det_xx36_dBm_H	;
341
+    uint8_t Table_Det_xx36_dBm_L	;
342
+    uint8_t Table_Det_xx37_dBm_H	;
343
+    uint8_t Table_Det_xx37_dBm_L	;
344
+    uint8_t Table_Det_xx38_dBm_H	;
345
+    uint8_t Table_Det_xx38_dBm_L	;
346
+    uint8_t Table_Det_xx39_dBm_H	;
347
+    uint8_t Table_Det_xx39_dBm_L	;
348
+    uint8_t Table_Det_xx40_dBm_H	;
349
+    uint8_t Table_Det_xx40_dBm_L	;
350
+    uint8_t Table_Det_xx41_dBm_H	;
351
+    uint8_t Table_Det_xx41_dBm_L	;
352
+    uint8_t Table_Det_xx42_dBm_H	;
353
+    uint8_t Table_Det_xx42_dBm_L	;
354
+    uint8_t Table_Det_xx43_dBm_H	;
355
+    uint8_t Table_Det_xx43_dBm_L	;
356
+    uint8_t Table_Det_xx44_dBm_H	;
357
+    uint8_t Table_Det_xx44_dBm_L	;
358
+    uint8_t Table_Det_xx45_dBm_H	;
359
+    uint8_t Table_Det_xx45_dBm_L	;
360
+    uint8_t Table_Det_xx46_dBm_H	;
361
+    uint8_t Table_Det_xx46_dBm_L	;
362
+    uint8_t Table_Det_xx47_dBm_H	;
363
+    uint8_t Table_Det_xx47_dBm_L	;
364
+    uint8_t Table_Det_xx48_dBm_H	;
365
+    uint8_t Table_Det_xx48_dBm_L	;
366
+    uint8_t Table_Ref	;
367
+    uint8_t Table_Length	;
257 368
 }DET_TABLEDL_st;
258 369
 typedef struct{
259
-  uint8_t Table_Det_15_dBm_H	;   
260
-  uint8_t Table_Det_15_dBm_L	;
261
-  uint8_t Table_Det_16_dBm_H	;   
262
-  uint8_t Table_Det_16_dBm_L	;
263
-  uint8_t Table_Det_17_dBm_H	;   
264
-  uint8_t Table_Det_17_dBm_L	;
265
-  uint8_t Table_Det_18_dBm_H	;   
266
-  uint8_t Table_Det_18_dBm_L	;
267
-  uint8_t Table_Det_19_dBm_H	;   
268
-  uint8_t Table_Det_19_dBm_L	;
269
-  uint8_t Table_Det_20_dBm_H	;//1.8
270
-  uint8_t Table_Det_20_dBm_L	;//1.6
271
-  uint8_t Table_Det_21_dBm_H	;//1.4   
272
-  uint8_t Table_Det_21_dBm_L	;
273
-  uint8_t Table_Det_22_dBm_H	;   
274
-  uint8_t Table_Det_22_dBm_L	;
275
-  uint8_t Table_Det_23_dBm_H	;   
276
-  uint8_t Table_Det_23_dBm_L	;
277
-  uint8_t Table_Det_24_dBm_H	;   
278
-  uint8_t Table_Det_24_dBm_L	;
279
-  uint8_t Table_Det_25_dBm_H	;   
280
-  uint8_t Table_Det_25_dBm_L	;
281
-  uint8_t Table_Det_26_dBm_H	;   
282
-  uint8_t Table_Det_26_dBm_L	;
283
-  uint8_t Table_Det_27_dBm_H	;   
284
-  uint8_t Table_Det_27_dBm_L	;
285
-  uint8_t Table_Det_28_dBm_H	;   
286
-  uint8_t Table_Det_28_dBm_L	;
287
-  uint8_t Table_Det_29_dBm_H	;   
288
-  uint8_t Table_Det_29_dBm_L	;
289
-  uint8_t Table_Det_30_dBm_H	;   
290
-  uint8_t Table_Det_30_dBm_L	;
291
-  uint8_t Table_Det_31_dBm_H	;   
292
-  uint8_t Table_Det_31_dBm_L	;
293
-  uint8_t Table_Det_32_dBm_H	;   
294
-  uint8_t Table_Det_32_dBm_L	;
295
-  uint8_t Table_Det_33_dBm_H	;   
296
-  uint8_t Table_Det_33_dBm_L	;
297
-  uint8_t Table_Det_34_dBm_H	;   
298
-  uint8_t Table_Det_34_dBm_L	;
299
-  uint8_t Table_Det_35_dBm_H	;   
300
-  uint8_t Table_Det_35_dBm_L	;
301
-  uint8_t Table_Det_36_dBm_H	;  
302
-  uint8_t Table_Det_36_dBm_L	;
303
-  uint8_t Table_Det_37_dBm_H	;  
304
-  uint8_t Table_Det_37_dBm_L	;
305
-  uint8_t Table_Det_38_dBm_H	;   
306
-  uint8_t Table_Det_38_dBm_L	;
307
-  uint8_t Table_Det_39_dBm_H	;  
308
-  uint8_t Table_Det_39_dBm_L	;
309
-  uint8_t Table_Det_40_dBm_H	;  
310
-  uint8_t Table_Det_40_dBm_L	;
311
-  uint8_t Table_Det_41_dBm_H	;  
312
-  uint8_t Table_Det_41_dBm_L	;
313
-  uint8_t Table_Det_42_dBm_H	; 
314
-  uint8_t Table_Det_42_dBm_L	;
315
-  uint8_t Table_Det_43_dBm_H	;  
316
-  uint8_t Table_Det_43_dBm_L	;
317
-  uint8_t Table_Det_44_dBm_H	;  
318
-  uint8_t Table_Det_44_dBm_L	;
319
-  uint8_t Table_Det_45_dBm_H	;  
320
-  uint8_t Table_Det_45_dBm_L	;
321
-  uint8_t Table_Det_46_dBm_H	;   
322
-  uint8_t Table_Det_46_dBm_L	;
323
-  uint8_t Table_Det_47_dBm_H	; 
324
-  uint8_t Table_Det_47_dBm_L	;
325
-  uint8_t Table_Det_48_dBm_H	;   
326
-  uint8_t Table_Det_48_dBm_L	;
327
-  uint8_t Table_Det_49_dBm_H	; 
328
-  uint8_t Table_Det_49_dBm_L	;
329
-  uint8_t Table_Det_50_dBm_H	;  
330
-  uint8_t Table_Det_50_dBm_L	;
331
-  uint8_t Table_Det_51_dBm_H	;  
332
-  uint8_t Table_Det_51_dBm_L	;
333
-  uint8_t Table_Det_52_dBm_H	;  
334
-  uint8_t Table_Det_52_dBm_L	;
335
-  uint8_t Table_Det_53_dBm_H	;  
336
-  uint8_t Table_Det_53_dBm_L	;
337
-  uint8_t Table_Det_54_dBm_H	;  
338
-  uint8_t Table_Det_54_dBm_L	;
339
-  uint8_t Table_Det_55_dBm_H	;  
340
-  uint8_t Table_Det_55_dBm_L	;
341
-  uint8_t Table_Det_56_dBm_H	;  
342
-  uint8_t Table_Det_56_dBm_L	;
343
-  uint8_t Table_Det_57_dBm_H	;  
344
-  uint8_t Table_Det_57_dBm_L	;
345
-  uint8_t Table_Det_58_dBm_H	;  
346
-  uint8_t Table_Det_58_dBm_L	;
347
-  uint8_t Table_Det_59_dBm_H	;  
348
-  uint8_t Table_Det_59_dBm_L	;
349
-  uint8_t Table_Det_60_dBm_H	;   
350
-  uint8_t Table_Det_60_dBm_L	;
370
+      uint8_t Table_Det_15_dBm_H  ;   
371
+      uint8_t Table_Det_15_dBm_L    ;
372
+      uint8_t Table_Det_16_dBm_H    ;   
373
+      uint8_t Table_Det_16_dBm_L    ;
374
+      uint8_t Table_Det_17_dBm_H    ;   
375
+      uint8_t Table_Det_17_dBm_L    ;
376
+      uint8_t Table_Det_18_dBm_H    ;   
377
+      uint8_t Table_Det_18_dBm_L    ;
378
+      uint8_t Table_Det_19_dBm_H    ;   
379
+      uint8_t Table_Det_19_dBm_L    ;
380
+      uint8_t Table_Det_20_dBm_H    ;
381
+      uint8_t Table_Det_20_dBm_L    ;
382
+      uint8_t Table_Det_21_dBm_H    ;
383
+      uint8_t Table_Det_21_dBm_L    ;
384
+      uint8_t Table_Det_22_dBm_H    ;   
385
+      uint8_t Table_Det_22_dBm_L    ;
386
+      uint8_t Table_Det_23_dBm_H    ;   
387
+      uint8_t Table_Det_23_dBm_L    ;
388
+      uint8_t Table_Det_24_dBm_H    ;   
389
+      uint8_t Table_Det_24_dBm_L    ;
390
+      uint8_t Table_Det_25_dBm_H    ;   
391
+      uint8_t Table_Det_25_dBm_L    ;
392
+      uint8_t Table_Det_26_dBm_H    ;   
393
+      uint8_t Table_Det_26_dBm_L    ;
394
+      uint8_t Table_Det_27_dBm_H    ;   
395
+      uint8_t Table_Det_27_dBm_L    ;
396
+      uint8_t Table_Det_28_dBm_H    ;   
397
+      uint8_t Table_Det_28_dBm_L    ;
398
+      uint8_t Table_Det_29_dBm_H    ;   
399
+      uint8_t Table_Det_29_dBm_L    ;
400
+      uint8_t Table_Det_30_dBm_H    ;   
401
+      uint8_t Table_Det_30_dBm_L    ;
402
+      uint8_t Table_Det_31_dBm_H    ;   
403
+      uint8_t Table_Det_31_dBm_L    ;
404
+      uint8_t Table_Det_32_dBm_H    ;   
405
+      uint8_t Table_Det_32_dBm_L    ;
406
+      uint8_t Table_Det_33_dBm_H    ;   
407
+      uint8_t Table_Det_33_dBm_L    ;
408
+      uint8_t Table_Det_34_dBm_H    ;   
409
+      uint8_t Table_Det_34_dBm_L    ;
410
+      uint8_t Table_Det_35_dBm_H    ;   
411
+      uint8_t Table_Det_35_dBm_L    ;
412
+      uint8_t Table_Det_36_dBm_H    ;  
413
+      uint8_t Table_Det_36_dBm_L    ;
414
+      uint8_t Table_Det_37_dBm_H    ;  
415
+      uint8_t Table_Det_37_dBm_L    ;
416
+      uint8_t Table_Det_38_dBm_H    ;   
417
+      uint8_t Table_Det_38_dBm_L    ;
418
+      uint8_t Table_Det_39_dBm_H    ;  
419
+      uint8_t Table_Det_39_dBm_L    ;
420
+      uint8_t Table_Det_40_dBm_H    ;  
421
+      uint8_t Table_Det_40_dBm_L    ;
422
+      uint8_t Table_Det_41_dBm_H    ;  
423
+      uint8_t Table_Det_41_dBm_L    ;
424
+      uint8_t Table_Det_42_dBm_H    ; 
425
+      uint8_t Table_Det_42_dBm_L    ;
426
+      uint8_t Table_Det_43_dBm_H    ;  
427
+      uint8_t Table_Det_43_dBm_L    ;
428
+      uint8_t Table_Det_44_dBm_H    ;  
429
+      uint8_t Table_Det_44_dBm_L    ;
430
+      uint8_t Table_Det_45_dBm_H    ;  
431
+      uint8_t Table_Det_45_dBm_L    ;
432
+      uint8_t Table_Det_46_dBm_H    ;   
433
+      uint8_t Table_Det_46_dBm_L    ;
434
+      uint8_t Table_Det_47_dBm_H    ; 
435
+      uint8_t Table_Det_47_dBm_L    ;
436
+      uint8_t Table_Det_48_dBm_H    ;   
437
+      uint8_t Table_Det_48_dBm_L    ;
438
+      uint8_t Table_Det_49_dBm_H    ; 
439
+      uint8_t Table_Det_49_dBm_L    ;
440
+      uint8_t Table_Det_50_dBm_H    ;  
441
+      uint8_t Table_Det_50_dBm_L    ;
442
+      uint8_t Table_Det_51_dBm_H    ;  
443
+      uint8_t Table_Det_51_dBm_L    ;
444
+      uint8_t Table_Det_52_dBm_H    ;  
445
+      uint8_t Table_Det_52_dBm_L    ;
446
+      uint8_t Table_Det_53_dBm_H    ;  
447
+      uint8_t Table_Det_53_dBm_L    ;
448
+      uint8_t Table_Det_54_dBm_H    ;  
449
+      uint8_t Table_Det_54_dBm_L    ;
450
+      uint8_t Table_Det_55_dBm_H    ;  
451
+      uint8_t Table_Det_55_dBm_L    ;
452
+      uint8_t Table_Det_56_dBm_H    ;  
453
+      uint8_t Table_Det_56_dBm_L    ;
454
+      uint8_t Table_Det_57_dBm_H    ;  
455
+      uint8_t Table_Det_57_dBm_L    ;
456
+      uint8_t Table_Det_58_dBm_H    ;  
457
+      uint8_t Table_Det_58_dBm_L    ;
458
+      uint8_t Table_Det_59_dBm_H    ;  
459
+      uint8_t Table_Det_59_dBm_L    ;
460
+      uint8_t Table_Det_60_dBm_H    ;   
461
+      uint8_t Table_Det_60_dBm_L    ;
462
+      uint8_t Table_Det_XX1_dBm_H   ;   
463
+      uint8_t Table_Det_XX1_dBm_L   ;
464
+      uint8_t Table_Det_XX2_dBm_H   ;   
465
+      uint8_t Table_Det_XX2_dBm_L   ;
466
+      uint8_t Table_Det_XX3_dBm_H   ;   
467
+      uint8_t Table_Det_XX3_dBm_L   ;
468
+      uint8_t Table_Det_XX4_dBm_H   ;   
469
+      uint8_t Table_Det_XX4_dBm_L   ;
470
+      uint8_t Table_Det_XX5_dBm_H   ;   
471
+      uint8_t Table_Det_XX5_dBm_L   ;
472
+      uint8_t Table_Det_XX6_dBm_H   ;   
473
+      uint8_t Table_Det_XX6_dBm_L   ;
474
+      uint8_t Table_Det_XX7_dBm_H   ;   
475
+      uint8_t Table_Det_XX7_dBm_L   ;
476
+      uint8_t Table_Det_XX8_dBm_H   ;   
477
+      uint8_t Table_Det_XX8_dBm_L   ;
478
+      uint8_t Table_Det_XX9_dBm_H   ;   
479
+      uint8_t Table_Det_XX9_dBm_L   ;
480
+      uint8_t Table_Det_XX10_dBm_H  ;   
481
+      uint8_t Table_Det_XX10_dBm_L  ;
482
+      uint8_t Table_Det_XX11_dBm_H  ;   
483
+      uint8_t Table_Det_XX11_dBm_L  ;
484
+      uint8_t Table_Det_XX12_dBm_H  ;   
485
+      uint8_t Table_Det_XX12_dBm_L  ;
486
+      uint8_t Table_Det_XX13_dBm_H  ;   
487
+      uint8_t Table_Det_XX13_dBm_L  ;
488
+      uint8_t Table_Det_XX14_dBm_H  ;   
489
+      uint8_t Table_Det_XX14_dBm_L  ;
490
+      uint8_t Table_Det_XX15_dBm_H  ;   
491
+      uint8_t Table_Det_XX15_dBm_L  ;
492
+      uint8_t Table_Det_XX16_dBm_H  ;   
493
+      uint8_t Table_Det_XX16_dBm_L  ;
494
+      uint8_t Table_Det_XX17_dBm_H  ;   
495
+      uint8_t Table_Det_XX17_dBm_L  ;
496
+      uint8_t Table_Det_XX18_dBm_H  ;   
497
+      uint8_t Table_Det_XX18_dBm_L  ;
498
+      uint8_t Table_Det_XX19_dBm_H  ;   
499
+      uint8_t Table_Det_XX19_dBm_L  ;
500
+      uint8_t Table_Det_XX20_dBm_H  ;   
501
+      uint8_t Table_Det_XX20_dBm_L  ;
502
+      uint8_t Table_Det_XX21_dBm_H  ;   
503
+      uint8_t Table_Det_XX21_dBm_L  ;
504
+      uint8_t Table_Det_XX22_dBm_H  ;   
505
+      uint8_t Table_Det_XX22_dBm_L  ;
506
+      uint8_t Table_Det_XX23_dBm_H  ;   
507
+      uint8_t Table_Det_XX23_dBm_L  ;
508
+      uint8_t Table_Det_XX24_dBm_H  ;   
509
+      uint8_t Table_Det_XX24_dBm_L  ;
510
+      uint8_t Table_Det_XX25_dBm_H  ;   
511
+      uint8_t Table_Det_XX25_dBm_L  ;
512
+      uint8_t Table_Det_XX26_dBm_H  ;   
513
+      uint8_t Table_Det_XX26_dBm_L  ;
514
+      uint8_t Table_Det_XX27_dBm_H  ;   
515
+      uint8_t Table_Det_XX27_dBm_L  ;
516
+      uint8_t Table_Det_XX28_dBm_H  ;   
517
+      uint8_t Table_Det_XX28_dBm_L  ;
518
+      uint8_t Table_Det_XX29_dBm_H  ;   
519
+      uint8_t Table_Det_XX29_dBm_L  ;
520
+      uint8_t Table_Det_XX30_dBm_H  ;   
521
+      uint8_t Table_Det_XX30_dBm_L  ;
522
+      uint8_t Table_Det_XX31_dBm_H  ;   
523
+      uint8_t Table_Det_XX31_dBm_L  ;
524
+      uint8_t Table_Det_XX32_dBm_H  ;   
525
+      uint8_t Table_Det_XX32_dBm_L  ;
526
+      uint8_t Table_Det_XX33_dBm_H  ;   
527
+      uint8_t Table_Det_XX33_dBm_L  ;
528
+      uint8_t Table_Ref  ;   
529
+      uint8_t Table_Length  ;
351 530
 }DET_TABLEUL_st;
352 531
 
532
+typedef struct{
533
+  int8_t Table_1_Temp;   
534
+  int8_t Table_2_Temp;
535
+  int8_t Table_3_Temp;   
536
+  int8_t Table_4_Temp;
537
+  int8_t Table_5_Temp;   
538
+  int8_t Table_6_Temp;
539
+  int8_t Table_7_Temp;   
540
+  int8_t Table_8_Temp;
541
+  int8_t Table_9_Temp;   
542
+  int8_t Table_10_Temp;
543
+  int8_t Table_11_Temp;   
544
+  int8_t Table_12_Temp;
545
+  int8_t Table_13_Temp;   
546
+  int8_t Table_14_Temp;
547
+  int8_t Table_15_Temp;   
548
+  int8_t Table_16_Temp;
549
+  int8_t Table_17_Temp;   
550
+  int8_t Table_18_Temp;
551
+  int8_t Table_19_Temp;   
552
+  int8_t Table_20_Temp;
553
+  int8_t Table_21_Temp;   
554
+  int8_t Table_22_Temp;
555
+  int8_t Table_23_Temp;   
556
+  int8_t Table_24_Temp;
557
+  int8_t Table_25_Temp;   
558
+  int8_t Table_26_Temp;
559
+  int8_t Table_27_Temp;   
560
+  int8_t Table_28_Temp;
561
+  int8_t Table_29_Temp;   
562
+  int8_t Table_30_Temp;  
563
+  int8_t Table_Ref;
564
+  int8_t Table_Length;
565
+}TEMP_TABLE_st;
566
+
353 567
 
354 568
 typedef struct{
355 569
     uint8_t bluecell_header;
@@ -400,7 +614,7 @@ typedef struct{
400 614
     uint8_t DLI_P3_Level3_L;
401 615
     uint8_t DLI_P4_Level4_H;
402 616
     uint8_t DLI_P4_Level4_L;    
403
-    uint8_t DET_TEMP;
617
+    int8_t DET_TEMP;
404 618
     uint8_t DLI_AGC_ON_OFF;
405 619
     uint8_t ULO_ALC_ON_OFF;
406 620
     uint8_t ULO_Level1_H;
@@ -421,11 +635,6 @@ typedef struct{
421 635
     uint8_t DLI_Level4_L; 
422 636
     uint8_t ULO_ALC_Threshold_H;
423 637
     uint8_t ULO_ALC_Threshold_L;
424
-    uint8_t BLUECELL_RESERVE17;
425
-    uint8_t BLUECELL_RESERVE18;
426
-    uint8_t BLUECELL_RESERVE19;
427
-    uint8_t BLUECELL_RESERVE20;
428
-    uint8_t BLUECELL_RESERVE21;
429 638
     uint8_t bluecell_User_DL1_H;  
430 639
     uint8_t bluecell_User_DL1_L;
431 640
     uint8_t bluecell_User_DL2_H;  
@@ -548,16 +757,6 @@ typedef struct{
548 757
     uint8_t ULO_Level_High_Threshold_H;
549 758
     uint8_t ULO_Level_High_Threshold_L;
550 759
     uint8_t ULO_Level_High_Threshold_default;
551
-    uint8_t BLUECELL_RESERVE28;//ADC3   8   
552
-    uint8_t BLUECELL_RESERVE29;//ADC3   8
553
-    uint8_t BLUECELL_RESERVE30;//ADC1   4  
554
-    uint8_t BLUECELL_RESERVE31;//ADC1   4 
555
-    uint8_t BLUECELL_RESERVE32;//ADC1   5 
556
-    uint8_t BLUECELL_RESERVE33;//ADC1   5
557
-    uint8_t BLUECELL_RESERVE34;//ADC1   6
558
-    uint8_t BLUECELL_RESERVE35;//ADC1   6
559
-    uint8_t BLUECELL_RESERVE36;//ADC3   4
560
-    uint8_t BLUECELL_RESERVE37;//ADC3   4
561 760
     uint8_t ULO_Level_High_Alarm1;
562 761
     uint8_t ULO_Level_High_Alarm2;
563 762
     uint8_t ULO_Level_High_Alarm3;
@@ -579,12 +778,59 @@ typedef struct{
579 778
     uint8_t ULO_Shutdown_Alarm2;
580 779
     uint8_t ULO_Shutdown_Alarm3;
581 780
     uint8_t ULO_Shutdown_Alarm4;
582
-    uint8_t Reserve0;
583
-    uint8_t Reserve1;
584
-    uint8_t Reserve2;
585
-    uint8_t Reserve3;
586
-    uint8_t Reserve4;
587
-    uint8_t Reserve5;
781
+    uint8_t MBIC_ULO_ALC_Atten1_H;
782
+    uint8_t MBIC_ULO_ALC_Atten1_L;
783
+    uint8_t MBIC_ULO_ALC_Atten2_H;
784
+    uint8_t MBIC_ULO_ALC_Atten2_L;
785
+    uint8_t MBIC_ULO_ALC_Atten3_H;
786
+    uint8_t MBIC_ULO_ALC_Atten3_L;
787
+    uint8_t MBIC_ULO_ALC_Atten4_H;
788
+    uint8_t MBIC_ULO_ALC_Atten4_L;
789
+    int8_t MBIC_DLI_P1_Level_Table_Ref;
790
+    int8_t MBIC_DLI_P2_Level_Table_Ref;
791
+    int8_t MBIC_DLI_P3_Level_Table_Ref;
792
+    int8_t MBIC_DLI_P4_Level_Table_Ref;
793
+    int8_t MBIC_ULO_P1_Level_Table_Ref;
794
+    int8_t MBIC_ULO_P2_Level_Table_Ref;
795
+    int8_t MBIC_ULO_P3_Level_Table_Ref;
796
+    int8_t MBIC_ULO_P4_Level_Table_Ref;
797
+    int8_t MBIC_TEMP_DL_P1_Level_Table_Ref;
798
+    int8_t MBIC_TEMP_DL_P2_Level_Table_Ref;
799
+    int8_t MBIC_TEMP_DL_P3_Level_Table_Ref;
800
+    int8_t MBIC_TEMP_DL_P4_Level_Table_Ref;
801
+    int8_t MBIC_TEMP_UL_P1_Level_Table_Ref;
802
+    int8_t MBIC_TEMP_UL_P2_Level_Table_Ref;
803
+    int8_t MBIC_TEMP_UL_P3_Level_Table_Ref;
804
+    int8_t MBIC_TEMP_UL_P4_Level_Table_Ref;
805
+    int8_t MBIC_DLI_P1_Table_Length;
806
+    int8_t MBIC_DLI_P2_Table_Length;
807
+    int8_t MBIC_DLI_P3_Table_Length;
808
+    int8_t MBIC_DLI_P4_Table_Length;
809
+    int8_t MBIC_ULO_P1_Table_Length;
810
+    int8_t MBIC_ULO_P2_Table_Length;
811
+    int8_t MBIC_ULO_P3_Table_Length;
812
+    int8_t MBIC_ULO_P4_Table_Length;
813
+    int8_t MBIC_DLI_P1_Level_Table_Length;
814
+    int8_t MBIC_DLI_P2_Level_Table_Length;
815
+    int8_t MBIC_DLI_P3_Level_Table_Length;
816
+    int8_t MBIC_DLI_P4_Level_Table_Length;
817
+    int8_t MBIC_ULO_P1_Level_Table_Length;
818
+    int8_t MBIC_ULO_P2_Level_Table_Length;
819
+    int8_t MBIC_ULO_P3_Level_Table_Length;
820
+    int8_t MBIC_ULO_P4_Level_Table_Length;
821
+    int8_t MBIC_TEMP_DL_P1_Level_Table_Length;
822
+    int8_t MBIC_TEMP_DL_P2_Level_Table_Length;
823
+    int8_t MBIC_TEMP_DL_P3_Level_Table_Length;
824
+    int8_t MBIC_TEMP_DL_P4_Level_Table_Length;
825
+    int8_t MBIC_TEMP_UL_P1_Level_Table_Length;
826
+    int8_t MBIC_TEMP_UL_P2_Level_Table_Length;
827
+    int8_t MBIC_TEMP_UL_P3_Level_Table_Length;
828
+    int8_t MBIC_TEMP_UL_P4_Level_Table_Length;
829
+    uint8_t BLUECELL_RESERVE49;
830
+    uint8_t BLUECELL_RESERVE50;
831
+    uint8_t BLUECELL_RESERVE51;
832
+    uint8_t BLUECELL_RESERVE52;
833
+    uint8_t BLUECELL_RESERVE53;
588 834
     uint8_t bluecell_crc_H;
589 835
     uint8_t bluecell_crc_L;
590 836
     uint8_t bluecell_etx;

+ 9 - 3
Inc/flash.h

@@ -11,14 +11,20 @@
11 11
 #include "main.h"
12 12
 #include "CRC16.h"
13 13
 
14
+
15
+
16
+#define FLASH_MBICUSER_START_ADDR (uint32_t)((0x08005000) - 128)
17
+#define FLASH_MBICUSER_END_ADDR FLASH_MBICUSER_START_ADDR + ((uint32_t)0x1FFFF)
18
+
19
+
14 20
 #define FLASH_USER_START_ADDR ((uint32_t)0x08005000)
15 21
 #define FLASH_USER_END_ADDR     FLASH_USER_START_ADDR + ((uint32_t)0x000FFFF)   /* End @ of user Flash area */
22
+
16 23
 #define APPLICATION_ADDRESS     (uint32_t)0x08005000      /* Start user code address: ADDR_FLASH_PAGE_8 */
17 24
 
25
+#define FLASH_USER_BANK1_START_ADDR ((uint32_t)0x08025000)
26
+#define FLASH_USER_BANK2_START_ADDR ((uint32_t)0x08045000)
18 27
 
19
-#define FLASH_USER_BANK1_START_ADDR ((uint32_t)0x08015000)
20
-#define FLASH_USER_BANK2_START_ADDR ((uint32_t)0x08025000)
21
-#define FLASH_USER_TEMPBANK_START_ADDR ((uint32_t)0x08035000)
22 28
 
23 29
 
24 30
 

+ 3 - 0
Inc/stm32f1xx_it.h

@@ -58,7 +58,10 @@ void PendSV_Handler(void);
58 58
 void SysTick_Handler(void);
59 59
 void DMA1_Channel4_IRQHandler(void);
60 60
 void DMA1_Channel5_IRQHandler(void);
61
+void DMA1_Channel6_IRQHandler(void);
62
+void DMA1_Channel7_IRQHandler(void);
61 63
 void USART1_IRQHandler(void);
64
+void USART2_IRQHandler(void);
62 65
 void TIM6_IRQHandler(void);
63 66
 /* USER CODE BEGIN EFP */
64 67
 

Diff nebyl zobrazen, protože je příliš veliký
+ 21 - 9
STM32F103_ATTEN_PLL_Zig.elf.launch


+ 44 - 12
STM32F103_ATTEN_PLL_Zig.ioc

@@ -1,7 +1,9 @@
1 1
 #MicroXplorer Configuration settings - do not modify
2 2
 Dma.Request0=USART1_RX
3 3
 Dma.Request1=USART1_TX
4
-Dma.RequestsNb=2
4
+Dma.Request2=USART2_RX
5
+Dma.Request3=USART2_TX
6
+Dma.RequestsNb=4
5 7
 Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY
6 8
 Dma.USART1_RX.0.Instance=DMA1_Channel5
7 9
 Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
@@ -20,6 +22,24 @@ Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
20 22
 Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE
21 23
 Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW
22 24
 Dma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
25
+Dma.USART2_RX.2.Direction=DMA_PERIPH_TO_MEMORY
26
+Dma.USART2_RX.2.Instance=DMA1_Channel6
27
+Dma.USART2_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
28
+Dma.USART2_RX.2.MemInc=DMA_MINC_ENABLE
29
+Dma.USART2_RX.2.Mode=DMA_NORMAL
30
+Dma.USART2_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
31
+Dma.USART2_RX.2.PeriphInc=DMA_PINC_DISABLE
32
+Dma.USART2_RX.2.Priority=DMA_PRIORITY_LOW
33
+Dma.USART2_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
34
+Dma.USART2_TX.3.Direction=DMA_MEMORY_TO_PERIPH
35
+Dma.USART2_TX.3.Instance=DMA1_Channel7
36
+Dma.USART2_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
37
+Dma.USART2_TX.3.MemInc=DMA_MINC_ENABLE
38
+Dma.USART2_TX.3.Mode=DMA_NORMAL
39
+Dma.USART2_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
40
+Dma.USART2_TX.3.PeriphInc=DMA_PINC_DISABLE
41
+Dma.USART2_TX.3.Priority=DMA_PRIORITY_LOW
42
+Dma.USART2_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
23 43
 File.Version=6
24 44
 GPIO.groupedBy=Group By Peripherals
25 45
 I2C2.I2C_Mode=I2C_Fast
@@ -33,19 +53,22 @@ Mcu.IP3=RCC
33 53
 Mcu.IP4=SYS
34 54
 Mcu.IP5=TIM6
35 55
 Mcu.IP6=USART1
36
-Mcu.IPNb=7
56
+Mcu.IP7=USART2
57
+Mcu.IPNb=8
37 58
 Mcu.Name=STM32F103Z(C-D-E)Tx
38 59
 Mcu.Package=LQFP144
39 60
 Mcu.Pin0=PC15-OSC32_OUT
40
-Mcu.Pin1=PB10
41
-Mcu.Pin2=PB11
42
-Mcu.Pin3=PA9
43
-Mcu.Pin4=PA10
44
-Mcu.Pin5=PA13
45
-Mcu.Pin6=PA14
46
-Mcu.Pin7=VP_SYS_VS_Systick
47
-Mcu.Pin8=VP_TIM6_VS_ClockSourceINT
48
-Mcu.PinsNb=9
61
+Mcu.Pin1=PA2
62
+Mcu.Pin10=VP_TIM6_VS_ClockSourceINT
63
+Mcu.Pin2=PA3
64
+Mcu.Pin3=PB10
65
+Mcu.Pin4=PB11
66
+Mcu.Pin5=PA9
67
+Mcu.Pin6=PA10
68
+Mcu.Pin7=PA13
69
+Mcu.Pin8=PA14
70
+Mcu.Pin9=VP_SYS_VS_Systick
71
+Mcu.PinsNb=11
49 72
 Mcu.ThirdPartyNb=0
50 73
 Mcu.UserConstants=
51 74
 Mcu.UserName=STM32F103ZETx
@@ -54,6 +77,8 @@ MxDb.Version=DB.5.0.21
54 77
 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
55 78
 NVIC.DMA1_Channel4_IRQn=true\:0\:0\:false\:true\:true\:4\:false\:true
56 79
 NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:true\:true\:1\:false\:true
80
+NVIC.DMA1_Channel6_IRQn=true\:0\:0\:false\:true\:true\:6\:false\:true
81
+NVIC.DMA1_Channel7_IRQn=true\:0\:0\:false\:true\:true\:7\:false\:true
57 82
 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
58 83
 NVIC.ForceEnableDMAVector=true
59 84
 NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
@@ -65,6 +90,7 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
65 90
 NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
66 91
 NVIC.TIM6_IRQn=true\:0\:0\:false\:true\:true\:3\:true\:true
67 92
 NVIC.USART1_IRQn=true\:0\:0\:false\:true\:true\:2\:true\:true
93
+NVIC.USART2_IRQn=true\:0\:0\:false\:true\:true\:5\:true\:true
68 94
 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
69 95
 PA10.Mode=Asynchronous
70 96
 PA10.Signal=USART1_RX
@@ -72,6 +98,10 @@ PA13.Mode=Serial_Wire
72 98
 PA13.Signal=SYS_JTMS-SWDIO
73 99
 PA14.Mode=Serial_Wire
74 100
 PA14.Signal=SYS_JTCK-SWCLK
101
+PA2.Mode=Asynchronous
102
+PA2.Signal=USART2_TX
103
+PA3.Mode=Asynchronous
104
+PA3.Signal=USART2_RX
75 105
 PA9.Mode=Asynchronous
76 106
 PA9.Signal=USART1_TX
77 107
 PB10.GPIOParameters=GPIO_Label
@@ -113,7 +143,7 @@ ProjectManager.StackSize=0x400
113 143
 ProjectManager.TargetToolchain=TrueSTUDIO
114 144
 ProjectManager.ToolChainLocation=
115 145
 ProjectManager.UnderRoot=true
116
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_USART1_UART_Init-USART1-false-HAL-true
146
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_I2C2_Init-I2C2-false-HAL-true,6-MX_TIM6_Init-TIM6-false-HAL-true,7-MX_USART2_UART_Init-USART2-false-HAL-true
117 147
 RCC.ADCFreqValue=9333333.333333334
118 148
 RCC.ADCPresc=RCC_ADCPCLK2_DIV6
119 149
 RCC.AHBFreq_Value=56000000
@@ -145,6 +175,8 @@ TIM6.Period=10 - 1
145 175
 TIM6.Prescaler=5600 - 1
146 176
 USART1.IPParameters=VirtualMode
147 177
 USART1.VirtualMode=VM_ASYNC
178
+USART2.IPParameters=VirtualMode
179
+USART2.VirtualMode=VM_ASYNC
148 180
 VP_SYS_VS_Systick.Mode=SysTick
149 181
 VP_SYS_VS_Systick.Signal=SYS_VS_Systick
150 182
 VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer

+ 3 - 0
Src/MBIC_Bootloader.c

@@ -251,6 +251,9 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
251 251
 //    for(int i = 0; i < 128; i++)
252 252
 //        printf("%c",*data++);
253 253
     switch(cmd){
254
+        case 0:
255
+            Jump_App();
256
+        
254 257
         case MBIC_Notice_REQ:
255 258
             cmd = MBIC_Notice_RSP;
256 259
             /*TOTAL FRAME NUMBER*/

+ 28 - 2
Src/eeprom.c

@@ -15,19 +15,45 @@
15 15
 HAL_StatusTypeDef EEPROM_M24C08_ByteRead(uint16_t devid,uint16_t Address,uint8_t* data,uint8_t size);
16 16
 
17 17
 
18
-extern BLUESTATUS_st bluecell_Currdatastatus;
18
+BLUESTATUS_st bluecell_Currdatastatus;
19 19
 
20 20
 
21 21
 extern I2C_HandleTypeDef hi2c2;
22 22
 
23 23
 
24
+typedef enum{
25
+    HFR_BANK1_SEL = 1,
26
+    HFR_BANK2_SEL = 2,
27
+    HFR_AUTO_SEL = 3,    
28
+}HFR_BootSelIndex_;
24 29
 
25 30
 
26 31
 
27 32
 void EEPROM_M24C08_Init(void){
28 33
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_WINDOW_STATUS_ADDRESDS,&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st) );
34
+    printf("bluecell_Currdatastatus.CPU_Bank_Select : %d \r\n",bluecell_Currdatastatus.CPU_Bank_Select);
29 35
     
30
-
36
+    if(bluecell_Currdatastatus.CPU_Bank_Select == HFR_BANK1_SEL){
37
+        printf("Write Start \r\n");
38
+        MBIC_BankBooting_Flash_write((uint32_t*)FLASH_USER_BANK1_START_ADDR,FLASH_MBICUSER_START_ADDR);
39
+        bluecell_Currdatastatus.CPU_Bank_Select = 5;
40
+    }else if(bluecell_Currdatastatus.CPU_Bank_Select == HFR_BANK2_SEL){
41
+                printf("Write Start \r\n");
42
+        MBIC_BankBooting_Flash_write((uint32_t*)FLASH_USER_BANK2_START_ADDR,FLASH_MBICUSER_START_ADDR);
43
+        bluecell_Currdatastatus.CPU_Bank_Select = 6;
44
+    }
45
+    else if (bluecell_Currdatastatus.CPU_Bank_Select == HFR_AUTO_SEL){
46
+        if(bluecell_Currdatastatus.CPU_Bank_Select == HFR_BANK1_SEL){
47
+                    printf("Write Start \r\n");
48
+            MBIC_BankBooting_Flash_write((uint32_t*)FLASH_USER_BANK2_START_ADDR,FLASH_MBICUSER_START_ADDR);
49
+            bluecell_Currdatastatus.CPU_Bank_Select = 6;
50
+        }else{
51
+                    printf("Write Start \r\n");
52
+            MBIC_BankBooting_Flash_write((uint32_t*)FLASH_USER_BANK1_START_ADDR,FLASH_MBICUSER_START_ADDR);
53
+            bluecell_Currdatastatus.CPU_Bank_Select = 5;
54
+        }
55
+    }
56
+    EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_WINDOW_STATUS_ADDRESDS),&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st));    
31 57
     printf("EEPROM INIT COMPLETE\r\n");
32 58
 
33 59
 }

+ 274 - 11
Src/flash.c

@@ -8,7 +8,8 @@
8 8
 #include "MBIC_Bootloader.h"
9 9
 uint8_t flashinit = 0;
10 10
 uint32_t Address = FLASH_USER_START_ADDR;
11
-volatile static uint32_t UserAddress;
11
+volatile uint32_t UserAddress;
12
+
12 13
 
13 14
 typedef void (*fptr)(void);
14 15
 fptr jump_to_app;
@@ -91,8 +92,6 @@ uint8_t Flash_Data_Write(uint8_t* data){
91 92
 
92 93
 //    data[MBIC_PAYLOADSTART + 12 +i];
93 94
    
94
-    returntoFirst:
95
-    UserAddress -= i;
96 95
     for(i= 0; i <= Curr_Download_DataIndex - Prev_Download_DataIndex; i+=2){
97 96
         Firmdata  = ((data[MBIC_PAYLOADSTART + 12 +i]) & 0x00FF);
98 97
         Firmdata  += ((data[MBIC_PAYLOADSTART + 12 +i + 1] << 8) & 0xFF00);
@@ -100,7 +99,6 @@ uint8_t Flash_Data_Write(uint8_t* data){
100 99
             printf("HAL NOT OK \n");
101 100
             ret = 1;
102 101
             HAL_Delay(1000);
103
-            goto returntoFirst;
104 102
         }else{
105 103
             UserAddress += 2;
106 104
         }
@@ -110,6 +108,145 @@ uint8_t Flash_Data_Write(uint8_t* data){
110 108
 }
111 109
 
112 110
 
111
+uint8_t MBIC_Flash_Data_Write(uint8_t* data){
112
+#if 1 // PYJ.2020.06.24_BEGIN -- 
113
+    int i = 0;
114
+    uint32_t a = 0;
115
+    uint8_t flashdata[1024]  = {0,};
116
+    uint32_t cnt = 0;
117
+    uint32_t remind = 0;
118
+    uint32_t WriteDataLength = data[61] << 24 | data[62] << 16 | data[63] << 8 | data[64] << 0;
119
+    
120
+#if 0 // PYJ.2020.06.24_BEGIN -- 
121
+    uint32_t Curr_Download_Data = 0;
122
+#else
123
+    uint16_t Curr_Download_Data = 0;
124
+
125
+#endif // PYJ.2020.06.24_END -- 
126
+        printf("=====================Data Recv2================\r\n");
127
+    for(a  = 0; a  < 128; a++ ){
128
+        printf("%08x : %02X  Index : %d \n",data ,*(uint8_t*)data,a );
129
+        data++;
130
+    }  
131
+    data -= a;
132
+        printf("=====================Data Recv2================\r\n");    
133
+    printf("Download Data Length :%d \r\n",WriteDataLength);
134
+
135
+   
136
+    printf("Curr_Download_Data %x   : i  : %d\r\n",Curr_Download_Data,i);
137
+#if 0 // PYJ.2020.06.24_BEGIN -- 
138
+    for(i= 0; i < 128; i+=4){
139
+        Curr_Download_Data = 0;
140
+        /*Curr_Download_Data =  *(uint8_t*)(data+((i * 4)+ 0));
141
+        Curr_Download_Data |= *(uint8_t*)(data+((i * 4)+ 1)) << 8;
142
+        Curr_Download_Data |= *(uint8_t*)(data+((i * 4)+ 2)) << 16;            
143
+        Curr_Download_Data |= *(uint8_t*)(data+((i * 4)+ 3)) << 24; */
144
+        printf("%02X ",data[i + 0]);
145
+        printf("%02X ",data[i + 1]);
146
+        printf("%02X ",data[i + 2]);
147
+        printf("%02X ",data[i + 3]);        
148
+        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,UserAddress , Curr_Download_Data) != HAL_OK){
149
+            printf("HAL NOT OK \n");
150
+            HAL_Delay(1000);
151
+        }else{
152
+            UserAddress += 4;
153
+        }
154
+    }
155
+    //            printf("%02X ",flashdata[i*2 + 0]);
156
+    //            printf("%02X ",flashdata[i*2 + 1]);
157
+        //        HAL_Delay(1);
158
+#else
159
+    cnt = (((WriteDataLength + 128)/1024));
160
+    remind =(((WriteDataLength + 128)%1024));
161
+    
162
+
163
+#if 0 // PYJ.2020.06.24_BEGIN -- 
164
+
165
+    for(int b = 0; b < cnt; b++){
166
+        for(i = 0; i < 1024; i+=2){
167
+            flashdata[i*2] = data[(cnt*1024)+i*2];
168
+            flashdata[i*2+1] = data[(cnt*1024)+i*2+1];            
169
+            Curr_Download_Data = (flashdata[i*2]) & 0x00FF;//*(uint8_t*)(data+((i * 2)+ 0));
170
+            Curr_Download_Data |= flashdata[i*2+1] << 8;//(*(uint8_t*)(data+((i * 2)+ 1)) << 8);
171
+            if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,UserAddress , Curr_Download_Data) != HAL_OK){
172
+                printf("HAL NOT OK \n");
173
+                HAL_Delay(1000);
174
+                return;
175
+            }
176
+            UserAddress += 2;
177
+            HAL_Delay(1);
178
+        }
179
+    }
180
+    for(i = 0; i < remind; i+=2){
181
+        flashdata[i*2] = data[(cnt*1024)+i*2];
182
+        flashdata[i*2+1] = data[(cnt*1024)+i*2+1];            
183
+        Curr_Download_Data = (flashdata[i*2]) & 0x00FF;//*(uint8_t*)(data+((i * 2)+ 0));
184
+        Curr_Download_Data |= flashdata[i*2+1] << 8;//(*(uint8_t*)(data+((i * 2)+ 1)) << 8);
185
+        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,UserAddress , Curr_Download_Data) != HAL_OK){
186
+            printf("HAL NOT OK \n");
187
+            HAL_Delay(1000);
188
+            return;
189
+        }
190
+        UserAddress += 2;
191
+        HAL_Delay(1);
192
+    }      
193
+#else
194
+    for(i= 0; i <WriteDataLength + 128; i+=2){
195
+        Curr_Download_Data = 0;
196
+//        Curr_Download_Data =  ;                  (*(uint8_t*)(data+((i * 4)+ 1)) << 8)
197
+//        Curr_Download_Data |= ;        
198
+        uint16_t writedata = (*(uint8_t*)(data+((i)+ 1))) << 8 | (*(uint8_t*)(data+((i)+ 0)));
199
+        printf("%02X ",(*(uint8_t*)(data+((i )+ 0))));
200
+        printf("%02X ",(*(uint8_t*)(data+((i )+ 1))));
201
+        
202
+//        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,UserAddress , *(uint8_t*)(data+(i * 2))  | *(uint8_t*)data+((i * 2)+1) << 8) != HAL_OK){
203
+        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,UserAddress ,writedata /*(*(uint8_t*)(data+((i * 2)+ 0))) | (*(uint8_t*)(data+((i * 2)+ 1))) << 8*/) != HAL_OK){
204
+            printf("HAL NOT OK \n");
205
+            HAL_Delay(1000);
206
+        }else{
207
+            UserAddress += 2;
208
+        }
209
+//        HAL_Delay(5);
210
+    }
211
+
212
+#endif // PYJ.2020.06.24_END -- 
213
+
214
+#endif // PYJ.2020.06.24_END -- 
215
+    return 0;
216
+#else
217
+    uint16_t Firmdata = 0;
218
+    uint8_t ret = 0;
219
+    int i = 0;
220
+    uint32_t dataindex = 0;
221
+    static uint32_t Curr_Download_DataIndex = 0;
222
+    static uint32_t Prev_Download_DataIndex = 0;  
223
+    Curr_Download_DataIndex = data[dataindex  + 0];
224
+    Curr_Download_DataIndex += data[dataindex + 1] << 8;
225
+    Curr_Download_DataIndex += data[dataindex + 2] << 16;            
226
+    Curr_Download_DataIndex += data[dataindex + 3] << 24;      
227
+    printf("Download Data Length :%d \r\n",Curr_Download_DataIndex);
228
+    Firmdata = 0x12345678;
229
+    if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,UserAddress ,   (uint32_t)Firmdata) != HAL_OK){
230
+        printf("HAL NOT OK \n");
231
+        ret = 1;
232
+        HAL_Delay(1000);
233
+    }else{
234
+        UserAddress += 4;
235
+    }
236
+
237
+   
238
+#if 0 // PYJ.2020.06.24_BEGIN -- 
239
+    for(i= 0; i <= Curr_Download_DataIndex; i+=4){
240
+        Firmdata  = ((data[MBIC_PAYLOADSTART + 12 +i]) & 0x00FF);
241
+        Firmdata  += ((data[MBIC_PAYLOADSTART + 12 +i + 1] << 8) & 0xFF00);
242
+
243
+    }
244
+#endif // PYJ.2020.06.24_END -- 
245
+    Prev_Download_DataIndex = Curr_Download_DataIndex + 1;
246
+
247
+
248
+#endif // PYJ.2020.06.24_END -- 
249
+}
113 250
 uint8_t Flash_Data_WriteTest(uint8_t* data){
114 251
     uint32_t Firmdata = 0;
115 252
     uint8_t ret = 0;
@@ -222,7 +359,8 @@ uint8_t Flash_write(uint8_t* data) // ?占쏙옙湲고븿?占쏙옙
222 359
     /* Fill EraseInit structure*/
223 360
     EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
224 361
     EraseInitStruct.PageAddress = FLASH_USER_START_ADDR;
225
-    EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_START_ADDR) / FLASH_PAGE_SIZE;
362
+    
363
+    EraseInitStruct.NbPages     = (FLASH_USER_START_ADDR - ((uint32_t)0xFFFF)) / FLASH_PAGE_SIZE;
226 364
 
227 365
 //    __HAL_RCC_TIM6_CLK_DISABLE(); // 留ㅼ씤???占쏙옙癒몌옙?? ?占쏙옙占�??占쏙옙?占쏙옙?占쏙옙
228 366
     HAL_FLASH_Unlock(); // lock ??占�?
@@ -247,6 +385,9 @@ uint8_t Flash_write(uint8_t* data) // ?占쏙옙湲고븿?占쏙옙
247 385
 uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress) // ?占쏙옙湲고븿?占쏙옙
248 386
 {
249 387
 
388
+#if 1 // PYJ.2020.06.24_BEGIN -- 
389
+#if 0 // PYJ.2020.06.24_BEGIN -- 
390
+#endif // PYJ.2020.06.24_END -- 
250 391
     /*Variable used for Erase procedure*/
251 392
     static FLASH_EraseInitTypeDef EraseInitStruct;
252 393
     static uint32_t PAGEError = 0;
@@ -276,11 +417,6 @@ uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress) // ?占쏙옙
276 417
                 EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_BANK2_START_ADDR) / FLASH_PAGE_SIZE;
277 418
 
278 419
             break;
279
-            case FLASH_USER_TEMPBANK_START_ADDR:
280
-                EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
281
-                EraseInitStruct.PageAddress = FLASH_USER_TEMPBANK_START_ADDR - 128;
282
-                EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_TEMPBANK_START_ADDR) / FLASH_PAGE_SIZE;
283
-            break;
284 420
 
285 421
         }        
286 422
         
@@ -290,8 +426,135 @@ uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress) // ?占쏙옙
290 426
             printf("Erase Failed \r\n");
291 427
         }
292 428
     }
293
-    ret = Flash_Data_Write(&data[MBIC_PREAMBLE_0]);
429
+    ret = Flash_Data_Write(&data[0]);
294 430
     HAL_FLASH_Lock(); // lock ?占쏙옙洹멸린
295 431
     return ret;
432
+#else
433
+    uint32_t  Address = 0;
434
+    Address = FLASH_USER_START_ADDR - 128;
435
+    for(uint32_t i = 0; i < 128; i++ ){
436
+        printf("%08x : %02X \n",data ,*(uint8_t*)data);
437
+        data++;
438
+    }
439
+
440
+#endif // PYJ.2020.06.24_END -- 
441
+
442
+}
443
+#if 0 // PYJ.2020.06.24_BEGIN -- 
444
+void MBIC_FlashErase()
445
+{
446
+    static FLASH_EraseInitTypeDef EraseInitStruct;
447
+    static uint32_t PAGEError = 0;
448
+
449
+    if(EraseInit == false){
450
+        EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
451
+        EraseInitStruct.PageAddress = FLASH_USER_START_ADDR;
452
+        EraseInitStruct.NbPages     = ((FLASH_USER_START_ADDR + ((uint32_t)0xFFFF)) - FLASH_USER_START_ADDR) / FLASH_PAGE_SIZE;
453
+        printf("Erase Start\r\n");
454
+        if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
455
+        {
456
+          /*
457
+            Error occurred while page erase.
458
+            User can add here some code to deal with this error.
459
+            PAGEError will contain the faulty page and then to know the code error on this page,
460
+            user can call function 'HAL_FLASH_GetError()'
461
+          */
462
+          /* Infinite loop */
463
+          while (1)
464
+          {
465
+            /* Make LED2 blink (100ms on, 2s off) to indicate error in Erase operation */
466
+            printf("HAL_FLASHEx_Erase Error\r\n");
467
+            HAL_Delay(2000);
468
+          }
469
+        }
470
+        EraseInit = true;
471
+        printf("Erase End\r\n");
472
+    }
473
+
474
+}
475
+#endif // PYJ.2020.06.24_END -- 
476
+
477
+
478
+uint8_t MBIC_BankBooting_Flash_write(uint8_t* data,uint32_t StartBankAddress) // ?占쏙옙湲고븿?占쏙옙
479
+{
480
+
481
+#if 1 // PYJ.2020.06.24_BEGIN -- 
482
+#if 0 // PYJ.2020.06.24_BEGIN -- 
483
+#endif // PYJ.2020.06.24_END -- 
484
+    /*Variable used for Erase procedure*/
485
+    static FLASH_EraseInitTypeDef EraseInitStruct;
486
+    static uint32_t PAGEError = 0;
487
+    uint8_t ret = 0;
488
+    uint32_t tmpdata = 0;
489
+    uint32_t i = 0;
490
+    printf("=====================Data Recv================\r\n");
491
+    uint8_t datacnt = 0;
492
+    for( i = 0; i < 128; i++ ){
493
+        if(*(uint8_t*)data == 0xFF)
494
+            datacnt++;
495
+        
496
+        printf("%08x : %02X  Index : %d \n",data ,*(uint8_t*)data,i);
497
+        data++;
498
+    }    
499
+    if(datacnt > 100)
500
+        return;
501
+    data -=i;
502
+    printf("=====================Data Recv================\r\n");    
503
+//    tmpdata = data[61] <<24 |data[62] <<16 |data[63] <<8 |data[64] <<0 ;
504
+//    printf("data[01] : %x \r\n",data[01]);
505
+//    printf("data[61] : %x \r\n",data[61]);
506
+//    printf("data[62] : %x \r\n",data[62]);
507
+//    printf("data[63] : %x \r\n",data[63]);
508
+//    printf("data[64] : %x \r\n",data[64]);    
509
+//    printf("data Length %x   / D %d ",tmpdata,tmpdata);
510
+//    return;
511
+    HAL_FLASH_Unlock(); // lock ??占�?
512
+    if(flashinit == 0){
513
+        
514
+        flashinit= 1;
515
+        /* Fill EraseInit structure*/
516
+        printf("Download Erase Conifiguaration Start\r\n");
517
+        switch(StartBankAddress){
518
+            case FLASH_MBICUSER_START_ADDR:
519
+                printf("User API Erase %x\r\n",StartBankAddress);
520
+#if 1 // PYJ.2020.06.24_BEGIN -- 
521
+                /* Fill EraseInit structure*/
522
+                EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
523
+                EraseInitStruct.PageAddress = FLASH_MBICUSER_START_ADDR;
524
+                EraseInitStruct.NbPages     = (FLASH_MBICUSER_END_ADDR - FLASH_MBICUSER_START_ADDR) / FLASH_PAGE_SIZE;
525
+#else
526
+                EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
527
+                EraseInitStruct.PageAddress = FLASH_MBICUSER_START_ADDR;
528
+                printf("PageAddress : %x \r\n",FLASH_MBICUSER_START_ADDR);
529
+                EraseInitStruct.NbPages     = (FLASH_MBICUSER_START_ADDR - ((uint32_t)0xFFFF + 128))) / FLASH_PAGE_SIZE;
530
+
531
+#endif // PYJ.2020.06.24_END -- 
532
+                UserAddress = FLASH_MBICUSER_START_ADDR;
533
+            break;
534
+        }        
535
+        printf("Download Erase Conifiguaration END\r\n");        
536
+        //FLASH_PageErase(StartAddr);
537
+        printf("Download Erase  start\r\n");                
538
+        if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK){
539
+            printf("Erase Failed \r\n");
540
+        }
541
+        printf("Download Erase  END\r\n");                        
542
+    }
543
+        printf("Download Start  \r\n");       
544
+    
545
+        ret = MBIC_Flash_Data_Write((uint32_t*)data);
546
+        printf("Download END  \r\n");
547
+        HAL_FLASH_Lock(); // lock ?占쏙옙洹멸린
548
+    return ret;
549
+#else
550
+    uint32_t  Address = 0;
551
+    Address = FLASH_USER_START_ADDR - 128;
552
+    for(uint32_t i = 0; i < 128; i++ ){
553
+        printf("%08x : %02X \n",data ,*(uint8_t*)data);
554
+        data++;
555
+    }
556
+
557
+#endif // PYJ.2020.06.24_END -- 
558
+
296 559
 }
297 560
 

+ 76 - 10
Src/main.c

@@ -23,7 +23,8 @@
23 23
 
24 24
 /* Private includes ----------------------------------------------------------*/
25 25
 /* USER CODE BEGIN Includes */
26
-
26
+#include <stdio.h>
27
+#include "flash.h"
27 28
 /* USER CODE END Includes */
28 29
 
29 30
 /* Private typedef -----------------------------------------------------------*/
@@ -47,8 +48,11 @@ I2C_HandleTypeDef hi2c2;
47 48
 TIM_HandleTypeDef htim6;
48 49
 
49 50
 UART_HandleTypeDef huart1;
51
+UART_HandleTypeDef huart2;
50 52
 DMA_HandleTypeDef hdma_usart1_rx;
51 53
 DMA_HandleTypeDef hdma_usart1_tx;
54
+DMA_HandleTypeDef hdma_usart2_rx;
55
+DMA_HandleTypeDef hdma_usart2_tx;
52 56
 
53 57
 /* USER CODE BEGIN PV */
54 58
 
@@ -64,9 +68,12 @@ static void MX_DMA_Init(void);
64 68
 static void MX_USART1_UART_Init(void);
65 69
 static void MX_I2C2_Init(void);
66 70
 static void MX_TIM6_Init(void);
71
+static void MX_USART2_UART_Init(void);
67 72
 static void MX_NVIC_Init(void);
68 73
 /* USER CODE BEGIN PFP */
69 74
 extern void MBIC_FirmwareFile_CrcCheck(void);
75
+extern void Jump_App(void);
76
+extern void EEPROM_M24C08_Init(void);
70 77
 
71 78
 /* USER CODE END PFP */
72 79
 
@@ -83,7 +90,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
83 90
 }
84 91
 int _write (int file, uint8_t *ptr, uint16_t len)
85 92
 {
86
-    HAL_UART_Transmit (&huart1, ptr, len, 10);
93
+    HAL_UART_Transmit (&huart2, ptr, len, 10);
87 94
     return len;
88 95
 }
89 96
 extern UARTQUEUE TerminalQueue;
@@ -102,7 +109,7 @@ int main(void)
102 109
   /* USER CODE BEGIN 1 */
103 110
 	uint8_t tempdata[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A};
104 111
   /* USER CODE END 1 */
105
-  
112
+
106 113
 
107 114
   /* MCU Configuration--------------------------------------------------------*/
108 115
 
@@ -126,31 +133,48 @@ int main(void)
126 133
   MX_USART1_UART_Init();
127 134
   MX_I2C2_Init();
128 135
   MX_TIM6_Init();
136
+  MX_USART2_UART_Init();
129 137
 
130 138
   /* Initialize interrupts */
131 139
   MX_NVIC_Init();
132 140
   /* USER CODE BEGIN 2 */
133 141
   HAL_TIM_Base_Start_IT(&htim6);
142
+  InitUartQueue(&TerminalQueue);
134 143
   setbuf(stdout, NULL);
135 144
   /*printf("Uart Start \r\n");
136 145
   printf("Crc generate %x \r\n",CRC16_Generate(tempdata,11));*/
146
+#if 1 // PYJ.2020.06.24_BEGIN --
137 147
   Firmware_BootStart_Signal();
138
-  InitUartQueue(&TerminalQueue);
139
-  MBIC_FirmwareFile_CrcCheck();
148
+#else
149
+//  Jump_App();
150
+
151
+  /*printf("BootLoader Start ---\r\n");
152
+
153
+  printf("BootLoader END\r\n");
154
+  Jump_App();*/
155
+
156
+//while(1);
157
+//  Jump_App();    
158
+
159
+#endif // PYJ.2020.06.24_END -- 
160
+  //MBIC_FirmwareFile_CrcCheck();
140 161
 //  FLASH_If_Init();
141 162
 //  Flash_InitRead();
142 163
   /* USER CODE END 2 */
143 164
 
144 165
   /* Infinite loop */
145 166
   /* USER CODE BEGIN WHILE */
167
+  FirmwareTimerCnt = 0;
146 168
   while (1)
147 169
   {
148
-	 // printf("Uart Start \r\n");
170
+	// printf("Uart Start \r\n");
149 171
 	  if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);LedTimerCnt = 0;}
150 172
 	  while (TerminalQueue.data > 0 && UartTimerCnt > 30) GetDataFromUartQueue(&hTerminal);
151
-//	 while(FirmwareTimerCnt > 3000)  Jump_App();
152
-
153
-	  //HAL_Delay(500);
173
+	  if(FirmwareTimerCnt > 3000){
174
+	     // EEPROM_M24C08_Init();
175
+	      Jump_App();
176
+	  }
177
+  //HAL_Delay(500);
154 178
     /* USER CODE END WHILE */
155 179
 
156 180
     /* USER CODE BEGIN 3 */
@@ -212,6 +236,15 @@ static void MX_NVIC_Init(void)
212 236
   /* DMA1_Channel4_IRQn interrupt configuration */
213 237
   HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
214 238
   HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
239
+  /* USART2_IRQn interrupt configuration */
240
+  HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
241
+  HAL_NVIC_EnableIRQ(USART2_IRQn);
242
+  /* DMA1_Channel6_IRQn interrupt configuration */
243
+  HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0);
244
+  HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
245
+  /* DMA1_Channel7_IRQn interrupt configuration */
246
+  HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 0, 0);
247
+  HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn);
215 248
 }
216 249
 
217 250
 /**
@@ -319,6 +352,39 @@ static void MX_USART1_UART_Init(void)
319 352
 
320 353
 }
321 354
 
355
+/**
356
+  * @brief USART2 Initialization Function
357
+  * @param None
358
+  * @retval None
359
+  */
360
+static void MX_USART2_UART_Init(void)
361
+{
362
+
363
+  /* USER CODE BEGIN USART2_Init 0 */
364
+
365
+  /* USER CODE END USART2_Init 0 */
366
+
367
+  /* USER CODE BEGIN USART2_Init 1 */
368
+
369
+  /* USER CODE END USART2_Init 1 */
370
+  huart2.Instance = USART2;
371
+  huart2.Init.BaudRate = 115200;
372
+  huart2.Init.WordLength = UART_WORDLENGTH_8B;
373
+  huart2.Init.StopBits = UART_STOPBITS_1;
374
+  huart2.Init.Parity = UART_PARITY_NONE;
375
+  huart2.Init.Mode = UART_MODE_TX_RX;
376
+  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
377
+  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
378
+  if (HAL_UART_Init(&huart2) != HAL_OK)
379
+  {
380
+    Error_Handler();
381
+  }
382
+  /* USER CODE BEGIN USART2_Init 2 */
383
+
384
+  /* USER CODE END USART2_Init 2 */
385
+
386
+}
387
+
322 388
 /** 
323 389
   * Enable DMA controller clock
324 390
   */
@@ -340,8 +406,8 @@ static void MX_GPIO_Init(void)
340 406
 
341 407
   /* GPIO Ports Clock Enable */
342 408
   __HAL_RCC_GPIOC_CLK_ENABLE();
343
-  __HAL_RCC_GPIOB_CLK_ENABLE();
344 409
   __HAL_RCC_GPIOA_CLK_ENABLE();
410
+  __HAL_RCC_GPIOB_CLK_ENABLE();
345 411
 
346 412
   /*Configure GPIO pin Output Level */
347 413
   HAL_GPIO_WritePin(BOOT_LED_GPIO_Port, BOOT_LED_Pin, GPIO_PIN_RESET);

+ 88 - 0
Src/stm32f1xx_hal_msp.c

@@ -28,6 +28,10 @@ extern DMA_HandleTypeDef hdma_usart1_rx;
28 28
 
29 29
 extern DMA_HandleTypeDef hdma_usart1_tx;
30 30
 
31
+extern DMA_HandleTypeDef hdma_usart2_rx;
32
+
33
+extern DMA_HandleTypeDef hdma_usart2_tx;
34
+
31 35
 /* Private typedef -----------------------------------------------------------*/
32 36
 /* USER CODE BEGIN TD */
33 37
 
@@ -263,6 +267,66 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
263 267
 
264 268
   /* USER CODE END USART1_MspInit 1 */
265 269
   }
270
+  else if(huart->Instance==USART2)
271
+  {
272
+  /* USER CODE BEGIN USART2_MspInit 0 */
273
+
274
+  /* USER CODE END USART2_MspInit 0 */
275
+    /* Peripheral clock enable */
276
+    __HAL_RCC_USART2_CLK_ENABLE();
277
+  
278
+    __HAL_RCC_GPIOA_CLK_ENABLE();
279
+    /**USART2 GPIO Configuration    
280
+    PA2     ------> USART2_TX
281
+    PA3     ------> USART2_RX 
282
+    */
283
+    GPIO_InitStruct.Pin = GPIO_PIN_2;
284
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
285
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
286
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
287
+
288
+    GPIO_InitStruct.Pin = GPIO_PIN_3;
289
+    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
290
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
291
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
292
+
293
+    /* USART2 DMA Init */
294
+    /* USART2_RX Init */
295
+    hdma_usart2_rx.Instance = DMA1_Channel6;
296
+    hdma_usart2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
297
+    hdma_usart2_rx.Init.PeriphInc = DMA_PINC_DISABLE;
298
+    hdma_usart2_rx.Init.MemInc = DMA_MINC_ENABLE;
299
+    hdma_usart2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
300
+    hdma_usart2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
301
+    hdma_usart2_rx.Init.Mode = DMA_NORMAL;
302
+    hdma_usart2_rx.Init.Priority = DMA_PRIORITY_LOW;
303
+    if (HAL_DMA_Init(&hdma_usart2_rx) != HAL_OK)
304
+    {
305
+      Error_Handler();
306
+    }
307
+
308
+    __HAL_LINKDMA(huart,hdmarx,hdma_usart2_rx);
309
+
310
+    /* USART2_TX Init */
311
+    hdma_usart2_tx.Instance = DMA1_Channel7;
312
+    hdma_usart2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
313
+    hdma_usart2_tx.Init.PeriphInc = DMA_PINC_DISABLE;
314
+    hdma_usart2_tx.Init.MemInc = DMA_MINC_ENABLE;
315
+    hdma_usart2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
316
+    hdma_usart2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
317
+    hdma_usart2_tx.Init.Mode = DMA_NORMAL;
318
+    hdma_usart2_tx.Init.Priority = DMA_PRIORITY_LOW;
319
+    if (HAL_DMA_Init(&hdma_usart2_tx) != HAL_OK)
320
+    {
321
+      Error_Handler();
322
+    }
323
+
324
+    __HAL_LINKDMA(huart,hdmatx,hdma_usart2_tx);
325
+
326
+  /* USER CODE BEGIN USART2_MspInit 1 */
327
+
328
+  /* USER CODE END USART2_MspInit 1 */
329
+  }
266 330
 
267 331
 }
268 332
 
@@ -298,6 +362,30 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
298 362
 
299 363
   /* USER CODE END USART1_MspDeInit 1 */
300 364
   }
365
+  else if(huart->Instance==USART2)
366
+  {
367
+  /* USER CODE BEGIN USART2_MspDeInit 0 */
368
+
369
+  /* USER CODE END USART2_MspDeInit 0 */
370
+    /* Peripheral clock disable */
371
+    __HAL_RCC_USART2_CLK_DISABLE();
372
+  
373
+    /**USART2 GPIO Configuration    
374
+    PA2     ------> USART2_TX
375
+    PA3     ------> USART2_RX 
376
+    */
377
+    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
378
+
379
+    /* USART2 DMA DeInit */
380
+    HAL_DMA_DeInit(huart->hdmarx);
381
+    HAL_DMA_DeInit(huart->hdmatx);
382
+
383
+    /* USART2 interrupt DeInit */
384
+    HAL_NVIC_DisableIRQ(USART2_IRQn);
385
+  /* USER CODE BEGIN USART2_MspDeInit 1 */
386
+
387
+  /* USER CODE END USART2_MspDeInit 1 */
388
+  }
301 389
 
302 390
 }
303 391
 

+ 45 - 0
Src/stm32f1xx_it.c

@@ -59,7 +59,10 @@
59 59
 extern TIM_HandleTypeDef htim6;
60 60
 extern DMA_HandleTypeDef hdma_usart1_rx;
61 61
 extern DMA_HandleTypeDef hdma_usart1_tx;
62
+extern DMA_HandleTypeDef hdma_usart2_rx;
63
+extern DMA_HandleTypeDef hdma_usart2_tx;
62 64
 extern UART_HandleTypeDef huart1;
65
+extern UART_HandleTypeDef huart2;
63 66
 /* USER CODE BEGIN EV */
64 67
 
65 68
 /* USER CODE END EV */
@@ -228,6 +231,34 @@ void DMA1_Channel5_IRQHandler(void)
228 231
   /* USER CODE END DMA1_Channel5_IRQn 1 */
229 232
 }
230 233
 
234
+/**
235
+  * @brief This function handles DMA1 channel6 global interrupt.
236
+  */
237
+void DMA1_Channel6_IRQHandler(void)
238
+{
239
+  /* USER CODE BEGIN DMA1_Channel6_IRQn 0 */
240
+
241
+  /* USER CODE END DMA1_Channel6_IRQn 0 */
242
+  HAL_DMA_IRQHandler(&hdma_usart2_rx);
243
+  /* USER CODE BEGIN DMA1_Channel6_IRQn 1 */
244
+
245
+  /* USER CODE END DMA1_Channel6_IRQn 1 */
246
+}
247
+
248
+/**
249
+  * @brief This function handles DMA1 channel7 global interrupt.
250
+  */
251
+void DMA1_Channel7_IRQHandler(void)
252
+{
253
+  /* USER CODE BEGIN DMA1_Channel7_IRQn 0 */
254
+
255
+  /* USER CODE END DMA1_Channel7_IRQn 0 */
256
+  HAL_DMA_IRQHandler(&hdma_usart2_tx);
257
+  /* USER CODE BEGIN DMA1_Channel7_IRQn 1 */
258
+
259
+  /* USER CODE END DMA1_Channel7_IRQn 1 */
260
+}
261
+
231 262
 /**
232 263
   * @brief This function handles USART1 global interrupt.
233 264
   */
@@ -242,6 +273,20 @@ void USART1_IRQHandler(void)
242 273
   /* USER CODE END USART1_IRQn 1 */
243 274
 }
244 275
 
276
+/**
277
+  * @brief This function handles USART2 global interrupt.
278
+  */
279
+void USART2_IRQHandler(void)
280
+{
281
+  /* USER CODE BEGIN USART2_IRQn 0 */
282
+
283
+  /* USER CODE END USART2_IRQn 0 */
284
+  HAL_UART_IRQHandler(&huart2);
285
+  /* USER CODE BEGIN USART2_IRQn 1 */
286
+
287
+  /* USER CODE END USART2_IRQn 1 */
288
+}
289
+
245 290
 /**
246 291
   * @brief This function handles TIM6 global interrupt.
247 292
   */

+ 0 - 1
Src/uart.c

@@ -20,7 +20,6 @@ void InitUartQueue(pUARTQUEUE pQueue)
20 20
       //_Error_Handler(__FILE__, __LINE__);
21 21
     }
22 22
 
23
-
24 23
     //HAL_UART_Receive_DMA(&hTerminal,  TerminalQueue.Buffer, 1);
25 24
     //HAL_UART_Receive_IT(hTerminal, pQueue->Buffer + pQueue->head, 1);
26 25
 }