From d2fe85c472e126c10e89a3ba2ec75a807b05854e Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 8 Jun 2024 19:19:20 +0800 Subject: [PATCH] update --- .../subboard10_plate_clamp_case/pri_board.h | 102 +++++++++++++++++++++ .../subboard20_plate_clamp_case.cpp | 32 +++++++ .../subboard20_plate_clamp_case.hpp | 24 +++++ .../subboard20_plate_clamp_case_board.c | 73 +++++++++++++++ .../subboard20_plate_clamp_case_board.h | 12 +++ .../subboard40_and_50_temperature_ctrl/pri_board.h | 6 +- 6 files changed, 245 insertions(+), 4 deletions(-) create mode 100644 usrc/subboards/subboard10_plate_clamp_case/pri_board.h create mode 100644 usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.cpp create mode 100644 usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.hpp create mode 100644 usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.c create mode 100644 usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.h diff --git a/usrc/subboards/subboard10_plate_clamp_case/pri_board.h b/usrc/subboards/subboard10_plate_clamp_case/pri_board.h new file mode 100644 index 0000000..23b0726 --- /dev/null +++ b/usrc/subboards/subboard10_plate_clamp_case/pri_board.h @@ -0,0 +1,102 @@ +#pragma once + +/*********************************************************************************************************************** + * 板载扩展IO * + ***********************************************************************************************************************/ +#define EXT_INPUT_IO0 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO1 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO2 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO3 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO4 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO5 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO6 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO7 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO8 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO9 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true + +#define EXT_OUTPUT_IO0 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO1 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO2 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO3 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO4 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO5 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO6 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO7 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO8 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO9 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ + +#define TMC_MOTOR_SPI hspi1 + +/*********************************************************************************************************************** + * 左右移动 * + ***********************************************************************************************************************/ + +#define MOTOR1_CSN PA4 +#define MOTOR1_ENN PD5 +#define MOTOR1_SPI_MODE_SELECT PinNull +#define MOTOR1_nFREEZE_IO PinNull +#define MOTOR1_nRESET_IO PinNull +#define MOTOR1_SUB_IC_ENN_IO PinNull + +#define MOTOR1_REFL PD0 +#define MOTOR1_REFR PD8 +#define MOTOR1_REFL_MIRROR true +#define MOTOR1_REFR_MIRROR true + +#define MOTOR1_MOTOR_SHAFT true +#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE 60 +#define MOTOR1_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 +#define MOTOR1_STEPMOTOR_IHOLD 3 +#define MOTOR1_STEPMOTOR_IRUN 16 +#define MOTOR1_STEPMOTOR_IHOLDDELAY 100 +#define MOTOR1_STEPMOTOR_IGLOBALSCALER 0 +#define MOTOR1_MOTOR_DEFAULT_VELOCITY 500 +#define MOTOR1_MIN_D 0 +#define MOTOR1_MAX_D 0 +#define MOTOR1_MOTOR_RUN_TO_ZERO_SPEED 400 +#define MOTOR1_MOTOR_LOOK_ZERO_EDGE_SPEED 50 +#define MOTOR1_MOTOR_VSTART TMC5130_DEFAULT__MOTOR_VSTART +#define MOTOR1_MOTOR_A1 TMC5130_DEFAULT__MOTOR_A1 +#define MOTOR1_MOTOR_AMAX 300 +#define MOTOR1_MOTOR_V1 TMC5130_DEFAULT__MOTOR_V1 +#define MOTOR1_MOTOR_DMAX 300 +#define MOTOR1_MOTOR_D1 TMC5130_DEFAULT__MOTOR_D1 +#define MOTOR1_MOTOR_VSTOP TMC5130_DEFAULT__MOTOR_VSTOP +#define MOTOR1_MOTOR_TZEROWAIT TMC5130_DEFAULT__MOTOR_TZEROWAIT + +/*********************************************************************************************************************** + * 推杆电机 * + ***********************************************************************************************************************/ + +#define MOTOR2_CSN PB1 +#define MOTOR2_ENN PD4 +#define MOTOR2_SPI_MODE_SELECT PinNull +#define MOTOR2_nFREEZE_IO PinNull +#define MOTOR2_nRESET_IO PinNull +#define MOTOR2_SUB_IC_ENN_IO PinNull + +#define MOTOR2_REFL PD2 +#define MOTOR2_REFR PD9 +#define MOTOR2_REFL_MIRROR true +#define MOTOR2_REFR_MIRROR true + +#define MOTOR2_MOTOR_SHAFT true +#define MOTOR2_MOTOR_ONE_CIRCLE_PULSE 80 +#define MOTOR2_MOTOR_ONE_CIRCLE_PULSE_DENOMINATOR 1 +#define MOTOR2_STEPMOTOR_IHOLD 1 +#define MOTOR2_STEPMOTOR_IRUN 8 +#define MOTOR2_STEPMOTOR_IHOLDDELAY 100 +#define MOTOR2_STEPMOTOR_IGLOBALSCALER 0 +#define MOTOR2_MOTOR_DEFAULT_VELOCITY 500 +#define MOTOR2_MIN_D 0 +#define MOTOR2_MAX_D 0 +#define MOTOR2_MOTOR_RUN_TO_ZERO_SPEED 300 +#define MOTOR2_MOTOR_LOOK_ZERO_EDGE_SPEED 50 +#define MOTOR2_MOTOR_VSTART TMC5130_DEFAULT__MOTOR_VSTART +#define MOTOR2_MOTOR_A1 TMC5130_DEFAULT__MOTOR_A1 +#define MOTOR2_MOTOR_AMAX 300 +#define MOTOR2_MOTOR_V1 TMC5130_DEFAULT__MOTOR_V1 +#define MOTOR2_MOTOR_DMAX 300 +#define MOTOR2_MOTOR_D1 TMC5130_DEFAULT__MOTOR_D1 +#define MOTOR2_MOTOR_VSTOP TMC5130_DEFAULT__MOTOR_VSTOP +#define MOTOR2_MOTOR_TZEROWAIT TMC5130_DEFAULT__MOTOR_TZEROWAIT diff --git a/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.cpp b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.cpp new file mode 100644 index 0000000..ee8807f --- /dev/null +++ b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.cpp @@ -0,0 +1,32 @@ +#include "subboard20_plate_clamp_case.hpp" +extern "C" { +#include "subboard20_plate_clamp_case_board.h" +} +#include "pri_board.h" +#include "public_service/instance_init.hpp" +#include "public_service/public_service.hpp" +#include "sdk/components/mini_servo_motor/feite_servo_motor.hpp" +#include "sdk/components/mini_servo_motor/mini_servo_motor_ctrl_module.hpp" +#include "sdk/components/sensors/m3078/m3078_code_scaner.hpp" +#include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp" +#include "sdk/components/tmc/ic/ztmc4361A.hpp" +#include "sdk\components\pipette_module\pipette_ctrl_module_v2.hpp" + +#define TAG "Subboard20PlateClampCase" + +using namespace iflytop; + +/*********************************************************************************************************************** + * IMPL * + ***********************************************************************************************************************/ +void Subboard20PlateClampCase::initialize() { + IO_INIT(); + GService::inst()->getZCanProtocolParser()->registerModule(this); +#if 1 + /*********************************************************************************************************************** + * ID1 * + ***********************************************************************************************************************/ + { TMC5130_MOTOR_INITER(1, 1); } + { TMC5130_MOTOR_INITER(2, 2); } +#endif +} diff --git a/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.hpp b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.hpp new file mode 100644 index 0000000..489c51a --- /dev/null +++ b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case.hpp @@ -0,0 +1,24 @@ +#include +#include + +// +#include "configs/device_id_mgr.hpp" +#include "sdk/chip/chip.hpp" +#include "sdk/os/zos.hpp" +// +#include "sdk\components\step_motor_ctrl_module\step_motor_ctrl_module.hpp" +#include "sdk\components\tmc\ic\ztmc5130.hpp" +#include "public_service/public_service.hpp" + +namespace iflytop { +class Subboard20PlateClampCase : public ExtBoardImpl { + public: + static Subboard20PlateClampCase *ins() { + static Subboard20PlateClampCase instance; + return &instance; + } + + void initialize(); +}; + +} // namespace iflytop diff --git a/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.c b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.c new file mode 100644 index 0000000..9828f4e --- /dev/null +++ b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.c @@ -0,0 +1,73 @@ +#include "main.h" +#include "public_service/public_service.h" + +/* SPI1 init function */ +static void MX_SPI1_Init(void) { + __HAL_RCC_SPI1_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + + hspi1.Instance = SPI1; + hspi1.Init.Mode = SPI_MODE_MASTER; + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi1.Init.NSS = SPI_NSS_SOFT; + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32; + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi1.Init.TIMode = SPI_TIMODE_DISABLE; + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi1.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi1) != HAL_OK) { + Error_Handler(); + } + GPIO_InitTypeDef GPIO_InitStruct = {0}; + GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + hspi1_enable = true; +} + +static void MX_SPI2_Init(void) { + __HAL_RCC_SPI2_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + + hspi2.Instance = SPI2; + hspi2.Init.Mode = SPI_MODE_MASTER; + hspi2.Init.Direction = SPI_DIRECTION_2LINES; + hspi2.Init.DataSize = SPI_DATASIZE_8BIT; + hspi2.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi2.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi2.Init.NSS = SPI_NSS_SOFT; + hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; + hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi2.Init.TIMode = SPI_TIMODE_DISABLE; + hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi2.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi2) != HAL_OK) { + Error_Handler(); + } + GPIO_InitTypeDef GPIO_InitStruct = {0}; + GPIO_InitStruct.Pin = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + hspi2_enable = true; +} + +/** + * @brief 板夹仓初始化 + */ + +void subboard20_plate_clamp_case_board_init() { + common_hardware_init(); + MX_SPI1_Init(); + MX_SPI2_Init(); +} diff --git a/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.h b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.h new file mode 100644 index 0000000..493efbd --- /dev/null +++ b/usrc/subboards/subboard10_plate_clamp_case/subboard20_plate_clamp_case_board.h @@ -0,0 +1,12 @@ +#pragma once +#include "main.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void subboard20_plate_clamp_case_board_init(); + +#ifdef __cplusplus +} +#endif diff --git a/usrc/subboards/subboard40_and_50_temperature_ctrl/pri_board.h b/usrc/subboards/subboard40_and_50_temperature_ctrl/pri_board.h index e2dec84..154506c 100644 --- a/usrc/subboards/subboard40_and_50_temperature_ctrl/pri_board.h +++ b/usrc/subboards/subboard40_and_50_temperature_ctrl/pri_board.h @@ -12,7 +12,7 @@ #define EXT_INPUT_IO0 PC6, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true #define EXT_INPUT_IO1 PC7, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true -#define EXT_INPUT_IO2 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true +#define EXT_INPUT_IO2 PA0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true #define EXT_INPUT_IO3 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true #define EXT_INPUT_IO4 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true #define EXT_INPUT_IO5 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true @@ -21,7 +21,7 @@ #define EXT_INPUT_IO8 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true #define EXT_INPUT_IO9 PinNull, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true -#define EXT_OUTPUT_IO0 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ +#define EXT_OUTPUT_IO0 PD0, ZGPIO::kMode_nopull, false /*mirror*/, false /*init val*/ #define EXT_OUTPUT_IO1 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ #define EXT_OUTPUT_IO2 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ #define EXT_OUTPUT_IO3 PinNull, ZGPIO::kMode_nopull, false /*mirror*/, true /*init val*/ @@ -140,5 +140,3 @@ }, \ .enablefbcheck = false, .enableTrace = ENABL_TRACE, \ } - -