xref: /btstack/port/stm32-f4discovery-cc256x/Src/spi.c (revision 225f4ba4fe806afeda1ee8519bb5f4a8ce540af2)
1*225f4ba4SMatthias Ringwald /**
2*225f4ba4SMatthias Ringwald   ******************************************************************************
3*225f4ba4SMatthias Ringwald   * File Name          : SPI.c
4*225f4ba4SMatthias Ringwald   * Description        : This file provides code for the configuration
5*225f4ba4SMatthias Ringwald   *                      of the SPI instances.
6*225f4ba4SMatthias Ringwald   ******************************************************************************
7*225f4ba4SMatthias Ringwald   * @attention
8*225f4ba4SMatthias Ringwald   *
9*225f4ba4SMatthias Ringwald   * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
10*225f4ba4SMatthias Ringwald   * All rights reserved.</center></h2>
11*225f4ba4SMatthias Ringwald   *
12*225f4ba4SMatthias Ringwald   * This software component is licensed by ST under BSD 3-Clause license,
13*225f4ba4SMatthias Ringwald   * the "License"; You may not use this file except in compliance with the
14*225f4ba4SMatthias Ringwald   * License. You may obtain a copy of the License at:
15*225f4ba4SMatthias Ringwald   *                        opensource.org/licenses/BSD-3-Clause
16*225f4ba4SMatthias Ringwald   *
17*225f4ba4SMatthias Ringwald   ******************************************************************************
18*225f4ba4SMatthias Ringwald   */
19*225f4ba4SMatthias Ringwald 
20*225f4ba4SMatthias Ringwald /* Includes ------------------------------------------------------------------*/
21*225f4ba4SMatthias Ringwald #include "spi.h"
22*225f4ba4SMatthias Ringwald 
23*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 0 */
24*225f4ba4SMatthias Ringwald 
25*225f4ba4SMatthias Ringwald /* USER CODE END 0 */
26*225f4ba4SMatthias Ringwald 
27*225f4ba4SMatthias Ringwald SPI_HandleTypeDef hspi1;
28*225f4ba4SMatthias Ringwald 
29*225f4ba4SMatthias Ringwald /* SPI1 init function */
MX_SPI1_Init(void)30*225f4ba4SMatthias Ringwald void MX_SPI1_Init(void)
31*225f4ba4SMatthias Ringwald {
32*225f4ba4SMatthias Ringwald 
33*225f4ba4SMatthias Ringwald   hspi1.Instance = SPI1;
34*225f4ba4SMatthias Ringwald   hspi1.Init.Mode = SPI_MODE_MASTER;
35*225f4ba4SMatthias Ringwald   hspi1.Init.Direction = SPI_DIRECTION_2LINES;
36*225f4ba4SMatthias Ringwald   hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
37*225f4ba4SMatthias Ringwald   hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
38*225f4ba4SMatthias Ringwald   hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
39*225f4ba4SMatthias Ringwald   hspi1.Init.NSS = SPI_NSS_SOFT;
40*225f4ba4SMatthias Ringwald   hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
41*225f4ba4SMatthias Ringwald   hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
42*225f4ba4SMatthias Ringwald   hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
43*225f4ba4SMatthias Ringwald   hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
44*225f4ba4SMatthias Ringwald   hspi1.Init.CRCPolynomial = 10;
45*225f4ba4SMatthias Ringwald   if (HAL_SPI_Init(&hspi1) != HAL_OK)
46*225f4ba4SMatthias Ringwald   {
47*225f4ba4SMatthias Ringwald     Error_Handler();
48*225f4ba4SMatthias Ringwald   }
49*225f4ba4SMatthias Ringwald 
50*225f4ba4SMatthias Ringwald }
51*225f4ba4SMatthias Ringwald 
HAL_SPI_MspInit(SPI_HandleTypeDef * spiHandle)52*225f4ba4SMatthias Ringwald void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
53*225f4ba4SMatthias Ringwald {
54*225f4ba4SMatthias Ringwald 
55*225f4ba4SMatthias Ringwald   GPIO_InitTypeDef GPIO_InitStruct = {0};
56*225f4ba4SMatthias Ringwald   if(spiHandle->Instance==SPI1)
57*225f4ba4SMatthias Ringwald   {
58*225f4ba4SMatthias Ringwald   /* USER CODE BEGIN SPI1_MspInit 0 */
59*225f4ba4SMatthias Ringwald 
60*225f4ba4SMatthias Ringwald   /* USER CODE END SPI1_MspInit 0 */
61*225f4ba4SMatthias Ringwald     /* SPI1 clock enable */
62*225f4ba4SMatthias Ringwald     __HAL_RCC_SPI1_CLK_ENABLE();
63*225f4ba4SMatthias Ringwald 
64*225f4ba4SMatthias Ringwald     __HAL_RCC_GPIOA_CLK_ENABLE();
65*225f4ba4SMatthias Ringwald     /**SPI1 GPIO Configuration
66*225f4ba4SMatthias Ringwald     PA5     ------> SPI1_SCK
67*225f4ba4SMatthias Ringwald     PA6     ------> SPI1_MISO
68*225f4ba4SMatthias Ringwald     PA7     ------> SPI1_MOSI
69*225f4ba4SMatthias Ringwald     */
70*225f4ba4SMatthias Ringwald     GPIO_InitStruct.Pin = SPI1_SCK_Pin|SPI1_MISO_Pin|SPI1_MOSI_Pin;
71*225f4ba4SMatthias Ringwald     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
72*225f4ba4SMatthias Ringwald     GPIO_InitStruct.Pull = GPIO_NOPULL;
73*225f4ba4SMatthias Ringwald     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
74*225f4ba4SMatthias Ringwald     GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
75*225f4ba4SMatthias Ringwald     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
76*225f4ba4SMatthias Ringwald 
77*225f4ba4SMatthias Ringwald   /* USER CODE BEGIN SPI1_MspInit 1 */
78*225f4ba4SMatthias Ringwald 
79*225f4ba4SMatthias Ringwald   /* USER CODE END SPI1_MspInit 1 */
80*225f4ba4SMatthias Ringwald   }
81*225f4ba4SMatthias Ringwald }
82*225f4ba4SMatthias Ringwald 
HAL_SPI_MspDeInit(SPI_HandleTypeDef * spiHandle)83*225f4ba4SMatthias Ringwald void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
84*225f4ba4SMatthias Ringwald {
85*225f4ba4SMatthias Ringwald 
86*225f4ba4SMatthias Ringwald   if(spiHandle->Instance==SPI1)
87*225f4ba4SMatthias Ringwald   {
88*225f4ba4SMatthias Ringwald   /* USER CODE BEGIN SPI1_MspDeInit 0 */
89*225f4ba4SMatthias Ringwald 
90*225f4ba4SMatthias Ringwald   /* USER CODE END SPI1_MspDeInit 0 */
91*225f4ba4SMatthias Ringwald     /* Peripheral clock disable */
92*225f4ba4SMatthias Ringwald     __HAL_RCC_SPI1_CLK_DISABLE();
93*225f4ba4SMatthias Ringwald 
94*225f4ba4SMatthias Ringwald     /**SPI1 GPIO Configuration
95*225f4ba4SMatthias Ringwald     PA5     ------> SPI1_SCK
96*225f4ba4SMatthias Ringwald     PA6     ------> SPI1_MISO
97*225f4ba4SMatthias Ringwald     PA7     ------> SPI1_MOSI
98*225f4ba4SMatthias Ringwald     */
99*225f4ba4SMatthias Ringwald     HAL_GPIO_DeInit(GPIOA, SPI1_SCK_Pin|SPI1_MISO_Pin|SPI1_MOSI_Pin);
100*225f4ba4SMatthias Ringwald 
101*225f4ba4SMatthias Ringwald   /* USER CODE BEGIN SPI1_MspDeInit 1 */
102*225f4ba4SMatthias Ringwald 
103*225f4ba4SMatthias Ringwald   /* USER CODE END SPI1_MspDeInit 1 */
104*225f4ba4SMatthias Ringwald   }
105*225f4ba4SMatthias Ringwald }
106*225f4ba4SMatthias Ringwald 
107*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 1 */
108*225f4ba4SMatthias Ringwald 
109*225f4ba4SMatthias Ringwald /* USER CODE END 1 */
110*225f4ba4SMatthias Ringwald 
111*225f4ba4SMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
112