stm32 spi nss硬件模式配置参考程序

By: Ailson Jack
Date: 2020.11.27
个人博客:http://www.only2fire.com/
本文在我博客的地址是:http://www.only2fire.com/archives/124.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。

硬件平台:STM32F429

为了更加清楚的了解stm32 spi nss硬件模式的配置,这里以stm32f429为例,下面的程序就是spi nss硬件模式的配置参考程序,程序中使用了stm32f429标准库中的一些接口函数,该程序是经过测试可用的。

/**
 * @brief stm32f429 spi5 初始化
 *
 * @author Ailson Jack (www.only2fire.com)
 * @date 2020-09-01
 *
 * @note spi5 引脚:
 *       PF6 - NSS
 *       PF7 - SCK
 *       PF8 - MISO
 *       PF9 - MOSI
 *
 * 在spi主模式下,nss硬件模式设置为输出模式时,使能spi模块,外部nss引脚会输出低电平;
 * 禁止spi模块,外部nss引脚会输出高电平.
 */
void stm32f429_spi5_init(void)
{
    SPI_InitTypeDef  SPI_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    /* 使能 SPI5 GPIO 时钟 */
    RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOF, ENABLE);

    /* 使能 SPI5 时钟 */
    FLASH_SPI_CLK_INIT(RCC_APB2Periph_SPI5, ENABLE);

    /* 设置引脚复用 */
    GPIO_PinAFConfig(GPIOF, GPIO_PinSource6, GPIO_AF_SPI5); /* NSS */
    GPIO_PinAFConfig(GPIOF, GPIO_PinSource7, GPIO_AF_SPI5); /* SCK */
    GPIO_PinAFConfig(GPIOF, GPIO_PinSource8, GPIO_AF_SPI5); /* MISO */
    GPIO_PinAFConfig(GPIOF, GPIO_PinSource9, GPIO_AF_SPI5); /* MOSI */

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

    /* 配置 NSS 引脚 */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_Init(GPIOF, &GPIO_InitStructure);

    /* 配置 SCK 引脚 */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    GPIO_Init(GPIOF, &GPIO_InitStructure);

    /* 配置 MISO 引脚 */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_Init(GPIOF, &GPIO_InitStructure);

    /* 配置 MOSI 引脚 */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_Init(GPIOF, &GPIO_InitStructure);

    /* 在禁止 spi 时,才可以对 spi 进行配置 */
    SPI_Cmd(SPI5, DISABLE);

    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
    SPI_InitStructure.SPI_NSS = SPI_NSS_Hard; /* nss 硬件模式 */
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial = 7;
    SPI_Init(SPI5, &SPI_InitStructure);

    /* SPI nss 输出模式使能 */
    SPI_SSOutputCmd(SPI5, ENABLE);

    /* 使能 spi - nss 引脚输出低电平 */
    SPI_Cmd(SPI5, ENABLE);
}

如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^。

排版更好的内容见我博客的地址:http://www.only2fire.com/archives/124.html
注:转载请注明出处,谢谢!^_^

猜你喜欢

转载自blog.csdn.net/jackailson/article/details/110246573