Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
spi.cpp
00001 void Error_Handler(){}; 00002 /** 00003 ****************************************************************************** 00004 * File Name : SPI.c 00005 * Description : This file provides code for the configuration 00006 * of the SPI instances. 00007 ****************************************************************************** 00008 * @attention 00009 * 00010 * <h2><center>© Copyright (c) 2020 STMicroelectronics. 00011 * All rights reserved.</center></h2> 00012 * 00013 * This software component is licensed by ST under Ultimate Liberty license 00014 * SLA0044, the "License"; You may not use this file except in compliance with 00015 * the License. You may obtain a copy of the License at: 00016 * www.st.com/SLA0044 00017 * 00018 ****************************************************************************** 00019 */ 00020 00021 /* Includes ------------------------------------------------------------------*/ 00022 #include "spi.h" 00023 00024 /* USER CODE BEGIN 0 */ 00025 00026 /* USER CODE END 0 */ 00027 00028 SPI_HandleTypeDef hspi1; 00029 DMA_HandleTypeDef hdma_spi1_rx; 00030 DMA_HandleTypeDef hdma_spi1_tx; 00031 00032 /* SPI1 init function */ 00033 void MX_SPI1_Init(void) 00034 { 00035 00036 hspi1.Instance = SPI1; 00037 hspi1.Init.Mode = SPI_MODE_MASTER; 00038 hspi1.Init.Direction = SPI_DIRECTION_2LINES; 00039 hspi1.Init.DataSize = SPI_DATASIZE_8BIT; 00040 hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; 00041 hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; 00042 hspi1.Init.NSS = SPI_NSS_SOFT; 00043 hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128; 00044 hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; 00045 hspi1.Init.TIMode = SPI_TIMODE_DISABLE; 00046 hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; 00047 hspi1.Init.CRCPolynomial = 0x0; 00048 hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; 00049 hspi1.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; 00050 hspi1.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA; 00051 hspi1.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; 00052 hspi1.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN; 00053 hspi1.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE; 00054 hspi1.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE; 00055 hspi1.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE; 00056 hspi1.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE; 00057 hspi1.Init.IOSwap = SPI_IO_SWAP_DISABLE; 00058 if (HAL_SPI_Init(&hspi1) != HAL_OK) 00059 { 00060 Error_Handler(); 00061 } 00062 00063 } 00064 00065 void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) 00066 { 00067 00068 GPIO_InitTypeDef GPIO_InitStruct = {0}; 00069 if(spiHandle->Instance==SPI1) 00070 { 00071 /* USER CODE BEGIN SPI1_MspInit 0 */ 00072 00073 /* USER CODE END SPI1_MspInit 0 */ 00074 /* SPI1 clock enable */ 00075 __HAL_RCC_SPI1_CLK_ENABLE(); 00076 00077 __HAL_RCC_GPIOA_CLK_ENABLE(); 00078 __HAL_RCC_GPIOB_CLK_ENABLE(); 00079 /**SPI1 GPIO Configuration 00080 PA5 ------> SPI1_SCK 00081 PA6 ------> SPI1_MISO 00082 PB5 ------> SPI1_MOSI 00083 */ 00084 GPIO_InitStruct.Pin = GPIO_PIN_5; 00085 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 00086 GPIO_InitStruct.Pull = GPIO_PULLUP; 00087 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 00088 GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; 00089 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 00090 00091 GPIO_InitStruct.Pin = GPIO_PIN_6; 00092 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 00093 GPIO_InitStruct.Pull = GPIO_NOPULL; 00094 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 00095 GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; 00096 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 00097 00098 GPIO_InitStruct.Pin = GPIO_PIN_5; 00099 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 00100 GPIO_InitStruct.Pull = GPIO_NOPULL; 00101 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; 00102 GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; 00103 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); 00104 00105 /* SPI1 DMA Init */ 00106 /* SPI1_RX Init */ 00107 hdma_spi1_rx.Instance = DMA1_Stream0; 00108 hdma_spi1_rx.Init.Request = DMA_REQUEST_SPI1_RX; 00109 hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; 00110 hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE; 00111 hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE; 00112 hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 00113 hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 00114 hdma_spi1_rx.Init.Mode = DMA_NORMAL; 00115 hdma_spi1_rx.Init.Priority = DMA_PRIORITY_HIGH; 00116 hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; 00117 if (HAL_DMA_Init(&hdma_spi1_rx) != HAL_OK) 00118 { 00119 Error_Handler(); 00120 } 00121 00122 __HAL_LINKDMA(spiHandle,hdmarx,hdma_spi1_rx); 00123 00124 /* SPI1_TX Init */ 00125 hdma_spi1_tx.Instance = DMA1_Stream1; 00126 hdma_spi1_tx.Init.Request = DMA_REQUEST_SPI1_TX; 00127 hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; 00128 hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE; 00129 hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE; 00130 hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; 00131 hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; 00132 hdma_spi1_tx.Init.Mode = DMA_NORMAL; 00133 hdma_spi1_tx.Init.Priority = DMA_PRIORITY_HIGH; 00134 hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; 00135 if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK) 00136 { 00137 Error_Handler(); 00138 } 00139 00140 __HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx); 00141 00142 /* SPI1 interrupt Init */ 00143 HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0); 00144 HAL_NVIC_EnableIRQ(SPI1_IRQn); 00145 /* USER CODE BEGIN SPI1_MspInit 1 */ 00146 00147 /* USER CODE END SPI1_MspInit 1 */ 00148 } 00149 } 00150 00151 void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) 00152 { 00153 00154 if(spiHandle->Instance==SPI1) 00155 { 00156 /* USER CODE BEGIN SPI1_MspDeInit 0 */ 00157 00158 /* USER CODE END SPI1_MspDeInit 0 */ 00159 /* Peripheral clock disable */ 00160 __HAL_RCC_SPI1_CLK_DISABLE(); 00161 00162 /**SPI1 GPIO Configuration 00163 PA5 ------> SPI1_SCK 00164 PA6 ------> SPI1_MISO 00165 PB5 ------> SPI1_MOSI 00166 */ 00167 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6); 00168 00169 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_5); 00170 00171 /* SPI1 DMA DeInit */ 00172 HAL_DMA_DeInit(spiHandle->hdmarx); 00173 HAL_DMA_DeInit(spiHandle->hdmatx); 00174 00175 /* SPI1 interrupt Deinit */ 00176 HAL_NVIC_DisableIRQ(SPI1_IRQn); 00177 /* USER CODE BEGIN SPI1_MspDeInit 1 */ 00178 00179 /* USER CODE END SPI1_MspDeInit 1 */ 00180 } 00181 } 00182 00183 /* USER CODE BEGIN 1 */ 00184 00185 /* USER CODE END 1 */ 00186 00187 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 00188
Generated on Thu Jul 14 2022 00:56:52 by
1.7.2