diff --git a/.cproject b/.cproject
index 5da375d..ac9045d 100644
--- a/.cproject
+++ b/.cproject
@@ -30,7 +30,7 @@
-
+
-
+
@@ -222,7 +222,7 @@
-
+
@@ -243,10 +243,10 @@
-
+
-
+
\ No newline at end of file
diff --git a/.project b/.project
index 8183321..10fa12e 100644
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
- graphite_digester_io_board
+ graphite_digester_tmc5160
diff --git a/graphite_digester_io_board.cfg b/graphite_digester_tmc5160.cfg
similarity index 100%
rename from graphite_digester_io_board.cfg
rename to graphite_digester_tmc5160.cfg
diff --git a/graphite_digester_io_board.ioc b/graphite_digester_tmc5160.ioc
similarity index 99%
rename from graphite_digester_io_board.ioc
rename to graphite_digester_tmc5160.ioc
index 2247961..e222508 100644
--- a/graphite_digester_io_board.ioc
+++ b/graphite_digester_tmc5160.ioc
@@ -217,8 +217,8 @@ ProjectManager.MainLocation=Core/Src
ProjectManager.NoMain=false
ProjectManager.PreviousToolchain=STM32CubeIDE
ProjectManager.ProjectBuild=false
-ProjectManager.ProjectFileName=graphite_digester_io_board.ioc
-ProjectManager.ProjectName=graphite_digester_io_board
+ProjectManager.ProjectFileName=graphite_digester_tmc5160.ioc
+ProjectManager.ProjectName=graphite_digester_tmc5160
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x1000
diff --git a/graphite_digester_io_board.launch b/graphite_digester_tmc5160.launch
similarity index 95%
rename from graphite_digester_io_board.launch
rename to graphite_digester_tmc5160.launch
index 277779f..13a5b8a 100644
--- a/graphite_digester_io_board.launch
+++ b/graphite_digester_tmc5160.launch
@@ -12,7 +12,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
@@ -82,13 +82,13 @@
-
-
+
+
-
+
diff --git a/sdk b/sdk
index 1163d88..7e3cf67 160000
--- a/sdk
+++ b/sdk
@@ -1 +1 @@
-Subproject commit 1163d8803f5a9bd75ec05d8ab6104148056801c9
+Subproject commit 7e3cf673978dc99a69dd42dbd5d08046a98fa1ae
diff --git a/usrc/board.h b/usrc/board.h
index 838badf..4d9a0c8 100644
--- a/usrc/board.h
+++ b/usrc/board.h
@@ -1,56 +1,41 @@
#pragma once
-#define TAG_SOLENOID_VALVE00 PD0
-#define TAG_SOLENOID_VALVE01 PD1
-#define TAG_SOLENOID_VALVE02 PD2
-#define TAG_SOLENOID_VALVE03 PD3
-#define TAG_SOLENOID_VALVE04 PD4
-#define TAG_SOLENOID_VALVE05 PD5
-#define TAG_SOLENOID_VALVE06 PD6
-#define TAG_SOLENOID_VALVE07 PD7
-#define TAG_SOLENOID_VALVE08 PD8
-#define TAG_SOLENOID_VALVE09 PD9
-#define TAG_SOLENOID_VALVE10 PD10
-#define TAG_SOLENOID_VALVE11 PD11
-
-#define SOLENOID_VALVE00 TAG_SOLENOID_VALVE07
-#define SOLENOID_VALVE01 TAG_SOLENOID_VALVE06
-#define SOLENOID_VALVE02 TAG_SOLENOID_VALVE05
-#define SOLENOID_VALVE03 TAG_SOLENOID_VALVE04
-#define SOLENOID_VALVE04 TAG_SOLENOID_VALVE03
-#define SOLENOID_VALVE05 TAG_SOLENOID_VALVE02
-#define SOLENOID_VALVE06 TAG_SOLENOID_VALVE01
-#define SOLENOID_VALVE07 TAG_SOLENOID_VALVE00
-#define SOLENOID_VALVE08 TAG_SOLENOID_VALVE11
-#define SOLENOID_VALVE09 TAG_SOLENOID_VALVE10
-#define SOLENOID_VALVE10 TAG_SOLENOID_VALVE09
-#define SOLENOID_VALVE11 TAG_SOLENOID_VALVE08
-
-// 光电传感器
-#define TAG_SENSOR_INT0 PC0
-#define TAG_SENSOR_INT1 PC1
-#define TAG_SENSOR_INT2 PC2
-#define TAG_SENSOR_INT3 PC3
-#define TAG_SENSOR_INT4 PC4
-#define TAG_SENSOR_INT5 PC5
-#define TAG_SENSOR_INT6 PC6
-#define TAG_SENSOR_INT7 PC7
-#define TAG_SENSOR_INT8 PC8
-#define TAG_SENSOR_INT9 PC9
-
-#define SENSOR_INT0 TAG_SENSOR_INT9
-#define SENSOR_INT1 TAG_SENSOR_INT8
-#define SENSOR_INT2 TAG_SENSOR_INT7
-#define SENSOR_INT3 TAG_SENSOR_INT6
-#define SENSOR_INT4 TAG_SENSOR_INT0
-#define SENSOR_INT5 TAG_SENSOR_INT1
-#define SENSOR_INT6 TAG_SENSOR_INT2
-#define SENSOR_INT7 TAG_SENSOR_INT3
-#define SENSOR_INT8 TAG_SENSOR_INT4
-#define SENSOR_INT9 TAG_SENSOR_INT5
-
-
-#define ID0_IO PB11
-#define ID1_IO PB12
-#define ID2_IO PB13
-#define ID3_IO PB14
-#define ID4_IO PB15
\ No newline at end of file
+#define TMC_MOTOR_SPI hspi1
+// #define TMC_DIAG1 PB0
+// #define TMC_DIAG0 PB1
+
+#define ID0_IO PC0
+#define ID1_IO PC1
+#define ID2_IO PC2
+#define ID3_IO PC3
+#define ID4_IO PC4
+
+#define SENSOR_INT0 PD0
+#define SENSOR_INT1 PD1
+#define SENSOR_INT2 PD2
+#define SENSOR_INT3 PD3
+#define SENSOR_INT4 PD4
+#define SENSOR_INT5 PD5
+#define SENSOR_INT6 PD6
+#define SENSOR_INT7 PD7
+#define SENSOR_INT8 PD8
+#define SENSOR_INT9 PD9
+
+
+// MOTOR0
+#define MOTOR0_CSN PA4
+#define MOTOR0_ENN PB7
+#define MOTOR0_SPI_MODE_SELECT PB4
+#define MOTOR0_REFL SENSOR_INT0
+#define MOTOR0_REFR SENSOR_INT1
+
+
+
+
+// MOTOR1
+// #define MOTOR1_CSN PA8
+// #define MOTOR1_ENN PE6
+// #define MOTOR1_SPI_MODE_SELECT PinNull
+// #define MOTOR1_REFL PD11
+// #define MOTOR1_REFR PD12
+
+// #define MOTOR_CFG_FLASH_MARK "MOTOR_CFG_FLASH_MARK"
diff --git a/usrc/main.cpp b/usrc/main.cpp
index b2cbc26..e44cdb8 100644
--- a/usrc/main.cpp
+++ b/usrc/main.cpp
@@ -52,43 +52,81 @@ static int32_t getDeviceId() {
* INIT_SUBMODULE *
*******************************************************************************/
void nvs_init_cb() {}
-static void initsubmodule() { osDelay(1000); }
+static void initsubmodule() {
+ osDelay(1000);
+ {
+ static TMC5130 g_motor;
+ static StepMotorCtrlModule g_stepMotorCtrlModule;
+ TMC5130::cfg_t cfg = {
+ .spi = &TMC_MOTOR_SPI, //
+ .csgpio = MOTOR0_CSN, //
+ .ennPin = MOTOR0_ENN, //
+ .spi_mode_select = MOTOR0_SPI_MODE_SELECT, //
+ };
+ g_motor.initialize(&cfg);
+ ZLOGI(TAG, "motora initialize 5160:%x ", g_motor.readICVersion());
+ g_motor.enable(true);
+ g_motor.setMotorShaft(false);
+ // g_motor.setAcceleration(100);
+ // g_motor.setDeceleration(100);
+ // g_motor.setIHOLD_IRUN(1,8, 10);
+ // g_motor.rotate(1000);
+ static ZGPIO input[10];
+ input[0].initAsInput(MOTOR0_REFL /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
+ input[1].initAsInput(MOTOR0_REFR /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
+
+ StepMotorCtrlModule::flash_config_t smcm_cfg = {0};
+ StepMotorCtrlModule::create_default_cfg(smcm_cfg);
+ smcm_cfg.base_param.motor_one_circle_pulse = 1000;
+ smcm_cfg.base_param.motor_one_circle_pulse_denominator = 1;
+ smcm_cfg.base_param.stepmotor_ihold = 1;
+ smcm_cfg.base_param.stepmotor_irun = 1;
+ smcm_cfg.base_param.motor_shaft = 0;
+ smcm_cfg.base_param.motor_default_velocity = 1;
+ smcm_cfg.base_param.motor_run_to_zero_speed = 0;
+ smcm_cfg.base_param.max_d = 0;
+ smcm_cfg.base_param.min_d = 0;
+ smcm_cfg.base_param.motor_run_to_zero_max_d = 0;
+ smcm_cfg.base_param.motor_run_to_zero_speed = 1;
+ smcm_cfg.base_param.motor_run_to_zero_dec = 0;
+ smcm_cfg.base_param.motor_look_zero_edge_max_d = 0;
+ smcm_cfg.base_param.motor_look_zero_edge_speed = 1;
+ smcm_cfg.base_param.motor_look_zero_edge_dec = 0;
+
+ g_stepMotorCtrlModule.initialize(initer.get_module_id(1), &g_motor, input, ZARRAY_SIZE(input), nullptr, &smcm_cfg);
+ g_stepMotorCtrlModule.enable(false);
+ initer.register_module(&g_stepMotorCtrlModule);
+ }
+
+ {
+ // 115200
+ /*******************************************************************************
+ * 试管帽夹舵机 *
+ *******************************************************************************/
+ static FeiTeServoMotor feiteservomotor_bus; // 飞特舵机总线
+ static MiniRobotCtrlModule mini_servo;
+
+ // 飞特舵机总线
+ ZASSERT(huart3.Init.BaudRate == 115200);
+ feiteservomotor_bus.initialize(&huart3, &hdma_usart3_rx, &hdma_usart3_tx);
+
+ static MiniRobotCtrlModule::flash_config_t cfg = {0};
+ cfg.default_torque = 330;
+ mini_servo.initialize(initer.get_module_id(2), &feiteservomotor_bus, 1, &cfg);
+ initer.register_module(&mini_servo);
+ }
+}
/*******************************************************************************
* MAIN *
*******************************************************************************/
void umain() {
ZCancmderSubboardIniter::cfg_t cfg = //
- { //
- .deviceId = getDeviceId(),
- .input_gpio =
- {
- {.pin = SENSOR_INT0, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT1, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT2, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT3, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT4, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT5, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT6, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT7, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT8, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
- {.pin = SENSOR_INT9, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true},
-
- },
- .output_gpio = {
- {.pin = PD7, /*SOLENOID_VALVE00*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD6, /*SOLENOID_VALVE01*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD5, /*SOLENOID_VALVE02*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD4, /*SOLENOID_VALVE03*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD3, /*SOLENOID_VALVE04*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD2, /*SOLENOID_VALVE05*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD1, /*SOLENOID_VALVE06*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD0, /*SOLENOID_VALVE07*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD11, /*SOLENOID_VALVE08*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD10, /*SOLENOID_VALVE09*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD9, /*SOLENOID_VALVE10*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- {.pin = PD8, /*SOLENOID_VALVE11*/ .mode = ZGPIO::kMode_nopull, .mirror = true, .initLevel = false, .log_when_setstate = false},
- }};
+ {
+ .deviceId = getDeviceId(),
+ .input_gpio = {},
+ .output_gpio = {},
+ };
initer.init(&cfg);
initsubmodule();
initer.loop();
diff --git a/usrc/project_configs.h b/usrc/project_configs.h
index c1240f6..25395b0 100644
--- a/usrc/project_configs.h
+++ b/usrc/project_configs.h
@@ -1,13 +1,13 @@
#pragma once
#define PC_VERSION "v1.0.0"
#define PC_MANUFACTURER "http://www.iflytop.com/"
-#define PC_PROJECT_NAME "graphite_digester_io_board"
+#define PC_PROJECT_NAME "graphite_digester_tmc5160"
#define PC_IFLYTOP_ENABLE_OS 1
#define PC_DEBUG_UART huart1
#define PC_DEBUG_UART_DMA_HANDLER hdma_usart1_rx
#define PC_DEBUG_UART_RX_BUF_SIZE 1024
-#define PC_DEBUG_LIGHT_GPIO PE8
+#define PC_DEBUG_LIGHT_GPIO PE2
#define PC_SYS_DELAY_US_TIMER htim6 // US延时定时器
#define PC_SYS_ZTICKET_TIMER TIM11 // 系统ticket定时器