/* * gpio.c * * Created on: Apr 18, 2024 * Author: houssni.slamti */ #include "gpio.h" /** * @brief GPIO Initialization Function * @param None * @retval None */ void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOE, Cmd_Warning_Pin|CmdAlerte_Rouge_Pin|Cmd_EngineOk_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, Cmd_SOC_LED1_RED_Pin|Cmd_SOC_LED2_RED_Pin|T_coupure_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, Cmd_SOC_LED3_RED_Pin|Cmd_SOC_LED4_YELLOW_Pin|Cmd_SOC_LED5_YELLOW_Pin|Cmd_SOC_LED6_YELLOW_Pin |YELLOW_LED_SERVICE_Pin|RED_LED_HEATER_Pin|GREEN_LED_ON_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, Cmd_SOC_LED7_YELLOW_Pin|Cmd_SOC_LED8_GREEN_Pin|Cmd_SOC_LED9_GREEN_Pin|Cmd_SOC_LED10_GREEN_Pin |ORANGE_LED_FAULT_Pin, GPIO_PIN_RESET); /*Configure GPIO pins : Cmd_Warning_Pin CmdAlerte_Rouge_Pin Cmd_EngineOk_Pin */ GPIO_InitStruct.Pin = Cmd_Warning_Pin|CmdAlerte_Rouge_Pin|Cmd_EngineOk_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pins : COM_CMD_SOC_Pin COM_CMD_HEATER_Pin COM_CMD_ON_Pin COM_CMD_OFF_Pin */ GPIO_InitStruct.Pin = COM_CMD_SOC_Pin|COM_CMD_HEATER_Pin|COM_CMD_ON_Pin|COM_CMD_OFF_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); /*Configure GPIO pins : Cmd_SOC_LED1_RED_Pin Cmd_SOC_LED2_RED_Pin T_coupure_Pin */ GPIO_InitStruct.Pin = Cmd_SOC_LED1_RED_Pin|Cmd_SOC_LED2_RED_Pin|T_coupure_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); /*Configure GPIO pins : Cmd_SOC_LED3_RED_Pin Cmd_SOC_LED4_YELLOW_Pin Cmd_SOC_LED5_YELLOW_Pin Cmd_SOC_LED6_YELLOW_Pin YELLOW_LED_SERVICE_Pin RED_LED_HEATER_Pin GREEN_LED_ON_Pin */ GPIO_InitStruct.Pin = Cmd_SOC_LED3_RED_Pin|Cmd_SOC_LED4_YELLOW_Pin|Cmd_SOC_LED5_YELLOW_Pin|Cmd_SOC_LED6_YELLOW_Pin |YELLOW_LED_SERVICE_Pin|RED_LED_HEATER_Pin|GREEN_LED_ON_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /*Configure GPIO pins : Cmd_SOC_LED7_YELLOW_Pin Cmd_SOC_LED8_GREEN_Pin Cmd_SOC_LED9_GREEN_Pin Cmd_SOC_LED10_GREEN_Pin ORANGE_LED_FAULT_Pin */ GPIO_InitStruct.Pin = Cmd_SOC_LED7_YELLOW_Pin|Cmd_SOC_LED8_GREEN_Pin|Cmd_SOC_LED9_GREEN_Pin|Cmd_SOC_LED10_GREEN_Pin |ORANGE_LED_FAULT_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*ADC*/ GPIO_InitStruct.Pin = ADC_GPIO_Pin; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(ADC_GPIO_PORT, &GPIO_InitStruct); /*ARINC GPIO DEFINITION * PD0 -> ARINC_CS : INPUT Chip select, Data is shifted into SI and out of SO when CS is low --> Internal pull-up * PD1 -> ARINC_SCK : INPUT SPI Clock, Data is shifted into or out of the SPI interface using SCK --> Internal pull-down * PD2 -> ARINC_MR : INPUT Master Reset, A positive pulse clears Receive and Transmit data FIFOs and flags --> Internal pull-down * PD3 -> ARINC_SO : OUTPUT SPI interface serial data output * PD4 -> ARINC_SI : INPUT SPI interface serial data input --> Internal pull-down * PD5 -> ARINC_TFLAG : TFLAG OUTPUT Goes high when ARINC 429 Transmit FIFO is empty (CR14=0), or full (CR14=1) * PD6 -> ARINC_RFLAG : OUTPUT Goes high when ARINC 429 Receive FIFO is empty (CR15=0), or full (CR15=1) * */ // // Configuration pour CS (chip select) GPIO_InitStruct.Pin = ARINC_CS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); // // Configuration pour SCK (SPI clock) GPIO_InitStruct.Pin = ARINC_SCK_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); // // // Configuration pour MR (master reset) // GPIO_InitStruct.Pin = ARINC_MR_Pin; // GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // GPIO_InitStruct.Pull = GPIO_PULLDOWN; // GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); // // Configuration pour SO (serial out) GPIO_InitStruct.Pin = ARINC_SO_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); // Configuration pour SI (serial in) GPIO_InitStruct.Pin = ARINC_SI_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); // // Configuration pour TFLAG // GPIO_InitStruct.Pin = ARINC_TFLAG_Pin; // GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // GPIO_InitStruct.Pull = GPIO_NOPULL; // HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); // // // Configuration pour RFLAG // GPIO_InitStruct.Pin = ARINC_RFLAG_Pin; // GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // GPIO_InitStruct.Pull = GPIO_NOPULL; // HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); }