硬汉嵌入式论坛

 找回密码
 立即注册
查看: 294|回复: 2
收起左侧

[有问必答] 请教。大多数SPI读写,都是普通IO模拟的CS。那么用NSS管脚配置成普通IO模拟CS可以么?

[复制链接]

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2024-3-19 19:27:50 | 显示全部楼层 |阅读模式
本帖最后由 unsv29 于 2024-3-19 20:48 编辑

一主一从,STM32F407的SPI2作为主,铁电FRAM为从。
    SPI_InitStructure.SPI_NSS               = SPI_NSS_Soft;





请教 铁电的CS脚连接到STM32F407的PI0也就是SPI2_NSS脚,把SPI2_NSS脚配成普通I/O,可以么?

void SPI2_Master_Init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    SPI_InitTypeDef   SPI_InitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,  ENABLE);
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI, ENABLE);
        
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_Init(GPIOI, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_Init(GPIOI, &GPIO_InitStructure);

    GPIO_ResetBits(GPIOI, GPIO_Pin_0);

    GPIO_PinAFConfig(GPIOI, GPIO_PinSource1, GPIO_AF_SPI2);
    GPIO_PinAFConfig(GPIOI, GPIO_PinSource2, GPIO_AF_SPI2);
    GPIO_PinAFConfig(GPIOI, GPIO_PinSource3, GPIO_AF_SPI2);

//         RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE);
//         RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, 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_High;
    SPI_InitStructure.SPI_CPHA              = SPI_CPHA_2Edge;
    SPI_InitStructure.SPI_NSS               = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
    SPI_InitStructure.SPI_FirstBit          = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial     = 7;
    SPI_Init(SPI2, &SPI_InitStructure);

    SPI_Cmd(SPI2, ENABLE);
}



下载.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2024-3-20 09:16:04 | 显示全部楼层

回帖奖励 +10 个金币

可以的,没问题。

这个NSS管脚,既可以配置成硬件片选方式,也可以配置成普通GPIO来软件控制。
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-3-21 19:47:32 | 显示全部楼层
eric2013 发表于 2024-3-20 09:16
可以的,没问题。

这个NSS管脚,既可以配置成硬件片选方式,也可以配置成普通GPIO来软件控制。

谢谢。这样我心里就有普了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 20:23 , Processed in 0.272576 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表