From da3bdb6eae3d5babc80ecac415a2d50674b60f94 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 11 Nov 2023 22:30:28 +0800 Subject: [PATCH] v1.0.1 --- .settings/language.settings.xml | 4 +-- Core/Src/usart.c | 2 +- a8000_hbot_robot_controler.ioc | 2 +- sdk | 2 +- usrc/board.h | 11 ++++---- usrc/main.cpp | 62 +++++++++++++++++++++++++++++++---------- usrc/project_configs.h | 3 +- 7 files changed, 60 insertions(+), 26 deletions(-) diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml index 7d6a0e4..48cb063 100644 --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/Core/Src/usart.c b/Core/Src/usart.c index 0af0b83..4da57d6 100644 --- a/Core/Src/usart.c +++ b/Core/Src/usart.c @@ -44,7 +44,7 @@ void MX_USART1_UART_Init(void) /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; - huart1.Init.BaudRate = 1500000; + huart1.Init.BaudRate = 921600; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; diff --git a/a8000_hbot_robot_controler.ioc b/a8000_hbot_robot_controler.ioc index 70f1078..69f0a0b 100644 --- a/a8000_hbot_robot_controler.ioc +++ b/a8000_hbot_robot_controler.ioc @@ -281,7 +281,7 @@ TIM6.IPParameters=Prescaler TIM6.Prescaler=71 TIM7.IPParameters=Prescaler TIM7.Prescaler=81 -USART1.BaudRate=1500000 +USART1.BaudRate=921600 USART1.IPParameters=VirtualMode,BaudRate USART1.VirtualMode=VM_ASYNC USART2.IPParameters=VirtualMode diff --git a/sdk b/sdk index 14654f9..8f364e5 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 14654f98532a65013384eb1582845af08c9cf327 +Subproject commit 8f364e5f9d3b8f1858abfe2ff3ba71376aa941d9 diff --git a/usrc/board.h b/usrc/board.h index aa5f605..a22ba29 100644 --- a/usrc/board.h +++ b/usrc/board.h @@ -1,6 +1,6 @@ #pragma once -#define BOARD_ID 1 +#define BOARD_ID 1 #define TMC_MOTOR_SPI hspi1 // MOTOR1 @@ -19,10 +19,11 @@ #define TMC_MOTOR2_SUB_IC_ENN_IO PC7 #define TMC_MOTOR2_ENN_IO // unused -#define ARM_SENSOR1_GPIO PD0 -#define ARM_SENSOR2_GPIO PD1 -#define ARM_SENSOR3_GPIO PD2 -#define ARM_SENSOR4_GPIO PD3 +#define ARM_X_ZERO PD0 +#define ARM_X_LIMIT PD1 +#define ARM_Y_ZERO PD2 +#define ARM_Y_LIMIT PD3 + #define ARM_SENSOR5_GPIO PD4 #define ARM_SENSOR6_GPIO PD5 #define ARM_SENSOR7_GPIO PD6 diff --git a/usrc/main.cpp b/usrc/main.cpp index bb58f65..c3c25aa 100644 --- a/usrc/main.cpp +++ b/usrc/main.cpp @@ -43,8 +43,8 @@ void nvs_init_cb() { } static void initsubmodule() { static XYRobotCtrlModule xyRobotCtrlModule; - static TMC4361A motora; - static TMC4361A motorb; + static TMC4361A motora; // 1 + static TMC4361A motorb; // 2 { TMC4361A::cfg_t cfg = { .spi = &TMC_MOTOR_SPI, // @@ -57,6 +57,7 @@ static void initsubmodule() { }; motora.initialize(&cfg); motora.setMotorShaft(false); + motora.setGLOBAL_SCALER(32); ZLOGI(TAG, "motora initialize TMC4361A:%x DriverIC:%x", motora.readICVersion(), motora.readSubICVersion()); } @@ -72,6 +73,7 @@ static void initsubmodule() { }; motorb.initialize(&cfg); motorb.setMotorShaft(false); + motorb.setGLOBAL_SCALER(32); ZLOGI(TAG, "motorb initialize TMC4361A:%x DriverIC:%x", motorb.readICVersion(), motorb.readSubICVersion()); } @@ -89,17 +91,45 @@ static void initsubmodule() { /******************************************************************************* * zcanXYRobotCtrlModule * *******************************************************************************/ - ZGPIO input[8]; - input[0].initAsInput(ARM_SENSOR1_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[1].initAsInput(ARM_SENSOR2_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[2].initAsInput(ARM_SENSOR3_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[3].initAsInput(ARM_SENSOR4_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[4].initAsInput(ARM_SENSOR5_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[5].initAsInput(ARM_SENSOR6_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[6].initAsInput(ARM_SENSOR7_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[7].initAsInput(ARM_SENSOR8_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - - xyRobotCtrlModule.initialize(initer.get_module_id(1), &motora, &motorb, &input[0], 8, FLASH_MASK_XYRobotCtrlModule1); + static ZGPIO input[4]; + input[0].initAsInput(ARM_X_ZERO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[1].initAsInput(ARM_Y_ZERO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[2].initAsInput(ARM_X_LIMIT, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[3].initAsInput(ARM_Y_LIMIT, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + + static XYRobotCtrlModule::flash_config_t xy_defaultcfg; + XYRobotCtrlModule::create_default_cfg(xy_defaultcfg); + xy_defaultcfg.configInited = true; + xy_defaultcfg.basecfg.robot_type = 1; + + xy_defaultcfg.basecfg.robot_type = I_XYRobotCtrlModule::hbot; + xy_defaultcfg.basecfg.x_shaft = 0; + xy_defaultcfg.basecfg.y_shaft = 1; + xy_defaultcfg.basecfg.ihold = 1; + xy_defaultcfg.basecfg.irun = 16; + xy_defaultcfg.basecfg.iholddelay = 100; + xy_defaultcfg.basecfg.distance_scale = 7344; + xy_defaultcfg.basecfg.shift_x = 0; + xy_defaultcfg.basecfg.shift_y = 0; + + // limit + xy_defaultcfg.basecfg.acc = 800; + xy_defaultcfg.basecfg.dec = 800; + xy_defaultcfg.basecfg.breakdec = 1600; + xy_defaultcfg.basecfg.maxspeed = 600; + xy_defaultcfg.basecfg.min_x = 0; + xy_defaultcfg.basecfg.max_x = 0; + xy_defaultcfg.basecfg.min_y = 0; + xy_defaultcfg.basecfg.max_y = 0; + + xy_defaultcfg.basecfg.run_to_zero_max_d = 10000 * 100; + xy_defaultcfg.basecfg.run_to_zero_speed = 80; + xy_defaultcfg.basecfg.run_to_zero_dec = 1600; + xy_defaultcfg.basecfg.look_zero_edge_max_d = 10000 * 3; + xy_defaultcfg.basecfg.look_zero_edge_speed = 10; + xy_defaultcfg.basecfg.look_zero_edge_dec = 1600; + + xyRobotCtrlModule.initialize(initer.get_module_id(1), &motora, &motorb, &input[0], 4, xy_defaultcfg, nullptr); xyRobotCtrlModule.dumpcfg(); initer.register_module(&xyRobotCtrlModule); @@ -111,7 +141,10 @@ void umain() { .deviceId = getDeviceId(), .input_gpio = { - // {PC6, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true}, + {ARM_SENSOR5_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true}, + {ARM_SENSOR6_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true}, + {ARM_SENSOR7_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true}, + {ARM_SENSOR8_GPIO, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true}, }, .output_gpio = { @@ -119,5 +152,6 @@ void umain() { }, }; initer.init(&cfg); + initsubmodule(); initer.loop(); } diff --git a/usrc/project_configs.h b/usrc/project_configs.h index e7c7d4a..aef2588 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -1,6 +1,6 @@ #pragma once -#define PC_VERSION "v1.0.0" +#define PC_VERSION "v1.0.1" #define PC_MANUFACTURER "http://www.iflytop.com/" #define PC_PROJECT_NAME "xy_robot_board" #define PC_IFLYTOP_ENABLE_OS 1 @@ -18,4 +18,3 @@ #define PC_NVS_ENABLE 1 #define PC_NVS_CONFIG_FLASH_SECTOR 8 -#define PC_NVS_INIT_CB nvs_init_cb