在做STM32F42XX系列STM32 SPI通讯时,SPI3的SCK引脚时钟无法看到时钟波形,工程是从SPI5的工程改的,初始化配置代码如下:
SPI_HandleTypeDef SPI3_Handler; //SPI¾ä±ú
void SPI3_Init(void)
{
SPI3_Handler.Instance=SPI3; //SP3
SPI3_Handler.Init.Mode=SPI_MODE_MASTER;
SPI3_Handler.Init.Direction=SPI_DIRECTION_2LINES;
SPI3_Handler.Init.DataSize=SPI_DATASIZE_16BIT;
SPI3_Handler.Init.CLKPolarity=SPI_POLARITY_LOW;
SPI3_Handler.Init.CLKPhase=SPI_PHASE_2EDGE;
SPI3_Handler.Init.NSS=SPI_NSS_SOFT;
SPI3_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256;
SPI3_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB;
SPI3_Handler.Init.TIMode=SPI_TIMODE_DISABLE;
SPI3_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;
SPI3_Handler.Init.CRCPolynomial=7;
HAL_SPI_Init(&SPI3_Handler);
__HAL_SPI_ENABLE(&SPI3_Handler);
}
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_SPI3_CLK_ENABLE();
//PC10,11,12
GPIO_Initure.Pin=GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
GPIO_Initure.Mode=GPIO_MODE_AF_PP;
GPIO_Initure.Pull=GPIO_PULLUP;
GPIO_Initure.Speed=GPIO_SPEED_FAST;
GPIO_Initure.Alternate=GPIO_AF5_SPI3;
HAL_GPIO_Init(GPIOC,&GPIO_Initure);
}
看起来配置没有问题,百思不得其解!
经过查阅资料发现引脚的复用错了,GPIO_AF5_SPI3这里有问题,映射表如下:
细心的可以发现,有GPIO_AF5_SPI3、GPIO_AF6_SPI3两种映射,到底使用哪一种才正确呢?查阅STM32F4XX中文手册,找到180页GPIO映射表,如下:
很明显SPI3使用的是AF6,所以此处改为GPIO_AF6_SPI3,这样就可以正确的输出了!
上一篇:STM32F103/302 SPI3 接口使用例程
下一篇:STM32的SPI1、SPI2、SPI3初始化及RF1101的应用(标准库与HAL库)
推荐阅读最新更新时间:2024-11-12 19:29
设计资源 培训 开发板 精华推荐
- 200W大功率甲乙类功放
- DC1863A,使用 LTC3621、17V、1A 单片同步降压稳压器的演示板
- LTC6990IDCB#TRMPBF 正交正弦波振荡器的典型应用。压控频率范围为 5Hz 至 20kHz,具有 1VP-P 恒定输出幅度
- LTM9010-14 演示板,14 位,105Msps,1.8V 八路串行 ADC,1MHz <艾因< 70MHz
- NCL30486LED1GEVB:NCL30486 60W 评估板
- EVAL-ADUM7643EBZ,用于评估 iCoupler ADuM7642 6 通道数字隔离器的评估板
- WS2813 WLED 固定缓冲器
- 使用 ON Semiconductor 的 CS-5120 的参考设计
- LT6656BIDC-2.5、2.5V ADC 电压基准和桥式励磁电源的典型应用
- 基于STSPIN840的双刷直流电动机驱动器扩展板,用于STM32 Nucleo