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