From 7411360ffb0ce299bd95288fbf833cb65b9156f4 Mon Sep 17 00:00:00 2001 From: sfaguet <sfaguet@centumadetel.com> Date: Sat, 20 Feb 2021 20:09:19 -0500 Subject: [PATCH] Correction pour que la communication avec JESTON fonctionne --- Inc/main.h | 10 ++++--- MDK-ARM/RobotMaster_allRobots.uvoptx | 6 ++-- MDK-ARM/RobotMaster_allRobots.uvprojx | 2 +- RobotMaster_allRobots.ioc | 40 ++++++++++++++------------- Src/BoardA_handle.c | 3 +- Src/jetson.c | 9 ++---- Src/main.c | 7 ++--- Src/stm32f4xx_it.c | 4 +-- Src/usart.c | 14 +++++----- 9 files changed, 48 insertions(+), 47 deletions(-) diff --git a/Inc/main.h b/Inc/main.h index b42d2e3..6a0f8b4 100644 --- a/Inc/main.h +++ b/Inc/main.h @@ -35,6 +35,8 @@ extern "C" { #include "BoardA_handle.h" #include "traitement.h" #include "robot_configuration.h" +#include "pilotes.h" +#include "canon.h" /* USER CODE END Includes */ @@ -95,10 +97,6 @@ void Error_Handler(void); #define BOARD_LED_B_GPIO_Port GPIOG #define BOARD_LED_C_Pin GPIO_PIN_6 #define BOARD_LED_C_GPIO_Port GPIOG -#define JETSON_TX_Pin GPIO_PIN_7 -#define JETSON_TX_GPIO_Port GPIOF -#define JETSON_RX_Pin GPIO_PIN_6 -#define JETSON_RX_GPIO_Port GPIOF #define BOARD_LED_D_Pin GPIO_PIN_5 #define BOARD_LED_D_GPIO_Port GPIOG #define BOARD_LED_E_Pin GPIO_PIN_4 @@ -111,12 +109,16 @@ void Error_Handler(void); #define BOARD_LED_H_GPIO_Port GPIOG #define OLED_Analog_Pin GPIO_PIN_6 #define OLED_Analog_GPIO_Port GPIOA +#define JETSON_TX_Pin GPIO_PIN_8 +#define JETSON_TX_GPIO_Port GPIOE #define BOARD_LED_RED_Pin GPIO_PIN_11 #define BOARD_LED_RED_GPIO_Port GPIOE #define OLED_MOSI_Pin GPIO_PIN_7 #define OLED_MOSI_GPIO_Port GPIOA #define BOARD_LED_GREEN_Pin GPIO_PIN_14 #define BOARD_LED_GREEN_GPIO_Port GPIOF +#define JETSON_RX_Pin GPIO_PIN_7 +#define JETSON_RX_GPIO_Port GPIOE #define OLED_RST_Pin GPIO_PIN_10 #define OLED_RST_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ diff --git a/MDK-ARM/RobotMaster_allRobots.uvoptx b/MDK-ARM/RobotMaster_allRobots.uvoptx index 04ac741..4fb4b27 100644 --- a/MDK-ARM/RobotMaster_allRobots.uvoptx +++ b/MDK-ARM/RobotMaster_allRobots.uvoptx @@ -525,7 +525,7 @@ <Group> <GroupName>Application/User</GroupName> - <tvExp>0</tvExp> + <tvExp>1</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> @@ -693,7 +693,7 @@ <Group> <GroupName>Devices</GroupName> - <tvExp>0</tvExp> + <tvExp>1</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> @@ -725,7 +725,7 @@ <GroupNumber>7</GroupNumber> <FileNumber>37</FileNumber> <FileType>1</FileType> - <tvExp>1</tvExp> + <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <bDave2>0</bDave2> <PathWithFileName>..\Src\receiver_RadioController.c</PathWithFileName> diff --git a/MDK-ARM/RobotMaster_allRobots.uvprojx b/MDK-ARM/RobotMaster_allRobots.uvprojx index 0f71675..d819dc3 100644 --- a/MDK-ARM/RobotMaster_allRobots.uvprojx +++ b/MDK-ARM/RobotMaster_allRobots.uvprojx @@ -339,7 +339,7 @@ <MiscControls></MiscControls> <Define>USE_HAL_DRIVER,STM32F427xx,USE_HAL_DRIVER,STM32F427xx</Define> <Undefine></Undefine> - <IncludePath>../Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/CMSIS/Include; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy</IncludePath> + <IncludePath>../Inc; ../Drivers/STM32F4xx_HAL_Driver/Inc; ../Drivers/CMSIS/Device/ST/STM32F4xx/Include; ../Drivers/CMSIS/Include; ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy</IncludePath> </VariousControls> </Cads> <Aads> diff --git a/RobotMaster_allRobots.ioc b/RobotMaster_allRobots.ioc index 4d76fa0..fdad20e 100644 --- a/RobotMaster_allRobots.ioc +++ b/RobotMaster_allRobots.ioc @@ -1,5 +1,4 @@ #MicroXplorer Configuration settings - do not modify -PF7.GPIOParameters=GPIO_Label Dma.USART6_TX.3.MemInc=DMA_MINC_ENABLE Dma.USART6_TX.3.PeriphInc=DMA_PINC_DISABLE PE11.GPIOParameters=GPIO_Label @@ -22,13 +21,11 @@ SH.S_TIM1_CH1.ConfNb=1 USART1.IPParameters=VirtualMode,BaudRate,Parity,Mode PG2.GPIOParameters=GPIO_Label PinOutPanel.RotationAngle=0 -PF6.GPIO_Label=JETSON_RX RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK Dma.UART7_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false Dma.UART7_TX.6.Direction=DMA_MEMORY_TO_PERIPH PH5.Signal=GPIO_Output -PF7.Signal=UART7_TX NVIC.CAN1_TX_IRQn=true\:0\:0\:false\:false\:true\:true\:true SPI1.Direction=SPI_DIRECTION_1LINE RCC.APB2TimFreq_Value=168000000 @@ -104,10 +101,12 @@ NVIC.DMA2_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true RCC.APB1CLKDivider=RCC_HCLK_DIV4 UART8.VirtualMode=Asynchronous Dma.UART8_TX.4.Direction=DMA_MEMORY_TO_PERIPH +PE8.Mode=Asynchronous Dma.UART7_RX.5.Instance=DMA1_Stream3 Dma.USART6_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode PH4.Locked=true Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY +PE8.GPIO_Label=JETSON_TX PA9.Signal=S_TIM1_CH2 Dma.UART7_RX.5.FIFOMode=DMA_FIFOMODE_DISABLE TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 @@ -125,30 +124,32 @@ PD1.Mode=CAN_Activate Dma.UART8_TX.4.PeriphInc=DMA_PINC_DISABLE USART1.Mode=MODE_TX_RX Mcu.Pin35=VP_SYS_VS_Systick +PE8.Signal=UART7_TX SPI1.Mode=SPI_MODE_MASTER PG7.GPIO_Label=BOARD_LED_B Dma.UART8_TX.4.FIFOMode=DMA_FIFOMODE_DISABLE -Mcu.Pin30=PA6 +Mcu.Pin30=PE11 RCC.EthernetFreq_Value=168000000 -Mcu.Pin33=PF14 +Mcu.Pin33=PE7 Dma.UART7_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode Mcu.Pin34=PB10 -Mcu.Pin31=PE11 -Mcu.Pin32=PA7 +Mcu.Pin31=PA7 +Mcu.Pin32=PF14 NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +PE7.Locked=true PA13.Mode=Serial_Wire PG14.GPIO_Label=RefereeSystem_Tx ProjectManager.FreePins=false -Mcu.Pin26=PG4 -Mcu.Pin27=PG3 +Mcu.Pin26=PG2 +Mcu.Pin27=PG1 RCC.RTCHSEDivFreq_Value=6000000 -Mcu.Pin24=PF6 +Mcu.Pin24=PG4 ProjectManager.UnderRoot=false -Mcu.Pin25=PG5 -Mcu.Pin28=PG2 -Mcu.Pin29=PG1 +Mcu.Pin25=PG3 +Mcu.Pin28=PA6 +Mcu.Pin29=PE8 Mcu.Pin22=PG6 -Mcu.Pin23=PF7 +Mcu.Pin23=PG5 Mcu.Pin20=PH5 ADC1.master=1 Mcu.Pin21=PG7 @@ -168,7 +169,6 @@ Mcu.Pin13=PH2 UART7.IPParameters=VirtualMode,BaudRate Mcu.Pin14=PA8 Mcu.Pin19=PG8 -PF6.Mode=Asynchronous UART7.BaudRate=230400 ProjectManager.ComputerToolchain=false Mcu.Pin17=PH1/OSC_OUT @@ -254,9 +254,9 @@ Mcu.IP10=USART1 NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true Mcu.IP11=USART6 Dma.USART6_RX.2.Priority=DMA_PRIORITY_LOW -PF7.GPIO_Label=JETSON_TX RCC.VCOInputFreq_Value=2000000 PA14.Mode=Serial_Wire +PE8.Locked=true File.Version=6 PB3.GPIOParameters=GPIO_Label PH3.GPIOParameters=GPIO_Label @@ -293,6 +293,7 @@ Dma.USART1_RX.0.Mode=DMA_CIRCULAR Dma.Request5=UART7_RX Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW NVIC.DMA1_Stream0_IRQn=true\:0\:0\:false\:false\:true\:false\:true +PE7.Signal=UART7_RX Dma.Request0=USART1_RX SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64 Dma.USART1_RX.0.Instance=DMA2_Stream2 @@ -302,6 +303,7 @@ Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH PB3.GPIO_Label=OLED_SCK RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE Dma.USART1_TX.1.Instance=DMA2_Stream7 +PE8.GPIOParameters=GPIO_Label PG7.Locked=true PG7.Signal=GPIO_Output PA7.Mode=Simplex_Bidirectional_Master @@ -326,15 +328,14 @@ NVIC.USART6_IRQn=true\:0\:0\:false\:false\:true\:true\:true PB9.GPIOParameters=GPIO_Label PG8.GPIO_Label=BOARD_LED_A PA13.Signal=SYS_JTMS-SWDIO -PF7.Mode=Asynchronous Dma.UART7_RX.5.Mode=DMA_CIRCULAR SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 PH4.Signal=GPIO_Output CAN1.BS2=CAN_BS2_4TQ -PF6.Signal=UART7_RX CAN1.BS1=CAN_BS1_10TQ ProjectManager.TargetToolchain=MDK-ARM V5.27 PB10.GPIO_Label=OLED_RST +PE7.GPIOParameters=GPIO_Label Dma.USART6_RX.2.MemInc=DMA_MINC_ENABLE PB7.GPIOParameters=GPIO_Label USART1.Parity=PARITY_EVEN @@ -374,6 +375,7 @@ ProjectManager.AskForMigrate=true PE0.Signal=UART8_RX Mcu.Name=STM32F427I(G-I)Hx PD0.Mode=CAN_Activate +PE7.GPIO_Label=JETSON_RX Mcu.IP8=UART7 Mcu.IP9=UART8 Dma.UART8_TX.4.Mode=DMA_NORMAL @@ -383,6 +385,7 @@ ProjectManager.CoupleFile=true RCC.48MHZClocksFreq_Value=84000000 PB3.Signal=SPI1_SCK RCC.SYSCLKFreq_VALUE=168000000 +PE7.Mode=Asynchronous PA7.GPIO_Label=OLED_MOSI KeepUserPlacement=false Dma.UART8_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE @@ -390,7 +393,6 @@ PB7.Mode=Asynchronous Dma.UART7_TX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode PA14.Signal=SYS_JTCK-SWCLK Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE -PF6.GPIOParameters=GPIO_Label Dma.USART6_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE Dma.USART6_TX.3.Instance=DMA2_Stream6 RCC.HSI_VALUE=16000000 diff --git a/Src/BoardA_handle.c b/Src/BoardA_handle.c index 22e5566..4d07305 100644 --- a/Src/BoardA_handle.c +++ b/Src/BoardA_handle.c @@ -23,6 +23,7 @@ uint32_t signOfLife_CAN1_tick = 0; /* On récupère les variables exterieurs pour affichage de debug */ extern motor_t motors[MAX_MOTORS]; extern receiver_RadioController_t receiver_RadioController; +extern jetson_t jetson; /* Gère les signes de vie, LED RED: Si le programme tourne */ void signOfLife(){ @@ -105,7 +106,7 @@ void uart_debug(){ return; } tickstart = HAL_GetTick(); - snprintf(buff2, 1000, "Mouse Z %i\r\n", receiver_RadioController.data.mouse.z); + snprintf(buff2, 1000, "%c,teta=%x,phi=%x,d=%x\r\n", jetson.robot_target_coordinates.target_located, jetson.robot_target_coordinates.teta_target_location, jetson.robot_target_coordinates.phi_target_location, jetson.robot_target_coordinates.d_target_location); HAL_UART_Transmit_DMA(&huart8, (uint8_t*)buff2, strlen(buff2)); /* uart_debug_command("[2J"); //Clear entire screen diff --git a/Src/jetson.c b/Src/jetson.c index 9ac1b2d..b6f1d5a 100644 --- a/Src/jetson.c +++ b/Src/jetson.c @@ -10,22 +10,22 @@ jetson_t jetson; /* On crée le buffer de récupération de données du referee System */ -uint8_t uart7_rx_buff[UART6_RX_BUFFLEN]; +uint8_t uart7_rx_buff[UART7_RX_BUFFLEN]; /* On récupère les variables exterieurs */ extern uint32_t signOfLife_jetson_tick; /* fonction appelée lorsqu'on recoit une unformation du récepteur */ void jetson_callback_handler(int8_t lenght){ + /* frame_header (5-byte) */ uint8_t SOF = uart7_rx_buff[0]; uint16_t cmd_id = (uart7_rx_buff[1] << 8 | uart7_rx_buff[2]); uint16_t data_length = uart7_rx_buff[3]; - if(SOF != 0xA5) return; + if(SOF != 0xFC) return; signOfLife_jetson_tick = HAL_GetTick(); - /* data (n-byte) */ switch(cmd_id){ case 0x0002: @@ -36,9 +36,6 @@ void jetson_callback_handler(int8_t lenght){ break; default: return; } - - /* frame_tail (2-byte, CRC16, whole package check) */ - //uint16_t crc16 = (uart6_rx_buff[7+data_length] << 8 | uart6_rx_buff[7+data_length+1]); } /** diff --git a/Src/main.c b/Src/main.c index 57de24d..a3958c3 100644 --- a/Src/main.c +++ b/Src/main.c @@ -26,12 +26,10 @@ #include "tim.h" #include "usart.h" #include "gpio.h" -#include "pilotes.h" -#include "canon.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ -#include "main.h" + /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -114,6 +112,7 @@ int main(void) robotInit(5); //Initialise le robot comme un standard, l'objectif c'est que l'initialisation de fasse par le referee system extern motor_t motors[MAX_MOTORS]; extern pilote_t pilote; + extern jetson_t jetson; piloteInit(PILOTE_ANTONIN); /* USER CODE END 2 */ @@ -123,7 +122,7 @@ int main(void) { signOfLife(); //LEDs BLINK //oled_debug(); //Display debug menu on OLED - uart_debug(); //Display debug menu on UART + //uart_debug(); //Display debug menu on UART traitement_1(); //Calcul les consignes des moteurs traitement_shoot(); //Traitement du canon traitement_pids_compute(); //Calcul les commandes des moteurs diff --git a/Src/stm32f4xx_it.c b/Src/stm32f4xx_it.c index d7e88db..7532023 100644 --- a/Src/stm32f4xx_it.c +++ b/Src/stm32f4xx_it.c @@ -420,8 +420,8 @@ void UART7_IRQHandler(void) jetson_callback_handler(UART7_MAX_LEN - dma_data_counter); /* restart dma transmission */ - __HAL_DMA_SET_COUNTER(huart6.hdmarx, UART7_MAX_LEN); - __HAL_DMA_ENABLE(huart6.hdmarx); + __HAL_DMA_SET_COUNTER(huart7.hdmarx, UART7_MAX_LEN); + __HAL_DMA_ENABLE(huart7.hdmarx); } /* USER CODE END UART7_IRQn 0 */ HAL_UART_IRQHandler(&huart7); diff --git a/Src/usart.c b/Src/usart.c index 8cbb0d5..3b3f57f 100644 --- a/Src/usart.c +++ b/Src/usart.c @@ -123,17 +123,17 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) /* UART7 clock enable */ __HAL_RCC_UART7_CLK_ENABLE(); - __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOE_CLK_ENABLE(); /**UART7 GPIO Configuration - PF7 ------> UART7_TX - PF6 ------> UART7_RX + PE8 ------> UART7_TX + PE7 ------> UART7_RX */ GPIO_InitStruct.Pin = JETSON_TX_Pin|JETSON_RX_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF8_UART7; - HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /* UART7 DMA Init */ /* UART7_RX Init */ @@ -370,10 +370,10 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) __HAL_RCC_UART7_CLK_DISABLE(); /**UART7 GPIO Configuration - PF7 ------> UART7_TX - PF6 ------> UART7_RX + PE8 ------> UART7_TX + PE7 ------> UART7_RX */ - HAL_GPIO_DeInit(GPIOF, JETSON_TX_Pin|JETSON_RX_Pin); + HAL_GPIO_DeInit(GPIOE, JETSON_TX_Pin|JETSON_RX_Pin); /* UART7 DMA DeInit */ HAL_DMA_DeInit(uartHandle->hdmarx); -- GitLab