| /** | |
| ****************************************************************************** | |
| * File Name : SPI.c | |
| * Description : This file provides code for the configuration | |
| * of the SPI instances. | |
| ****************************************************************************** | |
| * @attention | |
| * | |
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |
| * All rights reserved.</center></h2> | |
| * | |
| * This software component is licensed by ST under Ultimate Liberty license | |
| * SLA0044, the "License"; You may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at: | |
| * www.st.com/SLA0044 | |
| * | |
| ****************************************************************************** | |
| */ | |
| /* Includes ------------------------------------------------------------------*/ | |
| #include "spi.h" | |
| #include "gpio_defs.h" | |
| /* USER CODE BEGIN 0 */ | |
| /* USER CODE END 0 */ | |
| SPI_HandleTypeDef hspi1; | |
| SPI_HandleTypeDef hspi4; | |
| /* SPI1 init function */ | |
| void MX_SPI1_Init(void) | |
| { | |
| hspi1.Instance = SPI1; | |
| hspi1.Init.Mode = SPI_MODE_MASTER; | |
| hspi1.Init.Direction = SPI_DIRECTION_2LINES; | |
| hspi1.Init.DataSize = SPI_DATASIZE_8BIT; | |
| hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; | |
| hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; | |
| hspi1.Init.NSS = SPI_NSS_SOFT; | |
| hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; | |
| hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; | |
| hspi1.Init.TIMode = SPI_TIMODE_DISABLE; | |
| hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; | |
| hspi1.Init.CRCPolynomial = 0x0; | |
| hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; | |
| hspi1.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; | |
| hspi1.Init.FifoThreshold = SPI_FIFO_THRESHOLD_16DATA; | |
| hspi1.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; | |
| hspi1.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; | |
| hspi1.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE; | |
| hspi1.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE; | |
| hspi1.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE; | |
| hspi1.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE; | |
| hspi1.Init.IOSwap = SPI_IO_SWAP_DISABLE; | |
| if (HAL_SPI_Init(&hspi1) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| } | |
| /* SPI4 init function */ | |
| void MX_SPI4_Init(void) | |
| { | |
| hspi4.Instance = SPI4; | |
| hspi4.Init.Mode = SPI_MODE_MASTER; | |
| hspi4.Init.Direction = SPI_DIRECTION_2LINES_TXONLY; | |
| hspi4.Init.DataSize = SPI_DATASIZE_8BIT; | |
| hspi4.Init.CLKPolarity = SPI_POLARITY_LOW; | |
| hspi4.Init.CLKPhase = SPI_PHASE_1EDGE; | |
| hspi4.Init.NSS = SPI_NSS_SOFT; | |
| hspi4.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; | |
| hspi4.Init.FirstBit = SPI_FIRSTBIT_MSB; | |
| hspi4.Init.TIMode = SPI_TIMODE_DISABLE; | |
| hspi4.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; | |
| hspi4.Init.CRCPolynomial = 0x0; | |
| hspi4.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; | |
| hspi4.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; | |
| hspi4.Init.FifoThreshold = SPI_FIFO_THRESHOLD_02DATA; | |
| hspi4.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; | |
| hspi4.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; | |
| hspi4.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE; | |
| hspi4.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE; | |
| hspi4.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE; | |
| hspi4.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE; | |
| hspi4.Init.IOSwap = SPI_IO_SWAP_DISABLE; | |
| if (HAL_SPI_Init(&hspi4) != HAL_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| } | |
| void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) | |
| { | |
| if(spiHandle->Instance==SPI1) | |
| { | |
| /* USER CODE BEGIN SPI1_MspInit 0 */ | |
| /* USER CODE END SPI1_MspInit 0 */ | |
| /* SPI1 clock enable */ | |
| __HAL_RCC_SPI1_CLK_ENABLE(); | |
| /* USER CODE BEGIN SPI1_MspInit 1 */ | |
| /* USER CODE END SPI1_MspInit 1 */ | |
| } | |
| else if(spiHandle->Instance==SPI4) | |
| { | |
| /* USER CODE BEGIN SPI4_MspInit 0 */ | |
| /* USER CODE END SPI4_MspInit 0 */ | |
| /* SPI4 clock enable */ | |
| __HAL_RCC_SPI4_CLK_ENABLE(); | |
| /* USER CODE BEGIN SPI4_MspInit 1 */ | |
| /* USER CODE END SPI4_MspInit 1 */ | |
| } | |
| } | |
| void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) | |
| { | |
| if(spiHandle->Instance==SPI1) | |
| { | |
| /* USER CODE BEGIN SPI1_MspDeInit 0 */ | |
| /* USER CODE END SPI1_MspDeInit 0 */ | |
| /* Peripheral clock disable */ | |
| __HAL_RCC_SPI1_CLK_DISABLE(); | |
| /**SPI1 GPIO Configuration | |
| PA7 ------> SPI1_MOSI | |
| PB3 (JTDO/TRACESWO) ------> SPI1_SCK | |
| PB4 (NJTRST) ------> SPI1_MISO | |
| */ | |
| HAL_GPIO_DeInit(SD_SPI1_MOSI_GPIO_Port, SD_SPI1_MOSI_Pin); | |
| HAL_GPIO_DeInit(GPIOB, SD_SPI1_SCK_Pin|SD_SPI1_MISO_Pin); | |
| /* USER CODE BEGIN SPI1_MspDeInit 1 */ | |
| /* USER CODE END SPI1_MspDeInit 1 */ | |
| } | |
| else if(spiHandle->Instance==SPI4) | |
| { | |
| /* USER CODE BEGIN SPI4_MspDeInit 0 */ | |
| /* USER CODE END SPI4_MspDeInit 0 */ | |
| /* Peripheral clock disable */ | |
| __HAL_RCC_SPI4_CLK_DISABLE(); | |
| /**SPI4 GPIO Configuration | |
| PE2 ------> SPI4_SCK | |
| PE6 ------> SPI4_MOSI | |
| */ | |
| HAL_GPIO_DeInit(GPIOE, LCD_SPI4_SCK_Pin|LCD_SPI4_MOSI_Pin); | |
| /* USER CODE BEGIN SPI4_MspDeInit 1 */ | |
| /* USER CODE END SPI4_MspDeInit 1 */ | |
| } | |
| } | |
| /* USER CODE BEGIN 1 */ | |
| /* USER CODE END 1 */ | |
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |