Ignore:
Timestamp:
Jan 31, 2025, 10:07:48 AM (3 months ago)
Author:
Zed
Message:

Fixing project before changing NSS control for SPI2 in CubeMX.

Location:
ctrl/firmware/Main/CubeMX/Core
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • ctrl/firmware/Main/CubeMX/Core/Inc/main.h

    r66 r76  
    7878#define RST_DISPLAY_Pin GPIO_PIN_15
    7979#define RST_DISPLAY_GPIO_Port GPIOE
     80#define ETH_SPI_SCK_Pin GPIO_PIN_10
     81#define ETH_SPI_SCK_GPIO_Port GPIOB
     82#define ETH_SPI_MISO_Pin GPIO_PIN_14
     83#define ETH_SPI_MISO_GPIO_Port GPIOB
     84#define ETH_SPI_MOSI_Pin GPIO_PIN_15
     85#define ETH_SPI_MOSI_GPIO_Port GPIOB
    8086#define GSM_PWR_Pin GPIO_PIN_10
    8187#define GSM_PWR_GPIO_Port GPIOD
     
    8894#define SD_DETECT_Pin GPIO_PIN_8
    8995#define SD_DETECT_GPIO_Port GPIOA
     96#define ETH_SPI_PWR_Pin GPIO_PIN_3
     97#define ETH_SPI_PWR_GPIO_Port GPIOD
    9098#define OUTPUT_ON_LED_Pin GPIO_PIN_7
    9199#define OUTPUT_ON_LED_GPIO_Port GPIOD
     
    102110#define BUZZER_Pin GPIO_PIN_15
    103111#define BUZZER_GPIO_Port GPIOG
     112#define ETH_SPI_NSS_Pin GPIO_PIN_4
     113#define ETH_SPI_NSS_GPIO_Port GPIOB
     114#define ETH_SPI_INT_Pin GPIO_PIN_8
     115#define ETH_SPI_INT_GPIO_Port GPIOB
     116#define ETH_SPI_RST_Pin GPIO_PIN_9
     117#define ETH_SPI_RST_GPIO_Port GPIOB
    104118
    105119/* USER CODE BEGIN Private defines */
  • ctrl/firmware/Main/CubeMX/Core/Inc/spi.h

    r47 r76  
    3333/* USER CODE END Includes */
    3434
     35extern SPI_HandleTypeDef hspi2;
     36
    3537extern SPI_HandleTypeDef hspi4;
    3638
     
    3941/* USER CODE END Private defines */
    4042
     43void MX_SPI2_Init(void);
    4144void MX_SPI4_Init(void);
    4245
  • ctrl/firmware/Main/CubeMX/Core/Src/gpio.c

    r66 r76  
    7070  HAL_GPIO_WritePin(GPIOD, GSM_PWR_Pin|OUTPUT_ON_LED_Pin, GPIO_PIN_RESET);
    7171
     72  /*Configure GPIO pin Output Level */
     73  HAL_GPIO_WritePin(ETH_SPI_PWR_GPIO_Port, ETH_SPI_PWR_Pin, GPIO_PIN_SET);
     74
     75  /*Configure GPIO pin Output Level */
     76  HAL_GPIO_WritePin(ETH_SPI_RST_GPIO_Port, ETH_SPI_RST_Pin, GPIO_PIN_RESET);
     77
    7278  /*Configure GPIO pins : PE2 PE3 PE4 PE5
    7379                           PE8 PE9 PE10 PE0
     
    119125  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    120126
    121   /*Configure GPIO pins : PB0 PB1 PB2 PB10
    122                            PB11 PB12 PB13 PB14
    123                            PB15 PB3 PB4 PB5
    124                            PB6 PB7 PB8 PB9 */
    125   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
    126                           |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
    127                           |GPIO_PIN_15|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
    128                           |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
     127  /*Configure GPIO pins : PB0 PB1 PB2 PB11
     128                           PB12 PB13 PB3 PB5
     129                           PB6 PB7 */
     130  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_11
     131                          |GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_3|GPIO_PIN_5
     132                          |GPIO_PIN_6|GPIO_PIN_7;
    129133  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    130134  GPIO_InitStruct.Pull = GPIO_NOPULL;
     
    147151  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
    148152
    149   /*Configure GPIO pins : GSM_PWR_Pin OUTPUT_ON_LED_Pin */
    150   GPIO_InitStruct.Pin = GSM_PWR_Pin|OUTPUT_ON_LED_Pin;
     153  /*Configure GPIO pins : GSM_PWR_Pin ETH_SPI_PWR_Pin OUTPUT_ON_LED_Pin */
     154  GPIO_InitStruct.Pin = GSM_PWR_Pin|ETH_SPI_PWR_Pin|OUTPUT_ON_LED_Pin;
    151155  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    152156  GPIO_InitStruct.Pull = GPIO_NOPULL;
     
    161165
    162166  /*Configure GPIO pins : PD14 PD15 PD0 PD1
    163                            PD3 PD4 PD5 PD6 */
     167                           PD4 PD5 PD6 */
    164168  GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1
    165                           |GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
     169                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
    166170  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    167171  GPIO_InitStruct.Pull = GPIO_NOPULL;
     
    182186  HAL_GPIO_Init(SD_DETECT_GPIO_Port, &GPIO_InitStruct);
    183187
     188  /*Configure GPIO pin : ETH_SPI_INT_Pin */
     189  GPIO_InitStruct.Pin = ETH_SPI_INT_Pin;
     190  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
     191  GPIO_InitStruct.Pull = GPIO_NOPULL;
     192  HAL_GPIO_Init(ETH_SPI_INT_GPIO_Port, &GPIO_InitStruct);
     193
     194  /*Configure GPIO pin : ETH_SPI_RST_Pin */
     195  GPIO_InitStruct.Pin = ETH_SPI_RST_Pin;
     196  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
     197  GPIO_InitStruct.Pull = GPIO_NOPULL;
     198  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
     199  HAL_GPIO_Init(ETH_SPI_RST_GPIO_Port, &GPIO_InitStruct);
     200
    184201}
    185202
  • ctrl/firmware/Main/CubeMX/Core/Src/main.c

    r75 r76  
    3535#include <stdio.h>
    3636
     37#include "lwip.h"
     38
    3739/* USER CODE END Includes */
    3840
     
    6365void MX_FREERTOS_Init(void);
    6466/* USER CODE BEGIN PFP */
    65 
    66 void SPI_WriteComm(uint8_t);
    67 void SPI_WriteData(uint8_t);
    68 
    6967
    7068/* USER CODE END PFP */
     
    127125  MX_FATFS_Init();
    128126  MX_TIM8_Init();
     127  MX_SPI2_Init();
    129128  /* USER CODE BEGIN 2 */
    130129
     
    219218/* USER CODE BEGIN 4 */
    220219
    221 void SPI_Transmit(uint8_t cmd_data_toSend, uint8_t isCmd)
    222 {
    223         uint16_t data[1];
    224 
    225         data[0] = (uint16_t)isCmd << 8U;
    226         data[0] |= (uint16_t)cmd_data_toSend;
    227 
    228 
    229         HAL_SPI_Transmit(&hspi4, (const uint8_t*)data, 1, 1000);
    230 }
    231 
    232 void SPI_WriteComm(uint8_t cmdToSend)
    233 {
    234         SPI_Transmit(cmdToSend, 0);
    235 }
    236 
    237 //------------------------------------------------------------------------------
    238 
    239 void SPI_WriteData(uint8_t dataToSend)
    240 {
    241         SPI_Transmit(dataToSend, 1);
    242 }
    243 
    244 //------------------------------------------------------------------------------
    245 
    246220/* USER CODE END 4 */
    247221
  • ctrl/firmware/Main/CubeMX/Core/Src/spi.c

    r72 r76  
    2525/* USER CODE END 0 */
    2626
     27SPI_HandleTypeDef hspi2;
    2728SPI_HandleTypeDef hspi4;
    2829DMA_HandleTypeDef hdma_spi4_tx;
    2930
     31/* SPI2 init function */
     32void MX_SPI2_Init(void)
     33{
     34
     35  /* USER CODE BEGIN SPI2_Init 0 */
     36
     37  /* USER CODE END SPI2_Init 0 */
     38
     39  /* USER CODE BEGIN SPI2_Init 1 */
     40
     41  /* USER CODE END SPI2_Init 1 */
     42  hspi2.Instance = SPI2;
     43  hspi2.Init.Mode = SPI_MODE_MASTER;
     44  hspi2.Init.Direction = SPI_DIRECTION_2LINES;
     45  hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
     46  hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
     47  hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
     48  hspi2.Init.NSS = SPI_NSS_HARD_OUTPUT;
     49  hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
     50  hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
     51  hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
     52  hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
     53  hspi2.Init.CRCPolynomial = 0x0;
     54  hspi2.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
     55  hspi2.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
     56  hspi2.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
     57  hspi2.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
     58  hspi2.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
     59  hspi2.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_03CYCLE;
     60  hspi2.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_06CYCLE;
     61  hspi2.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
     62  hspi2.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;
     63  hspi2.Init.IOSwap = SPI_IO_SWAP_DISABLE;
     64  if (HAL_SPI_Init(&hspi2) != HAL_OK)
     65  {
     66    Error_Handler();
     67  }
     68  /* USER CODE BEGIN SPI2_Init 2 */
     69
     70  /* USER CODE END SPI2_Init 2 */
     71
     72}
    3073/* SPI4 init function */
    3174void MX_SPI4_Init(void)
     
    76119  GPIO_InitTypeDef GPIO_InitStruct = {0};
    77120  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
    78   if(spiHandle->Instance==SPI4)
     121  if(spiHandle->Instance==SPI2)
     122  {
     123  /* USER CODE BEGIN SPI2_MspInit 0 */
     124
     125  /* USER CODE END SPI2_MspInit 0 */
     126
     127  /** Initializes the peripherals clock
     128  */
     129    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI2;
     130    PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL;
     131    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
     132    {
     133      Error_Handler();
     134    }
     135
     136    /* SPI2 clock enable */
     137    __HAL_RCC_SPI2_CLK_ENABLE();
     138
     139    __HAL_RCC_GPIOB_CLK_ENABLE();
     140    /**SPI2 GPIO Configuration
     141    PB10     ------> SPI2_SCK
     142    PB14     ------> SPI2_MISO
     143    PB15     ------> SPI2_MOSI
     144    PB4(NJTRST)     ------> SPI2_NSS
     145    */
     146    GPIO_InitStruct.Pin = ETH_SPI_SCK_Pin|ETH_SPI_MISO_Pin|ETH_SPI_MOSI_Pin;
     147    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     148    GPIO_InitStruct.Pull = GPIO_NOPULL;
     149    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
     150    GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
     151    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
     152
     153    GPIO_InitStruct.Pin = ETH_SPI_NSS_Pin;
     154    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     155    GPIO_InitStruct.Pull = GPIO_NOPULL;
     156    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
     157    GPIO_InitStruct.Alternate = GPIO_AF7_SPI2;
     158    HAL_GPIO_Init(ETH_SPI_NSS_GPIO_Port, &GPIO_InitStruct);
     159
     160  /* USER CODE BEGIN SPI2_MspInit 1 */
     161
     162  /* USER CODE END SPI2_MspInit 1 */
     163  }
     164  else if(spiHandle->Instance==SPI4)
    79165  {
    80166  /* USER CODE BEGIN SPI4_MspInit 0 */
     
    138224{
    139225
    140   if(spiHandle->Instance==SPI4)
     226  if(spiHandle->Instance==SPI2)
     227  {
     228  /* USER CODE BEGIN SPI2_MspDeInit 0 */
     229
     230  /* USER CODE END SPI2_MspDeInit 0 */
     231    /* Peripheral clock disable */
     232    __HAL_RCC_SPI2_CLK_DISABLE();
     233
     234    /**SPI2 GPIO Configuration
     235    PB10     ------> SPI2_SCK
     236    PB14     ------> SPI2_MISO
     237    PB15     ------> SPI2_MOSI
     238    PB4(NJTRST)     ------> SPI2_NSS
     239    */
     240    HAL_GPIO_DeInit(GPIOB, ETH_SPI_SCK_Pin|ETH_SPI_MISO_Pin|ETH_SPI_MOSI_Pin|ETH_SPI_NSS_Pin);
     241
     242  /* USER CODE BEGIN SPI2_MspDeInit 1 */
     243
     244  /* USER CODE END SPI2_MspDeInit 1 */
     245  }
     246  else if(spiHandle->Instance==SPI4)
    141247  {
    142248  /* USER CODE BEGIN SPI4_MspDeInit 0 */
Note: See TracChangeset for help on using the changeset viewer.