diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml index c699a89..48cb063 100644 --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/Core/Inc/FreeRTOSConfig.h b/Core/Inc/FreeRTOSConfig.h index c0a8ac3..05cc8ff 100644 --- a/Core/Inc/FreeRTOSConfig.h +++ b/Core/Inc/FreeRTOSConfig.h @@ -64,7 +64,7 @@ #define configTICK_RATE_HZ ((TickType_t)1000) #define configMAX_PRIORITIES ( 7 ) #define configMINIMAL_STACK_SIZE ((uint16_t)128) -#define configTOTAL_HEAP_SIZE ((size_t)15360) +#define configTOTAL_HEAP_SIZE ((size_t)30000) #define configMAX_TASK_NAME_LEN ( 16 ) #define configUSE_16_BIT_TICKS 0 #define configUSE_MUTEXES 1 diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h index 33e932d..0c2ff88 100644 --- a/Core/Inc/stm32f4xx_it.h +++ b/Core/Inc/stm32f4xx_it.h @@ -59,10 +59,12 @@ void CAN1_RX0_IRQHandler(void); void CAN1_RX1_IRQHandler(void); void CAN1_SCE_IRQHandler(void); void TIM1_TRG_COM_TIM11_IRQHandler(void); +void USART1_IRQHandler(void); void USART2_IRQHandler(void); void USART3_IRQHandler(void); void TIM6_DAC_IRQHandler(void); void TIM7_IRQHandler(void); +void DMA2_Stream2_IRQHandler(void); /* USER CODE BEGIN EFP */ /* USER CODE END EFP */ diff --git a/Core/Src/dma.c b/Core/Src/dma.c index a942cde..d203027 100644 --- a/Core/Src/dma.c +++ b/Core/Src/dma.c @@ -41,6 +41,7 @@ void MX_DMA_Init(void) /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); + __HAL_RCC_DMA2_CLK_ENABLE(); /* DMA interrupt init */ /* DMA1_Stream5_IRQn interrupt configuration */ @@ -49,6 +50,9 @@ void MX_DMA_Init(void) /* DMA1_Stream6_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 5, 0); HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn); + /* DMA2_Stream2_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 5, 0); + HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn); } diff --git a/Core/Src/main.c b/Core/Src/main.c index af75621..6a3d354 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -226,7 +226,6 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) /* USER CODE END Callback 1 */ } #endif - /** * @brief This function is executed in case of error occurrence. * @retval None diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 434e434..e1f2fdf 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -59,8 +59,10 @@ extern CAN_HandleTypeDef hcan1; extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim6; extern TIM_HandleTypeDef htim7; +extern DMA_HandleTypeDef hdma_usart1_rx; extern DMA_HandleTypeDef hdma_usart2_rx; extern DMA_HandleTypeDef hdma_usart2_tx; +extern UART_HandleTypeDef huart1; extern UART_HandleTypeDef huart2; extern UART_HandleTypeDef huart3; extern TIM_HandleTypeDef htim11; @@ -267,6 +269,20 @@ void TIM1_TRG_COM_TIM11_IRQHandler(void) } /** + * @brief This function handles USART1 global interrupt. + */ +void USART1_IRQHandler(void) +{ + /* USER CODE BEGIN USART1_IRQn 0 */ + + /* USER CODE END USART1_IRQn 0 */ + HAL_UART_IRQHandler(&huart1); + /* USER CODE BEGIN USART1_IRQn 1 */ + + /* USER CODE END USART1_IRQn 1 */ +} + +/** * @brief This function handles USART2 global interrupt. */ void USART2_IRQHandler(void) @@ -322,6 +338,20 @@ void TIM7_IRQHandler(void) /* USER CODE END TIM7_IRQn 1 */ } +/** + * @brief This function handles DMA2 stream2 global interrupt. + */ +void DMA2_Stream2_IRQHandler(void) +{ + /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */ + + /* USER CODE END DMA2_Stream2_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart1_rx); + /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */ + + /* USER CODE END DMA2_Stream2_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/Core/Src/usart.c b/Core/Src/usart.c index 58c311d..041a7b5 100644 --- a/Core/Src/usart.c +++ b/Core/Src/usart.c @@ -27,6 +27,7 @@ UART_HandleTypeDef huart1; UART_HandleTypeDef huart2; UART_HandleTypeDef huart3; +DMA_HandleTypeDef hdma_usart1_rx; DMA_HandleTypeDef hdma_usart2_rx; DMA_HandleTypeDef hdma_usart2_tx; @@ -43,7 +44,7 @@ void MX_USART1_UART_Init(void) /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; - huart1.Init.BaudRate = 1000000; + huart1.Init.BaudRate = 921600; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; @@ -142,6 +143,28 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) GPIO_InitStruct.Alternate = GPIO_AF7_USART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + /* USART1 DMA Init */ + /* USART1_RX Init */ + hdma_usart1_rx.Instance = DMA2_Stream2; + hdma_usart1_rx.Init.Channel = DMA_CHANNEL_4; + hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; + hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE; + hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_usart1_rx.Init.Mode = DMA_NORMAL; + hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW; + hdma_usart1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; + if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx); + + /* USART1 interrupt Init */ + HAL_NVIC_SetPriority(USART1_IRQn, 5, 0); + HAL_NVIC_EnableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ @@ -256,6 +279,11 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); + /* USART1 DMA DeInit */ + HAL_DMA_DeInit(uartHandle->hdmarx); + + /* USART1 interrupt Deinit */ + HAL_NVIC_DisableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspDeInit 1 */ /* USER CODE END USART1_MspDeInit 1 */ diff --git a/a8000_inlet_and_outlet_module.ioc b/a8000_inlet_and_outlet_module.ioc index 6a6f9dc..249642a 100644 --- a/a8000_inlet_and_outlet_module.ioc +++ b/a8000_inlet_and_outlet_module.ioc @@ -23,7 +23,18 @@ CAN1.TTCM=ENABLE CAN1.TXFP=DISABLE Dma.Request0=USART2_RX Dma.Request1=USART2_TX -Dma.RequestsNb=2 +Dma.Request2=USART1_RX +Dma.RequestsNb=3 +Dma.USART1_RX.2.Direction=DMA_PERIPH_TO_MEMORY +Dma.USART1_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE +Dma.USART1_RX.2.Instance=DMA2_Stream2 +Dma.USART1_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART1_RX.2.MemInc=DMA_MINC_ENABLE +Dma.USART1_RX.2.Mode=DMA_NORMAL +Dma.USART1_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART1_RX.2.PeriphInc=DMA_PINC_DISABLE +Dma.USART1_RX.2.Priority=DMA_PRIORITY_LOW +Dma.USART1_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode Dma.USART2_RX.0.Direction=DMA_PERIPH_TO_MEMORY Dma.USART2_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE Dma.USART2_RX.0.Instance=DMA1_Stream5 @@ -45,10 +56,11 @@ Dma.USART2_TX.1.PeriphInc=DMA_PINC_DISABLE Dma.USART2_TX.1.Priority=DMA_PRIORITY_LOW Dma.USART2_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode FREERTOS.FootprintOK=true -FREERTOS.IPParameters=Tasks01,FootprintOK,configUSE_NEWLIB_REENTRANT,configUSE_RECURSIVE_MUTEXES,configUSE_COUNTING_SEMAPHORES,configRECORD_STACK_HIGH_ADDRESS,configENABLE_FPU +FREERTOS.IPParameters=Tasks01,FootprintOK,configUSE_NEWLIB_REENTRANT,configUSE_RECURSIVE_MUTEXES,configUSE_COUNTING_SEMAPHORES,configRECORD_STACK_HIGH_ADDRESS,configENABLE_FPU,configTOTAL_HEAP_SIZE FREERTOS.Tasks01=defaultTask,-3,1024,StartDefaultTask,As weak,NULL,Dynamic,NULL,NULL FREERTOS.configENABLE_FPU=1 FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1 +FREERTOS.configTOTAL_HEAP_SIZE=30000 FREERTOS.configUSE_COUNTING_SEMAPHORES=1 FREERTOS.configUSE_NEWLIB_REENTRANT=1 FREERTOS.configUSE_RECURSIVE_MUTEXES=1 @@ -129,6 +141,7 @@ NVIC.CAN1_SCE_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.CAN1_TX_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.DMA1_Stream5_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream6_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true +NVIC.DMA2_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.ForceEnableDMAVector=true NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false @@ -146,6 +159,7 @@ NVIC.TIM6_DAC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.TIM7_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.TimeBase=TIM1_TRG_COM_TIM11_IRQn NVIC.TimeBaseIP=TIM11 +NVIC.USART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.USART3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false @@ -318,7 +332,7 @@ TIM6.IPParameters=Prescaler TIM6.Prescaler=71 TIM7.IPParameters=Prescaler TIM7.Prescaler=81 -USART1.BaudRate=1000000 +USART1.BaudRate=921600 USART1.IPParameters=VirtualMode,BaudRate USART1.VirtualMode=VM_ASYNC USART2.IPParameters=VirtualMode diff --git a/sdk b/sdk index 0208551..f8c43b9 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 02085518d805ab20d8ca41db8911a56ca7913a3d +Subproject commit f8c43b9647e909d71fe19e984986e6201b0a16b7 diff --git a/usrc/board.h b/usrc/board.h new file mode 100644 index 0000000..c594d67 --- /dev/null +++ b/usrc/board.h @@ -0,0 +1,25 @@ +#pragma once + +#define TMC_MOTOR_SPI hspi1 +// JL_CSN +#define MOTOR1_CSN PA4 +#define MOTOR1_ENN PE3 +#define MOTOR1_SPI_MODE_SELECT PinNull +#define MOTOR1_REFL PD13 +#define MOTOR1_REFR PD14 +// SL_CSN +#define MOTOR2_CSN PA8 +#define MOTOR2_ENN PE6 +#define MOTOR2_SPI_MODE_SELECT PinNull +#define MOTOR2_REFL PD11 +#define MOTOR2_REFR PD12 +// CL_CSN +#define MOTOR3_CSN PA15 +#define MOTOR3_ENN PE7 +#define MOTOR3_SPI_MODE_SELECT PinNull +#define MOTOR3_REFL PD9 +#define MOTOR3_REFR PD10 + +#define MOTOR_CFG_FLASH_MARK "MOTOR_CFG_FLASH_MARK" + +#define BOARD_ID 4 diff --git a/usrc/main.cpp b/usrc/main.cpp index 343c083..449b87a 100644 --- a/usrc/main.cpp +++ b/usrc/main.cpp @@ -1,137 +1,138 @@ #include #include -#include "sdk/os/zos.hpp" -#include "sdk\components\flash\zsimple_flash.hpp" -#include "sdk\components\zcancmder\zcanreceiver.hpp" -#include "sdk\components\zcancmder_module\zcan_basic_order_module.hpp" -#include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp" -// -#include "sdk\components\flash\znvs.hpp" -// +#include "board.h" +#include "sdk\components\subcanmodule\zcancmder_subboard_initer.hpp" +/******************************************************************************* + * PROJECT_INCLUDE * + *******************************************************************************/ #include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.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\pipette_module\pipette_ctrl_module_v2.hpp" -#include "sdk\components\sensors\m3078\m3078_code_scaner.hpp" -#include "sdk\components\sensors\tmp117\tmp117.hpp" -#include "sdk\components\ti\drv8710.hpp" #include "sdk\components\tmc\ic\ztmc5130.hpp" -#include "sdk\components\water_cooling_temperature_control_module\pwm_ctrl_module.hpp" -#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module.hpp" -#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module_factory.cpp" -#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module_factory.hpp" -#include "sdk\components\zcancmder\zcan_board_module.hpp" -// #include "M3078CodeScanner" #define TAG "main" using namespace iflytop; using namespace std; +static ZCancmderSubboardIniter initer; + extern void umain(); extern "C" { void StartDefaultTask(void const* argument) { umain(); } } -extern "C" { -extern DMA_HandleTypeDef hdma_usart2_rx; -extern DMA_HandleTypeDef hdma_usart2_tx; -} -static ZCanCmder g_zcanCmder; -static ZIProtocolParser g_ziProtocolParser; -// -static TMC5130 g_motor[3]; -// -static PipetteModule g_pipetteModule; -// USART4_TX - -void initmodule() { - osDelay(1000); - - { - static ZCanBoardModule::hardware_config_t cfg = { - .input = - { - {PD0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD2, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD3, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD4, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD5, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD6, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD7, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - {PD8, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false}, - }, - }; - static ZCanBoardModule boardmodule; - boardmodule.initialize(BOARD_ID * 10 + 0, &cfg); - g_ziProtocolParser.registerModule(&boardmodule); - } - +/******************************************************************************* + * GET_DEVICE_ID * + *******************************************************************************/ +static int32_t getDeviceId() { return BOARD_ID; } +/******************************************************************************* + * INIT_SUBMODULE * + *******************************************************************************/ +void nvs_init_cb() {} +static void initsubmodule() { + /** + * @brief 入料 + */ { static TMC5130 motor; static StepMotorCtrlModule stepMotorCtrlModule; TMC5130::cfg_t cfg = { .spi = &TMC_MOTOR_SPI, // - .csgpio = MOTOR0_CSN, // - .ennPin = MOTOR0_ENN, // - .spi_mode_select = MOTOR0_SPI_MODE_SELECT, // + .csgpio = MOTOR1_CSN, // + .ennPin = MOTOR1_ENN, // + .spi_mode_select = MOTOR1_SPI_MODE_SELECT, // }; motor.initialize(&cfg); motor.setMotorShaft(false); - ZLOGI(TAG, "motora initialize 5160:%x ", motor.readICVersion()); + ZLOGI(TAG, "motor1 initialize 5160:%x ", motor.readICVersion()); static ZGPIO input[2]; - 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); + input[0].initAsInput(MOTOR1_REFL /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[1].initAsInput(MOTOR1_REFR /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - stepMotorCtrlModule.initialize(BOARD_ID * 10 + 1, &motor, input, ZARRAY_SIZE(input), nullptr); - g_ziProtocolParser.registerModule(&stepMotorCtrlModule); + I_StepMotorCtrlModule::flash_config_t smcm_cfg = {0}; + StepMotorCtrlModule::create_default_cfg(smcm_cfg); + smcm_cfg.base_param.distance_scale = 200; + smcm_cfg.base_param.distance_scale_denominator = 1; + smcm_cfg.base_param.irun = 24; + smcm_cfg.base_param.ihold = 1; + smcm_cfg.base_param.x_shaft = false; + smcm_cfg.base_param.maxspeed = 150; + + stepMotorCtrlModule.initialize(initer.get_module_id(1), &motor, input, ZARRAY_SIZE(input), nullptr, &smcm_cfg); + initer.register_module(&stepMotorCtrlModule); } - + /** + * @brief 平移 + */ { static TMC5130 motor; static StepMotorCtrlModule stepMotorCtrlModule; TMC5130::cfg_t cfg = { .spi = &TMC_MOTOR_SPI, // - .csgpio = MOTOR1_CSN, // - .ennPin = MOTOR1_ENN, // - .spi_mode_select = MOTOR1_SPI_MODE_SELECT, // + .csgpio = MOTOR2_CSN, // + .ennPin = MOTOR2_ENN, // + .spi_mode_select = MOTOR2_SPI_MODE_SELECT, // }; motor.initialize(&cfg); motor.setMotorShaft(false); - ZLOGI(TAG, "motora initialize 5160:%x ", motor.readICVersion()); + ZLOGI(TAG, "motor2 initialize 5160:%x ", motor.readICVersion()); static ZGPIO input[2]; - input[0].initAsInput(MOTOR1_REFL /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[1].initAsInput(MOTOR1_REFR /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[0].initAsInput(MOTOR2_REFL /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[1].initAsInput(MOTOR2_REFR /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - stepMotorCtrlModule.initialize(BOARD_ID * 10 + 2, &motor, input, ZARRAY_SIZE(input), nullptr); - g_ziProtocolParser.registerModule(&stepMotorCtrlModule); + I_StepMotorCtrlModule::flash_config_t smcm_cfg = {0}; + StepMotorCtrlModule::create_default_cfg(smcm_cfg); + smcm_cfg.base_param.distance_scale = 100; + smcm_cfg.base_param.distance_scale_denominator = 1; + smcm_cfg.base_param.irun = 24; + smcm_cfg.base_param.ihold = 1; + smcm_cfg.base_param.x_shaft = true; + smcm_cfg.base_param.maxspeed = 50; + smcm_cfg.base_param.run_to_zero_speed = 50; + + stepMotorCtrlModule.initialize(initer.get_module_id(2), &motor, input, ZARRAY_SIZE(input), nullptr, &smcm_cfg); + initer.register_module(&stepMotorCtrlModule); } + /** + * @brief 出料 + */ { static TMC5130 motor; static StepMotorCtrlModule stepMotorCtrlModule; TMC5130::cfg_t cfg = { .spi = &TMC_MOTOR_SPI, // - .csgpio = MOTOR2_CSN, // - .ennPin = MOTOR2_ENN, // - .spi_mode_select = MOTOR2_SPI_MODE_SELECT, // + .csgpio = MOTOR3_CSN, // + .ennPin = MOTOR3_ENN, // + .spi_mode_select = MOTOR3_SPI_MODE_SELECT, // }; motor.initialize(&cfg); motor.setMotorShaft(false); - ZLOGI(TAG, "motora initialize 5160:%x ", motor.readICVersion()); + ZLOGI(TAG, "motor3 initialize 5160:%x ", motor.readICVersion()); static ZGPIO input[2]; - input[0].initAsInput(MOTOR2_REFL /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - input[1].initAsInput(MOTOR2_REFR /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); - - stepMotorCtrlModule.initialize(BOARD_ID * 10 + 3, &motor, input, ZARRAY_SIZE(input), nullptr); - g_ziProtocolParser.registerModule(&stepMotorCtrlModule); + input[0].initAsInput(MOTOR3_REFL /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + input[1].initAsInput(MOTOR3_REFR /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true); + + I_StepMotorCtrlModule::flash_config_t smcm_cfg = {0}; + StepMotorCtrlModule::create_default_cfg(smcm_cfg); + smcm_cfg.base_param.distance_scale = 100; + smcm_cfg.base_param.distance_scale_denominator = 1; + smcm_cfg.base_param.irun = 24; + smcm_cfg.base_param.ihold = 1; + smcm_cfg.base_param.x_shaft = true; + smcm_cfg.base_param.maxspeed = 50; + smcm_cfg.base_param.run_to_zero_speed = 50; + + stepMotorCtrlModule.initialize(initer.get_module_id(3), &motor, input, ZARRAY_SIZE(input), nullptr, &smcm_cfg); + initer.register_module(&stepMotorCtrlModule); } - +#if 0 { static M3078CodeScanner codescanner; static M3078CodeScanner::hardware_config_t cfg = { @@ -146,58 +147,27 @@ void initmodule() { codescanner.initialize(BOARD_ID * 10 + 4, &cfg); g_ziProtocolParser.registerModule(&codescanner); } - - { - // 115200 - static FeiTeServoMotor feiteservomotor_bus; // 飞特舵机总线 - static MiniRobotCtrlModule mini_servo[4]; - - ZASSERT(huart2.Init.BaudRate == 115200); // 飞特舵机总线 - feiteservomotor_bus.initialize(&huart2, &hdma_usart2_rx, &hdma_usart2_tx); // 飞特舵机总线 - - mini_servo[0].initialize(BOARD_ID * 10 + 5, &feiteservomotor_bus, 1); - mini_servo[1].initialize(BOARD_ID * 10 + 6, &feiteservomotor_bus, 2); - mini_servo[2].initialize(BOARD_ID * 10 + 7, &feiteservomotor_bus, 3); - mini_servo[3].initialize(BOARD_ID * 10 + 8, &feiteservomotor_bus, 4); - - g_ziProtocolParser.registerModule(&mini_servo[0]); - g_ziProtocolParser.registerModule(&mini_servo[1]); - g_ziProtocolParser.registerModule(&mini_servo[2]); - g_ziProtocolParser.registerModule(&mini_servo[3]); - } +#endif } +/******************************************************************************* + * MAIN * + *******************************************************************************/ void umain() { - chip_cfg_t chipcfg; - chipcfg.us_dleay_tim = &DELAY_US_TIMER; - chipcfg.tim_irq_scheduler_tim = &TIM_IRQ_SCHEDULER_TIMER; - chipcfg.huart = &DEBUG_UART; - chipcfg.debuglight = DEBUG_LIGHT_GPIO; - - chip_init(&chipcfg); - - zos_cfg_t zoscfg; - zos_init(&zoscfg); - - ZLOGI(TAG, "boardId:%d", BOARD_ID); - - /******************************************************************************* - * NVSINIT * - *******************************************************************************/ - ZNVS::ins().initialize(IFLYTOP_NVS_CONFIG_FLASH_SECTOR); - { - static I_StepMotorCtrlModule::flash_config_t cfg; - StepMotorCtrlModule::create_default_cfg(cfg); - ZNVS::ins().alloc_config(MOTOR_CFG_FLASH_MARK, (uint8_t*)&cfg, sizeof(cfg)); - } - ZNVS::ins().init_config(); - auto zcanCmder_cfg = g_zcanCmder.createCFG(BOARD_ID); - g_zcanCmder.init(zcanCmder_cfg); - g_ziProtocolParser.initialize(&g_zcanCmder); - - initmodule(); - while (true) { - OSDefaultSchduler::getInstance()->loop(); - g_zcanCmder.loop(); - } -}; + ZCancmderSubboardIniter::cfg_t cfg = // + { + .deviceId = getDeviceId(), + .input_gpio = + { + {.pin = PD0, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true}, + {.pin = PD1, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true}, + {.pin = PD2, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true}, + {.pin = PD3, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true}, + {.pin = PD4, .mode = ZGPIO::kMode_nopull, .irqtype = ZGPIO::kIRQ_noIrq, .mirror = true}, + }, + .output_gpio = {}, + }; + initer.init(&cfg); + initsubmodule(); + initer.loop(); +} diff --git a/usrc/project_configs.h b/usrc/project_configs.h index 14d5659..8552b0a 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -1,55 +1,19 @@ #pragma once +#define PC_VERSION "v1.0.1" +#define PC_MANUFACTURER "http://www.iflytop.com/" +#define PC_PROJECT_NAME "a8000_inlet_and_outlet_module" +#define PC_IFLYTOP_ENABLE_OS 1 -#define VERSION "v1.0.0" -#define MANUFACTURER "http://www.iflytop.com/" -#define PROJECT_NAME "a8000_inlet_and_outlet_module" -#define DEBUG_UART huart1 -#define DEBUG_LIGHT_GPIO PE2 +#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 PE2 -#define DELAY_US_TIMER htim6 // US延时定时器 -#define TIM_IRQ_SCHEDULER_TIMER htim7 // 中断定时器中断调度器 -#define IFLTYOP_ZTICKET_TIMER TIM11 // 系统ticket定时器 +#define PC_SYS_DELAY_US_TIMER htim6 // US延时定时器 +#define PC_SYS_ZTICKET_TIMER TIM11 // 系统ticket定时器 +#define PC_SYS_TIM_IRQ_SCHEDULER_TIMER htim7 // 中断定时器中断调度器 -#define IFLYTOP_ENABLE_OS 1 -#define IFLYTOP_PREEMPTPRIORITY_DEFAULT 5 +#define PC_IRQ_PREEMPTPRIORITY_DEFAULT 5 -/****************************************FLASH***************************************/ -#define IFLYTOP_NVS_CONFIG_FLASH_SECTOR 8 -/*********************************************************************************/ - -// MOTOR1 -#define TMC_MOTOR_SPI hspi1 -// JL_CSN -#define MOTOR0_CSN PA4 -#define MOTOR0_ENN PE3 -#define MOTOR0_SPI_MODE_SELECT PinNull -#define MOTOR0_REFL PD13 -#define MOTOR0_REFR PD14 -// SL_CSN -#define MOTOR1_CSN PA8 -#define MOTOR1_ENN PE6 -#define MOTOR1_SPI_MODE_SELECT PinNull -#define MOTOR1_REFL PD11 -#define MOTOR1_REFR PD12 -// CL_CSN -#define MOTOR2_CSN PA15 -#define MOTOR2_ENN PE7 -#define MOTOR2_SPI_MODE_SELECT PinNull -#define MOTOR2_REFL PD9 -#define MOTOR2_REFR PD10 - -#define MOTOR_CFG_FLASH_MARK "MOTOR_CFG_FLASH_MARK" - -#define BOARD_ID 5 - -#if 0 -#define STEPPER_MOTOR_ZERO_SENSOR SENSOR_INT0 -#define STEPPER_MOTOR_FORWARD_SENSOR SENSOR_INT8 -#define STEPPER_MOTOR_BACKWARD_SENSOR SENSOR_INT9 -#endif - -#define ID0_IO PD11 -#define ID1_IO PD12 -#define ID2_IO PD13 -#define ID3_IO PD14 -#define ID4_IO PD15 +#define PC_NVS_ENABLE 1 +#define PC_NVS_CONFIG_FLASH_SECTOR 8