diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h
index dc281f4..80963e8 100644
--- a/Core/Inc/stm32f4xx_it.h
+++ b/Core/Inc/stm32f4xx_it.h
@@ -61,6 +61,7 @@ void CAN1_SCE_IRQHandler(void);
void TIM1_TRG_COM_TIM11_IRQHandler(void);
void USART2_IRQHandler(void);
void USART3_IRQHandler(void);
+void UART4_IRQHandler(void);
void TIM6_DAC_IRQHandler(void);
void TIM7_IRQHandler(void);
void DMA2_Stream2_IRQHandler(void);
diff --git a/Core/Inc/usart.h b/Core/Inc/usart.h
index 4d94598..abe862f 100644
--- a/Core/Inc/usart.h
+++ b/Core/Inc/usart.h
@@ -33,6 +33,8 @@ extern DMA_HandleTypeDef hdma_usart2_rx;
extern DMA_HandleTypeDef hdma_usart2_tx;
/* USER CODE END Includes */
+extern UART_HandleTypeDef huart4;
+
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2;
@@ -43,6 +45,7 @@ extern UART_HandleTypeDef huart3;
/* USER CODE END Private defines */
+void MX_UART4_Init(void);
void MX_USART1_UART_Init(void);
void MX_USART2_UART_Init(void);
void MX_USART3_UART_Init(void);
diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c
index eea319d..35605e9 100644
--- a/Core/Src/gpio.c
+++ b/Core/Src/gpio.c
@@ -69,12 +69,10 @@ void MX_GPIO_Init(void)
/*Configure GPIO pins : PC13 PC14 PC15 PC1
PC2 PC3 PC5 PC6
- PC7 PC8 PC10 PC11
- PC12 */
+ PC7 PC8 PC10 PC12 */
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_1
|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_6
- |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_11
- |GPIO_PIN_12;
+ |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
@@ -85,8 +83,8 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pins : PA0 PA4 PA8 PA15 */
- GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_4|GPIO_PIN_8|GPIO_PIN_15;
+ /*Configure GPIO pins : PA4 PA8 PA15 */
+ GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_8|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 6a3d354..26ceada 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -114,6 +114,7 @@ int main(void)
MX_ADC1_Init();
MX_TIM2_Init();
MX_USART2_UART_Init();
+ MX_UART4_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c
index 63e3aae..b8a9d7f 100644
--- a/Core/Src/stm32f4xx_it.c
+++ b/Core/Src/stm32f4xx_it.c
@@ -63,6 +63,7 @@ extern DMA_HandleTypeDef hdma_usart1_rx;
extern DMA_HandleTypeDef hdma_usart1_tx;
extern DMA_HandleTypeDef hdma_usart2_rx;
extern DMA_HandleTypeDef hdma_usart2_tx;
+extern UART_HandleTypeDef huart4;
extern UART_HandleTypeDef huart2;
extern UART_HandleTypeDef huart3;
extern TIM_HandleTypeDef htim11;
@@ -297,6 +298,20 @@ void USART3_IRQHandler(void)
}
/**
+ * @brief This function handles UART4 global interrupt.
+ */
+void UART4_IRQHandler(void)
+{
+ /* USER CODE BEGIN UART4_IRQn 0 */
+
+ /* USER CODE END UART4_IRQn 0 */
+ HAL_UART_IRQHandler(&huart4);
+ /* USER CODE BEGIN UART4_IRQn 1 */
+
+ /* USER CODE END UART4_IRQn 1 */
+}
+
+/**
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
*/
void TIM6_DAC_IRQHandler(void)
diff --git a/Core/Src/usart.c b/Core/Src/usart.c
index ff5092b..b1ec447 100644
--- a/Core/Src/usart.c
+++ b/Core/Src/usart.c
@@ -24,6 +24,7 @@
/* USER CODE END 0 */
+UART_HandleTypeDef huart4;
UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
UART_HandleTypeDef huart3;
@@ -32,6 +33,34 @@ DMA_HandleTypeDef hdma_usart1_tx;
DMA_HandleTypeDef hdma_usart2_rx;
DMA_HandleTypeDef hdma_usart2_tx;
+/* UART4 init function */
+void MX_UART4_Init(void)
+{
+
+ /* USER CODE BEGIN UART4_Init 0 */
+
+ /* USER CODE END UART4_Init 0 */
+
+ /* USER CODE BEGIN UART4_Init 1 */
+
+ /* USER CODE END UART4_Init 1 */
+ huart4.Instance = UART4;
+ huart4.Init.BaudRate = 115200;
+ huart4.Init.WordLength = UART_WORDLENGTH_8B;
+ huart4.Init.StopBits = UART_STOPBITS_1;
+ huart4.Init.Parity = UART_PARITY_NONE;
+ huart4.Init.Mode = UART_MODE_TX_RX;
+ huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart4.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart4) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN UART4_Init 2 */
+
+ /* USER CODE END UART4_Init 2 */
+
+}
/* USART1 init function */
void MX_USART1_UART_Init(void)
@@ -74,7 +103,7 @@ void MX_USART2_UART_Init(void)
/* USER CODE END USART2_Init 1 */
huart2.Instance = USART2;
- huart2.Init.BaudRate = 115200;
+ huart2.Init.BaudRate = 38400;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
@@ -124,7 +153,42 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(uartHandle->Instance==USART1)
+ if(uartHandle->Instance==UART4)
+ {
+ /* USER CODE BEGIN UART4_MspInit 0 */
+
+ /* USER CODE END UART4_MspInit 0 */
+ /* UART4 clock enable */
+ __HAL_RCC_UART4_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ /**UART4 GPIO Configuration
+ PA0-WKUP ------> UART4_TX
+ PC11 ------> UART4_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_0;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = GPIO_PIN_11;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /* UART4 interrupt Init */
+ HAL_NVIC_SetPriority(UART4_IRQn, 5, 0);
+ HAL_NVIC_EnableIRQ(UART4_IRQn);
+ /* USER CODE BEGIN UART4_MspInit 1 */
+
+ /* USER CODE END UART4_MspInit 1 */
+ }
+ else if(uartHandle->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspInit 0 */
@@ -281,7 +345,29 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{
- if(uartHandle->Instance==USART1)
+ if(uartHandle->Instance==UART4)
+ {
+ /* USER CODE BEGIN UART4_MspDeInit 0 */
+
+ /* USER CODE END UART4_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_UART4_CLK_DISABLE();
+
+ /**UART4 GPIO Configuration
+ PA0-WKUP ------> UART4_TX
+ PC11 ------> UART4_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0);
+
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_11);
+
+ /* UART4 interrupt Deinit */
+ HAL_NVIC_DisableIRQ(UART4_IRQn);
+ /* USER CODE BEGIN UART4_MspDeInit 1 */
+
+ /* USER CODE END UART4_MspDeInit 1 */
+ }
+ else if(uartHandle->Instance==USART1)
{
/* USER CODE BEGIN USART1_MspDeInit 0 */
diff --git a/README.md b/README.md
index fe07e76..e69de29 100644
--- a/README.md
+++ b/README.md
@@ -1,44 +0,0 @@
-ref:https://iflytop1.feishu.cn/wiki/PbUHwG2o6ikWagkmsiqcTFwAnjp
-
-// 电机通道编号
-#define MOTOR_SPI hspi1
-#define TMC5130_MOTOR_NUM 1
-#define MOTOR0_CSN PA4
-#define MOTOR0_ENN PB7
-#define MOTOR1_SPI_MODE_SELECT PB4
-
-#define ID0 PC0
-#define ID1 PC1
-#define ID2 PC2
-#define ID3 PC3
-#define ID4 PC4
-
-// 调试串口zwsd@192.168.1.3:project_boditech_vidas_a8000_v2/a8000_cliptip_module.git
-#define DEBUG_UART huart1
-// 调试指示灯
-#define DEBUG_LIGHT_GPIO PE2
-// 微秒延迟定时器,注意该延时定时器需要按照以下文档进行配置
-// http://192.168.1.3:3000/zwikipedia/iflytop_wikipedia/src/branch/master/doc/stm32cubemx_us_timer.md
-#define DELAY_US_TIMER htim6
-
-// 步进电机
-#define STEPPER_MOTOR_ZERO_SENSOR SENSOR_INT0
-#define STEPPER_MOTOR_FORWARD_SENSOR SENSOR_INT8
-#define STEPPER_MOTOR_BACKWARD_SENSOR SENSOR_INT9
-
-#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
-
----------------------------------------------------
-1. 支持位置限制逻辑
-2. 支持获取当前坐标逻辑
-3. 支持记录当前点作为逻辑点逻辑
-4. 支持flash保存参数逻辑
\ No newline at end of file
diff --git a/a8000_cliptip_module.ioc b/a8000_cliptip_module.ioc
index 50782d4..2397f94 100644
--- a/a8000_cliptip_module.ioc
+++ b/a8000_cliptip_module.ioc
@@ -89,9 +89,10 @@ Mcu.IP12=TIM2
Mcu.IP13=TIM3
Mcu.IP14=TIM6
Mcu.IP15=TIM7
-Mcu.IP16=USART1
-Mcu.IP17=USART2
-Mcu.IP18=USART3
+Mcu.IP16=UART4
+Mcu.IP17=USART1
+Mcu.IP18=USART2
+Mcu.IP19=USART3
Mcu.IP2=CRC
Mcu.IP3=DMA
Mcu.IP4=FREERTOS
@@ -100,45 +101,47 @@ Mcu.IP6=NVIC
Mcu.IP7=RCC
Mcu.IP8=RNG
Mcu.IP9=SPI1
-Mcu.IPNb=19
+Mcu.IPNb=20
Mcu.Name=STM32F407V(E-G)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PH0-OSC_IN
Mcu.Pin1=PH1-OSC_OUT
-Mcu.Pin10=PB0
-Mcu.Pin11=PB1
-Mcu.Pin12=PE9
-Mcu.Pin13=PE13
-Mcu.Pin14=PB10
-Mcu.Pin15=PB11
-Mcu.Pin16=PC9
-Mcu.Pin17=PA9
-Mcu.Pin18=PA10
-Mcu.Pin19=PA11
+Mcu.Pin10=PC4
+Mcu.Pin11=PB0
+Mcu.Pin12=PB1
+Mcu.Pin13=PE9
+Mcu.Pin14=PE13
+Mcu.Pin15=PB10
+Mcu.Pin16=PB11
+Mcu.Pin17=PC9
+Mcu.Pin18=PA9
+Mcu.Pin19=PA10
Mcu.Pin2=PC0
-Mcu.Pin20=PA12
-Mcu.Pin21=PA13
-Mcu.Pin22=PA14
-Mcu.Pin23=PD5
-Mcu.Pin24=PD6
-Mcu.Pin25=PB6
-Mcu.Pin26=PB7
-Mcu.Pin27=VP_CRC_VS_CRC
-Mcu.Pin28=VP_FREERTOS_VS_CMSIS_V1
-Mcu.Pin29=VP_RNG_VS_RNG
-Mcu.Pin3=PA1
-Mcu.Pin30=VP_SYS_VS_tim11
-Mcu.Pin31=VP_TIM1_VS_ClockSourceINT
-Mcu.Pin32=VP_TIM3_VS_ClockSourceINT
-Mcu.Pin33=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin34=VP_TIM7_VS_ClockSourceINT
-Mcu.Pin4=PA2
-Mcu.Pin5=PA3
-Mcu.Pin6=PA5
-Mcu.Pin7=PA6
-Mcu.Pin8=PA7
-Mcu.Pin9=PC4
-Mcu.PinsNb=35
+Mcu.Pin20=PA11
+Mcu.Pin21=PA12
+Mcu.Pin22=PA13
+Mcu.Pin23=PA14
+Mcu.Pin24=PC11
+Mcu.Pin25=PD5
+Mcu.Pin26=PD6
+Mcu.Pin27=PB6
+Mcu.Pin28=PB7
+Mcu.Pin29=VP_CRC_VS_CRC
+Mcu.Pin3=PA0-WKUP
+Mcu.Pin30=VP_FREERTOS_VS_CMSIS_V1
+Mcu.Pin31=VP_RNG_VS_RNG
+Mcu.Pin32=VP_SYS_VS_tim11
+Mcu.Pin33=VP_TIM1_VS_ClockSourceINT
+Mcu.Pin34=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin35=VP_TIM6_VS_ClockSourceINT
+Mcu.Pin36=VP_TIM7_VS_ClockSourceINT
+Mcu.Pin4=PA1
+Mcu.Pin5=PA2
+Mcu.Pin6=PA3
+Mcu.Pin7=PA5
+Mcu.Pin8=PA6
+Mcu.Pin9=PA7
+Mcu.PinsNb=37
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407VETx
@@ -170,9 +173,12 @@ 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.UART4_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
+PA0-WKUP.Mode=Asynchronous
+PA0-WKUP.Signal=UART4_TX
PA1.Locked=true
PA1.Signal=S_TIM2_CH2
PA10.Mode=Asynchronous
@@ -214,6 +220,8 @@ PB7.Mode=I2C
PB7.Signal=I2C1_SDA
PC0.Locked=true
PC0.Signal=GPXTI0
+PC11.Mode=Asynchronous
+PC11.Signal=UART4_RX
PC4.Locked=true
PC4.Signal=GPXTI4
PC9.Locked=true
@@ -342,10 +350,13 @@ TIM6.IPParameters=Prescaler
TIM6.Prescaler=71
TIM7.IPParameters=Prescaler
TIM7.Prescaler=81
+UART4.IPParameters=VirtualMode
+UART4.VirtualMode=Asynchronous
USART1.BaudRate=961200
USART1.IPParameters=VirtualMode,BaudRate
USART1.VirtualMode=VM_ASYNC
-USART2.IPParameters=VirtualMode
+USART2.BaudRate=9600
+USART2.IPParameters=VirtualMode,BaudRate
USART2.VirtualMode=VM_ASYNC
USART3.BaudRate=9600
USART3.IPParameters=VirtualMode,BaudRate
diff --git a/a8000_cliptip_module.launch b/a8000_cliptip_module.launch
index 40be9f4..558eaa2 100644
--- a/a8000_cliptip_module.launch
+++ b/a8000_cliptip_module.launch
@@ -52,7 +52,7 @@
-
+
diff --git a/sdk b/sdk
index fbe10ee..2835695 160000
--- a/sdk
+++ b/sdk
@@ -1 +1 @@
-Subproject commit fbe10eeb6c72a4419f1e05c745bca2b7518e54e8
+Subproject commit 283569575d2fdfa9a9719bbcfba1d874d52aff8f
diff --git a/usrc/board.h b/usrc/board.h
index ae0d35b..9f7093b 100644
--- a/usrc/board.h
+++ b/usrc/board.h
@@ -9,4 +9,3 @@
#define MOTOR_CFG_FLASH_MARK "MOTOR_CFG_FLASH_MARK"
-#define BOARD_ID 2
diff --git a/usrc/main.cpp b/usrc/main.cpp
index a11a563..56430e0 100644
--- a/usrc/main.cpp
+++ b/usrc/main.cpp
@@ -52,20 +52,20 @@ static void initsubmodule() {
g_motor.setIHOLD_IRUN(0, 8, 10);
static ZGPIO input[10];
- input[0].initAsInput(PD1 /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
- input[1].initAsInput(PD2 /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
+ input[0].initAsInput(PD2 /*REFL*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
+ input[1].initAsInput(PD1 /*REFR*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
input[2].initAsInput(PD3 /*DIAG0*/, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, true);
input[3].initAsInput(PD4 /*DIAG1*/, 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 = 80;
smcm_cfg.base_param.distance_scale_denominator = 1;
smcm_cfg.base_param.ihold = 1;
smcm_cfg.base_param.irun = 8;
- smcm_cfg.base_param.x_shaft = true;
- smcm_cfg.base_param.maxspeed = 300;
- smcm_cfg.base_param.run_to_zero_speed = 50;
+ smcm_cfg.base_param.x_shaft = false;
+ smcm_cfg.base_param.maxspeed = 500;
+ smcm_cfg.base_param.run_to_zero_speed = 100;
smcm_cfg.base_param.max_x = 0;
smcm_cfg.base_param.min_x = 0;
@@ -76,7 +76,7 @@ static void initsubmodule() {
{
static PipetteModule g_pipetteModule;
PipetteModule::config_t cfg = {
- .limit_ul = 100,
+ .limit_ul = 30,
};
PipetteModule::hardward_config_t hardwarecfg = {
@@ -92,7 +92,7 @@ static void initsubmodule() {
//
static M3078CodeScanner codescanner;
static M3078CodeScanner::hardware_config_t cfg = {
- .uart = &huart2,
+ .uart = &huart4,
.hdma_rx = nullptr,
.hdma_tx = nullptr,