405 dr: spi 驱动测试初步 ok

Signed-off-by: a1012112796 <1012112796@qq.com>
This commit is contained in:
2024-07-25 17:57:06 +08:00
parent 1b85816262
commit ec86a22bb1
11 changed files with 246 additions and 44 deletions

View File

@@ -180,7 +180,13 @@ CONFIG_RT_MMCSD_STACK_SIZE=1024
CONFIG_RT_MMCSD_THREAD_PREORITY=22
CONFIG_RT_MMCSD_MAX_PARTITION=16
# CONFIG_RT_SDIO_DEBUG is not set
# CONFIG_RT_USING_SPI is not set
CONFIG_RT_USING_SPI=y
# CONFIG_RT_USING_SPI_BITOPS is not set
# CONFIG_RT_USING_QSPI is not set
# CONFIG_RT_USING_SPI_MSD is not set
# CONFIG_RT_USING_SFUD is not set
# CONFIG_RT_USING_ENC28J60 is not set
# CONFIG_RT_USING_SPI_WIFI is not set
# CONFIG_RT_USING_WDT is not set
# CONFIG_RT_USING_AUDIO is not set
# CONFIG_RT_USING_SENSOR is not set
@@ -1118,6 +1124,10 @@ CONFIG_BSP_USING_UART2=y
CONFIG_BSP_USING_SDIO=y
CONFIG_BSP_USING_USBD=y
CONFIG_BSP_USING_ON_CHIP_FLASH=y
CONFIG_BSP_USING_SPI=y
CONFIG_BSP_USING_SPI2=y
# CONFIG_BSP_SPI2_TX_USING_DMA is not set
# CONFIG_BSP_SPI2_RX_USING_DMA is not set
# CONFIG_BSP_USING_RNG is not set
# CONFIG_BSP_USING_UDID is not set

File diff suppressed because one or more lines are too long

View File

@@ -9,31 +9,35 @@ Mcu.Family=STM32F4
Mcu.IP0=NVIC
Mcu.IP1=RCC
Mcu.IP2=SDIO
Mcu.IP3=SYS
Mcu.IP4=USART1
Mcu.IP5=USART2
Mcu.IP6=USB_OTG_FS
Mcu.IPNb=7
Mcu.IP3=SPI2
Mcu.IP4=SYS
Mcu.IP5=USART1
Mcu.IP6=USART2
Mcu.IP7=USB_OTG_FS
Mcu.IPNb=8
Mcu.Name=STM32F405RGTx
Mcu.Package=LQFP64
Mcu.Pin0=PC14-OSC32_IN
Mcu.Pin1=PC15-OSC32_OUT
Mcu.Pin10=PA11
Mcu.Pin11=PA12
Mcu.Pin12=PC10
Mcu.Pin13=PC11
Mcu.Pin14=PC12
Mcu.Pin15=PD2
Mcu.Pin16=VP_SYS_VS_Systick
Mcu.Pin10=PC9
Mcu.Pin11=PA9
Mcu.Pin12=PA10
Mcu.Pin13=PA11
Mcu.Pin14=PA12
Mcu.Pin15=PC10
Mcu.Pin16=PC11
Mcu.Pin17=PC12
Mcu.Pin18=PD2
Mcu.Pin19=VP_SYS_VS_Systick
Mcu.Pin2=PH0-OSC_IN
Mcu.Pin3=PH1-OSC_OUT
Mcu.Pin4=PA2
Mcu.Pin5=PA3
Mcu.Pin6=PC8
Mcu.Pin7=PC9
Mcu.Pin8=PA9
Mcu.Pin9=PA10
Mcu.PinsNb=17
Mcu.Pin6=PB10
Mcu.Pin7=PB14
Mcu.Pin8=PB15
Mcu.Pin9=PC8
Mcu.PinsNb=20
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F405RGTx
@@ -66,6 +70,14 @@ PA3.Mode=Asynchronous
PA3.Signal=USART2_RX
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PB10.Mode=Full_Duplex_Master
PB10.Signal=SPI2_SCK
PB14.Locked=true
PB14.Mode=Full_Duplex_Master
PB14.Signal=SPI2_MISO
PB15.Locked=true
PB15.Mode=Full_Duplex_Master
PB15.Signal=SPI2_MOSI
PC10.Mode=SD_4_bits_Wide_bus
PC10.Signal=SDIO_D2
PC11.Mode=SD_4_bits_Wide_bus
@@ -117,7 +129,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_SDIO_SD_Init-SDIO-false-HAL-true
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_SDIO_SD_Init-SDIO-false-HAL-true,6-MX_USB_OTG_FS_PCD_Init-USB_OTG_FS-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=168000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
@@ -151,6 +163,11 @@ RCC.VCOI2SOutputFreq_Value=384000000
RCC.VCOInputFreq_Value=2000000
RCC.VCOOutputFreq_Value=336000000
RCC.VcooutputI2S=192000000
SPI2.CalculateBaudRate=21.0 MBits/s
SPI2.Direction=SPI_DIRECTION_2LINES
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate
SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualType=VM_MASTER
USART1.IPParameters=VirtualMode
USART1.VirtualMode=VM_ASYNC
USART2.IPParameters=VirtualMode

View File

@@ -62,7 +62,7 @@
/* #define HAL_SAI_MODULE_ENABLED */
#define HAL_SD_MODULE_ENABLED
/* #define HAL_MMC_MODULE_ENABLED */
/* #define HAL_SPI_MODULE_ENABLED */
#define HAL_SPI_MODULE_ENABLED
/* #define HAL_TIM_MODULE_ENABLED */
#define HAL_UART_MODULE_ENABLED
/* #define HAL_USART_MODULE_ENABLED */

View File

@@ -63,6 +63,8 @@
/* Private variables ---------------------------------------------------------*/
SD_HandleTypeDef hsd;
SPI_HandleTypeDef hspi2;
UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
@@ -79,6 +81,7 @@ static void MX_USART2_UART_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_SDIO_SD_Init(void);
static void MX_USB_OTG_FS_PCD_Init(void);
static void MX_SPI2_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
@@ -120,6 +123,7 @@ int main(void)
MX_USART1_UART_Init();
MX_SDIO_SD_Init();
MX_USB_OTG_FS_PCD_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
@@ -220,6 +224,44 @@ static void MX_SDIO_SD_Init(void)
}
/**
* @brief SPI2 Initialization Function
* @param None
* @retval None
*/
static void MX_SPI2_Init(void)
{
/* USER CODE BEGIN SPI2_Init 0 */
/* USER CODE END SPI2_Init 0 */
/* USER CODE BEGIN SPI2_Init 1 */
/* USER CODE END SPI2_Init 1 */
/* 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_2;
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)
{
Error_Handler();
}
/* USER CODE BEGIN SPI2_Init 2 */
/* USER CODE END SPI2_Init 2 */
}
/**
* @brief USART1 Initialization Function
* @param None
@@ -335,6 +377,7 @@ static void MX_GPIO_Init(void)
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
/* USER CODE BEGIN MX_GPIO_Init_2 */

View File

@@ -183,6 +183,73 @@ void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd)
}
/**
* @brief SPI MSP Initialization
* This function configures the hardware resources used in this example
* @param hspi: SPI handle pointer
* @retval None
*/
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(hspi->Instance==SPI2)
{
/* USER CODE BEGIN SPI2_MspInit 0 */
/* USER CODE END SPI2_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_SPI2_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**SPI2 GPIO Configuration
PB10 ------> SPI2_SCK
PB14 ------> SPI2_MISO
PB15 ------> SPI2_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_10|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);
/* USER CODE BEGIN SPI2_MspInit 1 */
/* USER CODE END SPI2_MspInit 1 */
}
}
/**
* @brief SPI MSP De-Initialization
* This function freeze the hardware resources used in this example
* @param hspi: SPI handle pointer
* @retval None
*/
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
{
if(hspi->Instance==SPI2)
{
/* USER CODE BEGIN SPI2_MspDeInit 0 */
/* USER CODE END SPI2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_SPI2_CLK_DISABLE();
/**SPI2 GPIO Configuration
PB10 ------> SPI2_SCK
PB14 ------> SPI2_MISO
PB15 ------> SPI2_MOSI
*/
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_14|GPIO_PIN_15);
/* USER CODE BEGIN SPI2_MspDeInit 1 */
/* USER CODE END SPI2_MspDeInit 1 */
}
}
/**
* @brief UART MSP Initialization
* This function configures the hardware resources used in this example

View File

@@ -59,6 +59,28 @@ menu "On-chip Peripheral Drivers"
select RT_USING_FAL
default n
menuconfig BSP_USING_SPI
bool "Enable SPI BUS"
default n
select RT_USING_SPI
if BSP_USING_SPI
config BSP_USING_SPI2
bool "Enable SPI2 BUS"
default n
config BSP_SPI2_TX_USING_DMA
bool "Enable SPI2 TX DMA"
depends on BSP_USING_SPI2
default n
config BSP_SPI2_RX_USING_DMA
bool "Enable SPI2 RX DMA"
depends on BSP_USING_SPI2
select BSP_SPI2_TX_USING_DMA
default n
endif
source "../libraries/HAL_Drivers/Kconfig"
endmenu

View File

@@ -105,3 +105,18 @@ INIT_BOARD_EXPORT(rt_usbd_class_list_init);
int rt_usbd_msc_class_register(void);
INIT_PREV_EXPORT(rt_usbd_msc_class_register);
int rt_hw_spi_init(void);
INIT_BOARD_EXPORT(rt_hw_spi_init);
#include "drv_spi.h"
static int init_spi_devices(void)
{
// PB11 -> CS1
rt_hw_spi_device_attach("spi2", "spi20", GPIOB, GPIO_PIN_11);
// PA1 -> CS2
rt_hw_spi_device_attach("spi2", "spi21", GPIOA, GPIO_PIN_1);
return 0;
}
INIT_DEVICE_EXPORT(init_spi_devices);

View File

@@ -339,7 +339,7 @@
<MiscControls></MiscControls>
<Define>__STDC_LIMIT_MACROS, USE_HAL_DRIVER, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, STM32F405xx, RT_USING_ARM_LIBC</Define>
<Undefine></Undefine>
<IncludePath>..\rt-thread\components\drivers\usb\usbdevice;..\rt-thread\components\utilities\ymodem;..\rt-thread\components\libc\compilers\common\extension;..\rt-thread\components\drivers\include;..\libraries\HAL_Drivers\CMSIS\Include;..\rt-thread\components\libc\posix\io\stdio;..\rt-thread\components\drivers\include;..\rt-thread\include;..\iap;..\rt-thread\components\libc\posix\io\poll;..\rt-thread\components\drivers\include;board;..\rt-thread\components\dfs\include;..\rt-thread\components\drivers\include;..\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Include;..\rt-thread\components\drivers\include;..\libraries\HAL_Drivers\drv_flash;board\CubeMX_Config\Inc;..\rt-thread\components\fal\inc;..\rt-thread\components\dfs\filesystems\elmfat;..\rt-thread\components\libc\cplusplus;..\rt-thread\libcpu\arm\cortex-m4;..\libraries\HAL_Drivers\config;..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Inc;..\rt-thread\components\libc\posix\ipc;..\rt-thread\components\libc\compilers\common\include;.;..\rt-thread\components\libc\compilers\common\extension\fcntl\octal;..\rt-thread\components\finsh;..\rt-thread\libcpu\arm\common;..\libraries\HAL_Drivers</IncludePath>
<IncludePath>..\rt-thread\components\drivers\usb\usbdevice;..\rt-thread\components\utilities\ymodem;..\rt-thread\components\libc\compilers\common\extension;..\rt-thread\components\libc\posix\io\poll;..\rt-thread\components\drivers\include;..\libraries\HAL_Drivers\CMSIS\Include;..\rt-thread\components\libc\posix\io\stdio;..\rt-thread\components\drivers\include;..\rt-thread\include;..\iap;..\rt-thread\components\drivers\spi;..\libraries\HAL_Drivers\config;board;..\rt-thread\components\dfs\include;..\rt-thread\components\drivers\include;..\libraries\STM32F4xx_HAL\CMSIS\Device\ST\STM32F4xx\Include;..\rt-thread\components\drivers\include;..\libraries\HAL_Drivers\drv_flash;board\CubeMX_Config\Inc;..\rt-thread\components\finsh;..\rt-thread\components\dfs\filesystems\elmfat;..\rt-thread\components\libc\cplusplus;..\rt-thread\libcpu\arm\cortex-m4;..\rt-thread\components\drivers\include;..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Inc;..\rt-thread\components\libc\posix\ipc;..\rt-thread\components\libc\compilers\common\include;..\rt-thread\components\drivers\include;.;..\rt-thread\components\libc\compilers\common\extension\fcntl\octal;..\rt-thread\components\fal\inc;..\rt-thread\libcpu\arm\common;..\libraries\HAL_Drivers</IncludePath>
</VariousControls>
</Cads>
<Aads>
@@ -429,14 +429,9 @@
<GroupName>CPlusPlus</GroupName>
<Files>
<File>
<FileName>cxx_Semaphore.cpp</FileName>
<FileName>cxx_crt.cpp</FileName>
<FileType>8</FileType>
<FilePath>..\rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</FilePath>
</File>
<File>
<FileName>cxx_Thread.cpp</FileName>
<FileType>8</FileType>
<FilePath>..\rt-thread\components\libc\cplusplus\cxx_Thread.cpp</FilePath>
<FilePath>..\rt-thread\components\libc\cplusplus\cxx_crt.cpp</FilePath>
</File>
<File>
<FileName>cxx_Mutex.cpp</FileName>
@@ -449,9 +444,14 @@
<FilePath>..\rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
</File>
<File>
<FileName>cxx_crt.cpp</FileName>
<FileName>cxx_Semaphore.cpp</FileName>
<FileType>8</FileType>
<FilePath>..\rt-thread\components\libc\cplusplus\cxx_crt.cpp</FilePath>
<FilePath>..\rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</FilePath>
</File>
<File>
<FileName>cxx_Thread.cpp</FileName>
<FileType>8</FileType>
<FilePath>..\rt-thread\components\libc\cplusplus\cxx_Thread.cpp</FilePath>
</File>
</Files>
</Group>
@@ -568,6 +568,16 @@
<FileType>1</FileType>
<FilePath>..\rt-thread\components\drivers\serial\serial.c</FilePath>
</File>
<File>
<FileName>spi_core.c</FileName>
<FileType>1</FileType>
<FilePath>..\rt-thread\components\drivers\spi\spi_core.c</FilePath>
</File>
<File>
<FileName>spi_dev.c</FileName>
<FileType>1</FileType>
<FilePath>..\rt-thread\components\drivers\spi\spi_dev.c</FilePath>
</File>
</Files>
</Group>
<Group>
@@ -608,6 +618,11 @@
<FileType>1</FileType>
<FilePath>..\libraries\HAL_Drivers\drv_sdio.c</FilePath>
</File>
<File>
<FileName>drv_spi.c</FileName>
<FileType>1</FileType>
<FilePath>..\libraries\HAL_Drivers\drv_spi.c</FilePath>
</File>
<File>
<FileName>drv_usart.c</FileName>
<FileType>1</FileType>
@@ -624,9 +639,9 @@
<GroupName>Fal</GroupName>
<Files>
<File>
<FileName>fal_partition.c</FileName>
<FileName>fal_rtt.c</FileName>
<FileType>1</FileType>
<FilePath>..\rt-thread\components\fal\src\fal_partition.c</FilePath>
<FilePath>..\rt-thread\components\fal\src\fal_rtt.c</FilePath>
</File>
<File>
<FileName>fal.c</FileName>
@@ -634,9 +649,9 @@
<FilePath>..\rt-thread\components\fal\src\fal.c</FilePath>
</File>
<File>
<FileName>fal_rtt.c</FileName>
<FileName>fal_partition.c</FileName>
<FileType>1</FileType>
<FilePath>..\rt-thread\components\fal\src\fal_rtt.c</FilePath>
<FilePath>..\rt-thread\components\fal\src\fal_partition.c</FilePath>
</File>
<File>
<FileName>fal_flash.c</FileName>
@@ -818,6 +833,11 @@
<FileType>1</FileType>
<FilePath>..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_qspi.c</FileName>
<FileType>1</FileType>
<FilePath>..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_pccard.c</FileName>
<FileType>1</FileType>
@@ -849,9 +869,9 @@
<FilePath>..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_crc.c</FileName>
<FileName>stm32f4xx_hal_spi.c</FileName>
<FileType>1</FileType>
<FilePath>..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c</FilePath>
<FilePath>..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_cryp_ex.c</FileName>
@@ -873,6 +893,11 @@
<FileType>1</FileType>
<FilePath>..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_crc.c</FileName>
<FileType>1</FileType>
<FilePath>..\libraries\STM32F4xx_HAL\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c</FilePath>
</File>
<File>
<FileName>stm32f4xx_hal_pwr.c</FileName>
<FileType>1</FileType>
@@ -958,11 +983,6 @@
<Group>
<GroupName>rt_usbd</GroupName>
<Files>
<File>
<FileName>mstorage.c</FileName>
<FileType>1</FileType>
<FilePath>..\rt-thread\components\drivers\usb\usbdevice\class\mstorage.c</FilePath>
</File>
<File>
<FileName>usbdevice_core.c</FileName>
<FileType>1</FileType>
@@ -973,6 +993,11 @@
<FileType>1</FileType>
<FilePath>..\rt-thread\components\drivers\usb\usbdevice\core\usbdevice.c</FilePath>
</File>
<File>
<FileName>mstorage.c</FileName>
<FileType>1</FileType>
<FilePath>..\rt-thread\components\drivers\usb\usbdevice\class\mstorage.c</FilePath>
</File>
</Files>
</Group>
<Group>

View File

@@ -111,6 +111,7 @@
#define RT_MMCSD_STACK_SIZE 1024
#define RT_MMCSD_THREAD_PREORITY 22
#define RT_MMCSD_MAX_PARTITION 16
#define RT_USING_SPI
/* Using USB */
@@ -302,6 +303,8 @@
#define BSP_USING_SDIO
#define BSP_USING_USBD
#define BSP_USING_ON_CHIP_FLASH
#define BSP_USING_SPI
#define BSP_USING_SPI2
/* Board extended module Drivers */

View File

@@ -967,7 +967,7 @@ int rt_hw_spi_init(void)
stm32_get_dma_info();
return rt_hw_spi_bus_init();
}
INIT_BOARD_EXPORT(rt_hw_spi_init);
// INIT_BOARD_EXPORT(rt_hw_spi_init);
#endif /* BSP_USING_SPI1 || BSP_USING_SPI2 || BSP_USING_SPI3 || BSP_USING_SPI4 || BSP_USING_SPI5 */
#endif /* RT_USING_SPI */