SPI2 STM32H745
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-05-27 06:54 AM
Hi everyone
I can find help on how to connect SPI2 STM32H745.
I have read the datasheet and did everything written on it.
Please can someone help me
- Labels:
-
STM32Cube MCU Packages
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-05-27 07:00 AM
Hi,
>I have read the datasheet and did everything written on it.
What you did ?
>how to connect SPI2 STM32H745
In Cube - you set : SPI2 ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-05-27 08:19 AM
Hello @fru999
Below is an example of how you might set up and use SPI2 with the HAL library on an STM32H745 microcontroller.
Step 1: Initialize SPI2
First, you need to create an SPI_HandleTypeDef structure and initialize it with the desired SPI parameters.
#include "stm32h7xx_hal.h"
SPI_HandleTypeDef hspi2;
void SPI2_Init(void) {
// SPI2 parameter configuration
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_16; // Adjust the prescaler value as needed
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi2) != HAL_OK) {
// Initialization Error
Error_Handler();
}
}
void Error_Handler(void) {
// User can add his own implementation to report the HAL error return state
while(1) {
}
}
Step 2: Configure GPIO Pins for SPI2
You need to configure the GPIO pins for SPI2. This is typically done in the HAL_SPI_MspInit function, which is called by HAL_SPI_Init.
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) {
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(hspi->Instance==SPI2) {
// Enable clocks for SPI2 and GPIO
__HAL_RCC_SPI2_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
// SPI2 GPIO Configuration
// PB13 ------> SPI2_SCK
// PB14 ------> SPI2_MISO
// PB15 ------> SPI2_MOSI
GPIO_InitStruct.Pin = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
}
Step 3: Transmit and Receive Data
To transmit and receive data using the HAL library, you can use the HAL_SPI_Transmit, HAL_SPI_Receive, or HAL_SPI_TransmitReceive functions.
uint8_t data_to_send = 0xAA; // Example data to send
uint8_t received_data = 0x00;
// Transmit data
if (HAL_SPI_Transmit(&hspi2, &data_to_send, 1, HAL_MAX_DELAY) != HAL_OK) {
// Transmission Error
Error_Handler();
}
// Receive data
if (HAL_SPI_Receive(&hspi2, &received_data, 1, HAL_MAX_DELAY) != HAL_OK) {
// Reception Error
Error_Handler();
}
For configuring the SPI2 peripheral on your STM32H745, I recommend using STM32CubeMX. This tool simplifies peripheral setup and pin configuration, ensuring an error-free initialization process.
Thanks
Omar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-05-27 08:41 AM
I initialize the SPI throught the CUBE MX
I have my SPI_init and everything OSAKE.1 talks about but I have the impression my PIN are not the good ones.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-05-27 11:35 AM
The usual test for this: disable SPI setting, set PIN as gpio output and write in small loop hi/lo to the pin. Check with scope, what is on the pin then.