cancel
Showing results for 
Search instead for 
Did you mean: 

Defining SPI2 manually on STM32CubeMx ?

antonius
Senior
Posted on January 17, 2016 at 00:02

Guys,

I want to manually define SPI2, I generated SPI1 from STM32CubeMX, but I have done some modification on some files, and I want to initialize SPI2 myself, is it only at spi.c...or I need to make some changes at other files ? This is what I have made on spi.c


/* 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_4;

hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;

hspi1.Init.TIMode = SPI_TIMODE_DISABLED;

hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;

hspi1.Init.CRCPolynomial = 10;

HAL_SPI_Init(&hspi1);


}


/* SPI1 init function */

void MX_SPI1_Init_Low(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_256;

hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;

hspi1.Init.TIMode = SPI_TIMODE_DISABLED;

hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;

hspi1.Init.CRCPolynomial = 10;

HAL_SPI_Init(&hspi1);


}


/* SPI1 init function */

void MX_SPI2_Init(void)

{


hspi2.Instance = SPI2;

hspi2.Init.Mode = SPI_MODE_MASTER;

hspi2.Init.Direction = SPI_DIRECTION_2LINES;

hspi2.Init.DataSize = SPI_DATASIZE_8BIT;

hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;

hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;

hspi2.Init.NSS = SPI_NSS_SOFT;

hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;

hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;

hspi2.Init.TIMode = SPI_TIMODE_DISABLED;

hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;

hspi2.Init.CRCPolynomial = 10;

HAL_SPI_Init(&hspi2);


}


/* SPI1 init function */



void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)

{


GPIO_InitTypeDef GPIO_InitStruct;

if(hspi->Instance==SPI1)

{

/* USER CODE BEGIN SPI1_MspInit 0 */


/* USER CODE END SPI1_MspInit 0 */

/* Peripheral clock enable */

__SPI1_CLK_ENABLE();

__SPI2_CLK_ENABLE();


/**SPI1 GPIO Configuration 

PA5 ------> SPI1_SCK

PA6 ------> SPI1_MISO

PA7 ------> SPI1_MOSI 

*/

GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;

GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


GPIO_InitStruct.Pin = GPIO_PIN_6;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


//SPI2 Init

/**SPI1 GPIO Configuration 

PB13 ------> SPI2_SCK

PB14 ------> SPI2_MISO

PB15 ------> SPI2_MOSI 

*/

GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_15;

GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


GPIO_InitStruct.Pin = GPIO_PIN_14;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


/* USER CODE BEGIN SPI1_MspInit 1 */


/* USER CODE END SPI1_MspInit 1 */

}

}


void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)

{


if(hspi->Instance==SPI1)

{

/* USER CODE BEGIN SPI1_MspDeInit 0 */


/* USER CODE END SPI1_MspDeInit 0 */

/* Peripheral clock disable */

__SPI1_CLK_DISABLE();

__SPI2_CLK_DISABLE();


/**SPI1 GPIO Configuration 

PA5 ------> SPI1_SCK

PA6 ------> SPI1_MISO

PA7 ------> SPI1_MOSI 

*/

HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

/**SPI1 GPIO Configuration 

PB13 ------> SPI2_SCK

PB14 ------> SPI2_MISO

PB15 ------> SPI2_MOSI 

*/

HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);


}

Thanks
0 REPLIES 0