Przeglądaj źródła

add get chip id for cmd 0xF6

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 lat temu
rodzic
commit
1c1b096c85

+ 7 - 0
Applications/bsp/bsp.c

@@ -35,6 +35,13 @@ void systick_open(void)
 	SysTick_Config(SystemCoreClock / 1000);
 }
 
+u8 mcu_chip_id(u8 *buff)
+{
+	u32 values[] = { REG32(0x1FFFF7E8), REG32(0x1FFFF7EC), REG32(0x1FFFF7F0), REG32(0x1FFFF7E0) };
+	memcpy(buff, values, sizeof(values));
+	return sizeof(values);
+}
+
 
 void wdog_reload(void){
 #if CONFIG_DEBUG == 0

+ 1 - 0
Applications/bsp/bsp.h

@@ -79,5 +79,6 @@ void wdog_reload(void);
 void system_reboot(void);
 int wdog_set_timeout(int wdog_time);
 void systick_open(void);
+u8 mcu_chip_id(u8 *buff);
 
 #endif /* __BSP_H__ */

+ 5 - 1
Applications/prot/can_pc_message.c

@@ -7,7 +7,7 @@
 #include "foc/motor/motor.h"
 
 bool can_process_iap_message(can_message_t *can_message) {
-	uint8_t response[8];
+	uint8_t response[24];
 	uint8_t rsplen;
 	encoder_can_key(response, can_message->key);
 	response[2] = 0;
@@ -32,6 +32,10 @@ bool can_process_iap_message(can_message_t *can_message) {
 			fmc_write_magic(IAP_MAGIC_SUCCESS);
 			break;
 		case BUILD_CMD_KEY(0xF6):
+			if (can_message->len > 0 && can_message->data[0] == 0x01) {
+				rsplen += mcu_chip_id(response + 4) + 1;
+				response[3] = 0x00;
+			}
 			break;
 		case BUILD_CMD_KEY(0xF8):
 			iap_read_string(can_message->src, can_message->data);