STM32F429的SPI很特殊吗?

2019-03-23 17:50发布

做到STM32F429的SPI了,调了两天没调好

本来,STM32的SPI搞过很多的。这次开始用MX生成的东西,不工作(SCK等没有输出),后来又用以前可以工作的SPI代码,也不行,
没办法了,就看手册,一个寄存器一个寄存器地设置,结果仍然不工作。示波器看不到SPI的任何波形
这是现在设置的代码:


void SPI2_Init(void)
{
    RCC->APB1ENR |= 1 << 14U;       // SPI2   Clock EN
    GPIOB->MODER &= 0x00FFFFFF;
    GPIOB->MODER |= 0xA9000000;     // PB12 GPIO_O, PB13,14,15 =AF
    GPIOB->OTYPER &= 0xEFFF;        // PB12 Output push-pull
    GPIOB->PUPDR &= 0xFCFFFFFF;     // PB12 No pull-up, pull-down
    GPIOB->AFR[1] &= 0x000FFFFF;    // Clear PB13,14,15
    GPIOB->AFR[1] |= 0x55500000;    // PB13,14,15 =AF5

    __HAL_RCC_SPI2_CLK_ENABLE();

    SPI2->CR1 = 0;
    SPI2->CR2 = 0;

    while ( SPI2->SR & 0x80 ){}     // wait for not busy

    SPI2->CR1 = /* 1 << 11 |   Data frame format ######  16bit  */
                /* 0 << 7  |   Frame format, MSB transmitted first */
                3 << 3  |   /* Baud rate control, 1/16  ######### ------  APB1 37.5MHz , 1/16 = 2.343375MHz */
                1 << 2  ;   /* Master mode */
    SPI2->I2SCFGR = 0;      /* SPI mode  */

    SPI2->CR1 = 1<< 6 ;     /*   Enable     */
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
dontium
2019-03-24 11:36
huaiqiao 发表于 2017-2-7 12:02
在spi初始化之前,对spi所在的gpio有初始化,还有引脚复用功能打开了吗?

这是复用功能设置:
GPIOB->MODER |= 0xA9000000;     // PB12 GPIO_O, PB13,14,15 =AF
    GPIOB->OTYPER &= 0xEFFF;        // PB12 Output push-pull
    GPIOB->PUPDR &= 0xFCFFFFFF;     // PB12 No pull-up, pull-down
    GPIOB->AFR[1] &= 0x000FFFFF;    // Clear PB13,14,15
    GPIOB->AFR[1] |= 0x55500000;    // PB13,14,15 =AF5

一周热门 更多>