adc

Dependents:   h7adc

Committer:
yuliyasm
Date:
Wed Oct 28 15:35:08 2020 +0000
Revision:
3:1d62b3be52e8
new

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuliyasm 3:1d62b3be52e8 1 void Error_Handler(){};
yuliyasm 3:1d62b3be52e8 2 /**
yuliyasm 3:1d62b3be52e8 3 ******************************************************************************
yuliyasm 3:1d62b3be52e8 4 * File Name : SPI.c
yuliyasm 3:1d62b3be52e8 5 * Description : This file provides code for the configuration
yuliyasm 3:1d62b3be52e8 6 * of the SPI instances.
yuliyasm 3:1d62b3be52e8 7 ******************************************************************************
yuliyasm 3:1d62b3be52e8 8 * @attention
yuliyasm 3:1d62b3be52e8 9 *
yuliyasm 3:1d62b3be52e8 10 * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
yuliyasm 3:1d62b3be52e8 11 * All rights reserved.</center></h2>
yuliyasm 3:1d62b3be52e8 12 *
yuliyasm 3:1d62b3be52e8 13 * This software component is licensed by ST under Ultimate Liberty license
yuliyasm 3:1d62b3be52e8 14 * SLA0044, the "License"; You may not use this file except in compliance with
yuliyasm 3:1d62b3be52e8 15 * the License. You may obtain a copy of the License at:
yuliyasm 3:1d62b3be52e8 16 * www.st.com/SLA0044
yuliyasm 3:1d62b3be52e8 17 *
yuliyasm 3:1d62b3be52e8 18 ******************************************************************************
yuliyasm 3:1d62b3be52e8 19 */
yuliyasm 3:1d62b3be52e8 20
yuliyasm 3:1d62b3be52e8 21 /* Includes ------------------------------------------------------------------*/
yuliyasm 3:1d62b3be52e8 22 #include "spi.h"
yuliyasm 3:1d62b3be52e8 23
yuliyasm 3:1d62b3be52e8 24 /* USER CODE BEGIN 0 */
yuliyasm 3:1d62b3be52e8 25
yuliyasm 3:1d62b3be52e8 26 /* USER CODE END 0 */
yuliyasm 3:1d62b3be52e8 27
yuliyasm 3:1d62b3be52e8 28 SPI_HandleTypeDef hspi1;
yuliyasm 3:1d62b3be52e8 29 DMA_HandleTypeDef hdma_spi1_rx;
yuliyasm 3:1d62b3be52e8 30 DMA_HandleTypeDef hdma_spi1_tx;
yuliyasm 3:1d62b3be52e8 31
yuliyasm 3:1d62b3be52e8 32 /* SPI1 init function */
yuliyasm 3:1d62b3be52e8 33 void MX_SPI1_Init(void)
yuliyasm 3:1d62b3be52e8 34 {
yuliyasm 3:1d62b3be52e8 35
yuliyasm 3:1d62b3be52e8 36 hspi1.Instance = SPI1;
yuliyasm 3:1d62b3be52e8 37 hspi1.Init.Mode = SPI_MODE_MASTER;
yuliyasm 3:1d62b3be52e8 38 hspi1.Init.Direction = SPI_DIRECTION_2LINES;
yuliyasm 3:1d62b3be52e8 39 hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
yuliyasm 3:1d62b3be52e8 40 hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
yuliyasm 3:1d62b3be52e8 41 hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
yuliyasm 3:1d62b3be52e8 42 hspi1.Init.NSS = SPI_NSS_SOFT;
yuliyasm 3:1d62b3be52e8 43 hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;
yuliyasm 3:1d62b3be52e8 44 hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
yuliyasm 3:1d62b3be52e8 45 hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
yuliyasm 3:1d62b3be52e8 46 hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
yuliyasm 3:1d62b3be52e8 47 hspi1.Init.CRCPolynomial = 0x0;
yuliyasm 3:1d62b3be52e8 48 hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
yuliyasm 3:1d62b3be52e8 49 hspi1.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
yuliyasm 3:1d62b3be52e8 50 hspi1.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
yuliyasm 3:1d62b3be52e8 51 hspi1.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
yuliyasm 3:1d62b3be52e8 52 hspi1.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
yuliyasm 3:1d62b3be52e8 53 hspi1.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;
yuliyasm 3:1d62b3be52e8 54 hspi1.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;
yuliyasm 3:1d62b3be52e8 55 hspi1.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
yuliyasm 3:1d62b3be52e8 56 hspi1.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE;
yuliyasm 3:1d62b3be52e8 57 hspi1.Init.IOSwap = SPI_IO_SWAP_DISABLE;
yuliyasm 3:1d62b3be52e8 58 if (HAL_SPI_Init(&hspi1) != HAL_OK)
yuliyasm 3:1d62b3be52e8 59 {
yuliyasm 3:1d62b3be52e8 60 Error_Handler();
yuliyasm 3:1d62b3be52e8 61 }
yuliyasm 3:1d62b3be52e8 62
yuliyasm 3:1d62b3be52e8 63 }
yuliyasm 3:1d62b3be52e8 64
yuliyasm 3:1d62b3be52e8 65 void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
yuliyasm 3:1d62b3be52e8 66 {
yuliyasm 3:1d62b3be52e8 67
yuliyasm 3:1d62b3be52e8 68 GPIO_InitTypeDef GPIO_InitStruct = {0};
yuliyasm 3:1d62b3be52e8 69 if(spiHandle->Instance==SPI1)
yuliyasm 3:1d62b3be52e8 70 {
yuliyasm 3:1d62b3be52e8 71 /* USER CODE BEGIN SPI1_MspInit 0 */
yuliyasm 3:1d62b3be52e8 72
yuliyasm 3:1d62b3be52e8 73 /* USER CODE END SPI1_MspInit 0 */
yuliyasm 3:1d62b3be52e8 74 /* SPI1 clock enable */
yuliyasm 3:1d62b3be52e8 75 __HAL_RCC_SPI1_CLK_ENABLE();
yuliyasm 3:1d62b3be52e8 76
yuliyasm 3:1d62b3be52e8 77 __HAL_RCC_GPIOA_CLK_ENABLE();
yuliyasm 3:1d62b3be52e8 78 __HAL_RCC_GPIOB_CLK_ENABLE();
yuliyasm 3:1d62b3be52e8 79 /**SPI1 GPIO Configuration
yuliyasm 3:1d62b3be52e8 80 PA5 ------> SPI1_SCK
yuliyasm 3:1d62b3be52e8 81 PA6 ------> SPI1_MISO
yuliyasm 3:1d62b3be52e8 82 PB5 ------> SPI1_MOSI
yuliyasm 3:1d62b3be52e8 83 */
yuliyasm 3:1d62b3be52e8 84 GPIO_InitStruct.Pin = GPIO_PIN_5;
yuliyasm 3:1d62b3be52e8 85 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
yuliyasm 3:1d62b3be52e8 86 GPIO_InitStruct.Pull = GPIO_PULLUP;
yuliyasm 3:1d62b3be52e8 87 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
yuliyasm 3:1d62b3be52e8 88 GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
yuliyasm 3:1d62b3be52e8 89 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
yuliyasm 3:1d62b3be52e8 90
yuliyasm 3:1d62b3be52e8 91 GPIO_InitStruct.Pin = GPIO_PIN_6;
yuliyasm 3:1d62b3be52e8 92 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
yuliyasm 3:1d62b3be52e8 93 GPIO_InitStruct.Pull = GPIO_NOPULL;
yuliyasm 3:1d62b3be52e8 94 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
yuliyasm 3:1d62b3be52e8 95 GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
yuliyasm 3:1d62b3be52e8 96 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
yuliyasm 3:1d62b3be52e8 97
yuliyasm 3:1d62b3be52e8 98 GPIO_InitStruct.Pin = GPIO_PIN_5;
yuliyasm 3:1d62b3be52e8 99 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
yuliyasm 3:1d62b3be52e8 100 GPIO_InitStruct.Pull = GPIO_NOPULL;
yuliyasm 3:1d62b3be52e8 101 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
yuliyasm 3:1d62b3be52e8 102 GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
yuliyasm 3:1d62b3be52e8 103 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
yuliyasm 3:1d62b3be52e8 104
yuliyasm 3:1d62b3be52e8 105 /* SPI1 DMA Init */
yuliyasm 3:1d62b3be52e8 106 /* SPI1_RX Init */
yuliyasm 3:1d62b3be52e8 107 hdma_spi1_rx.Instance = DMA1_Stream0;
yuliyasm 3:1d62b3be52e8 108 hdma_spi1_rx.Init.Request = DMA_REQUEST_SPI1_RX;
yuliyasm 3:1d62b3be52e8 109 hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
yuliyasm 3:1d62b3be52e8 110 hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
yuliyasm 3:1d62b3be52e8 111 hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
yuliyasm 3:1d62b3be52e8 112 hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
yuliyasm 3:1d62b3be52e8 113 hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
yuliyasm 3:1d62b3be52e8 114 hdma_spi1_rx.Init.Mode = DMA_NORMAL;
yuliyasm 3:1d62b3be52e8 115 hdma_spi1_rx.Init.Priority = DMA_PRIORITY_HIGH;
yuliyasm 3:1d62b3be52e8 116 hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
yuliyasm 3:1d62b3be52e8 117 if (HAL_DMA_Init(&hdma_spi1_rx) != HAL_OK)
yuliyasm 3:1d62b3be52e8 118 {
yuliyasm 3:1d62b3be52e8 119 Error_Handler();
yuliyasm 3:1d62b3be52e8 120 }
yuliyasm 3:1d62b3be52e8 121
yuliyasm 3:1d62b3be52e8 122 __HAL_LINKDMA(spiHandle,hdmarx,hdma_spi1_rx);
yuliyasm 3:1d62b3be52e8 123
yuliyasm 3:1d62b3be52e8 124 /* SPI1_TX Init */
yuliyasm 3:1d62b3be52e8 125 hdma_spi1_tx.Instance = DMA1_Stream1;
yuliyasm 3:1d62b3be52e8 126 hdma_spi1_tx.Init.Request = DMA_REQUEST_SPI1_TX;
yuliyasm 3:1d62b3be52e8 127 hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
yuliyasm 3:1d62b3be52e8 128 hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
yuliyasm 3:1d62b3be52e8 129 hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
yuliyasm 3:1d62b3be52e8 130 hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
yuliyasm 3:1d62b3be52e8 131 hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
yuliyasm 3:1d62b3be52e8 132 hdma_spi1_tx.Init.Mode = DMA_NORMAL;
yuliyasm 3:1d62b3be52e8 133 hdma_spi1_tx.Init.Priority = DMA_PRIORITY_HIGH;
yuliyasm 3:1d62b3be52e8 134 hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
yuliyasm 3:1d62b3be52e8 135 if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK)
yuliyasm 3:1d62b3be52e8 136 {
yuliyasm 3:1d62b3be52e8 137 Error_Handler();
yuliyasm 3:1d62b3be52e8 138 }
yuliyasm 3:1d62b3be52e8 139
yuliyasm 3:1d62b3be52e8 140 __HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx);
yuliyasm 3:1d62b3be52e8 141
yuliyasm 3:1d62b3be52e8 142 /* SPI1 interrupt Init */
yuliyasm 3:1d62b3be52e8 143 HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0);
yuliyasm 3:1d62b3be52e8 144 HAL_NVIC_EnableIRQ(SPI1_IRQn);
yuliyasm 3:1d62b3be52e8 145 /* USER CODE BEGIN SPI1_MspInit 1 */
yuliyasm 3:1d62b3be52e8 146
yuliyasm 3:1d62b3be52e8 147 /* USER CODE END SPI1_MspInit 1 */
yuliyasm 3:1d62b3be52e8 148 }
yuliyasm 3:1d62b3be52e8 149 }
yuliyasm 3:1d62b3be52e8 150
yuliyasm 3:1d62b3be52e8 151 void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
yuliyasm 3:1d62b3be52e8 152 {
yuliyasm 3:1d62b3be52e8 153
yuliyasm 3:1d62b3be52e8 154 if(spiHandle->Instance==SPI1)
yuliyasm 3:1d62b3be52e8 155 {
yuliyasm 3:1d62b3be52e8 156 /* USER CODE BEGIN SPI1_MspDeInit 0 */
yuliyasm 3:1d62b3be52e8 157
yuliyasm 3:1d62b3be52e8 158 /* USER CODE END SPI1_MspDeInit 0 */
yuliyasm 3:1d62b3be52e8 159 /* Peripheral clock disable */
yuliyasm 3:1d62b3be52e8 160 __HAL_RCC_SPI1_CLK_DISABLE();
yuliyasm 3:1d62b3be52e8 161
yuliyasm 3:1d62b3be52e8 162 /**SPI1 GPIO Configuration
yuliyasm 3:1d62b3be52e8 163 PA5 ------> SPI1_SCK
yuliyasm 3:1d62b3be52e8 164 PA6 ------> SPI1_MISO
yuliyasm 3:1d62b3be52e8 165 PB5 ------> SPI1_MOSI
yuliyasm 3:1d62b3be52e8 166 */
yuliyasm 3:1d62b3be52e8 167 HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6);
yuliyasm 3:1d62b3be52e8 168
yuliyasm 3:1d62b3be52e8 169 HAL_GPIO_DeInit(GPIOB, GPIO_PIN_5);
yuliyasm 3:1d62b3be52e8 170
yuliyasm 3:1d62b3be52e8 171 /* SPI1 DMA DeInit */
yuliyasm 3:1d62b3be52e8 172 HAL_DMA_DeInit(spiHandle->hdmarx);
yuliyasm 3:1d62b3be52e8 173 HAL_DMA_DeInit(spiHandle->hdmatx);
yuliyasm 3:1d62b3be52e8 174
yuliyasm 3:1d62b3be52e8 175 /* SPI1 interrupt Deinit */
yuliyasm 3:1d62b3be52e8 176 HAL_NVIC_DisableIRQ(SPI1_IRQn);
yuliyasm 3:1d62b3be52e8 177 /* USER CODE BEGIN SPI1_MspDeInit 1 */
yuliyasm 3:1d62b3be52e8 178
yuliyasm 3:1d62b3be52e8 179 /* USER CODE END SPI1_MspDeInit 1 */
yuliyasm 3:1d62b3be52e8 180 }
yuliyasm 3:1d62b3be52e8 181 }
yuliyasm 3:1d62b3be52e8 182
yuliyasm 3:1d62b3be52e8 183 /* USER CODE BEGIN 1 */
yuliyasm 3:1d62b3be52e8 184
yuliyasm 3:1d62b3be52e8 185 /* USER CODE END 1 */
yuliyasm 3:1d62b3be52e8 186
yuliyasm 3:1d62b3be52e8 187 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
yuliyasm 3:1d62b3be52e8 188