找回密码
 立即注册
查看: 193|回复: 1

QSPI的第3组切换(P4.7/P2^5/P2^6/P2^7/P4^6/P4^5)失败

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 15:22:39

6

主题

8

回帖

96

积分

注册会员

积分
96
发表于 2025-1-16 11:44:44 | 显示全部楼层 |阅读模式
#define QSPI_SW     0

#if (QSPI_SW == 2)
    sbit    CS          =   P4^0;
    sbit    SDI_IO0     =   P4^1;
    sbit    SDO_IO1     =   P4^2;
    sbit    SCK         =   P4^3;
    sbit    WP_IO2      =   P5^2;
    sbit    HLD_IO3     =   P5^3;
#endif
#if (QSPI_SW == 1)
    sbit    CS          =   P1^4;
    sbit    SDI_IO0     =   P1^5;
    sbit    SDO_IO1     =   P1^6;
    sbit    SCK         =   P1^7;
    sbit    WP_IO2      =   P1^3;
    sbit    HLD_IO3     =   P1^2;
#endif

#if (QSPI_SW == 0)
                sbit    CS          =   P4^7;
    sbit    SDI_IO0     =   P2^5;
    sbit    SDO_IO1     =   P2^6;
    sbit    SCK         =   P2^7;
    sbit    WP_IO2      =   P4^6;
    sbit    HLD_IO3     =   P4^5;

#endif
void QSPI_Init()
{
#if (QSPI_SW == 2)
    P4M0 |= 0x09;                   //设置CS,SCK为强推挽模式
    P4M1 &= ~0x09;  
    P4SR &= ~0x0f;                  //设置所有的QSPI口为快速模式
    P5SR &= ~0x0c;
    P4PU |= 0x0f;                   //使能所有的QSPI口的内部10K上拉电阻
    P5PU |= 0x0c;
    P4BP &= ~0x06;                  //使能QSPI的IO0~IO3数据硬件自动设置端口模式
    P5BP &= ~0x0c;
    P_SW4 = (P_SW4 & ~0x03) | 0x01; //使用QSPI的第2组切换(P4.0/P4.1/P4.2/P4.3/P5.2/P5.3)
#endif

#if (QSPI_SW == 1)
    P1M0 |= 0x90;               //设置CS,SCK为强推挽模式
    P1M1 &= ~0x90;
    P1SR &= ~0xfc;              //设置所有的QSPI口为快速模式
    P1PU |= 0xfc;               //使能所有的QSPI口的内部10K上拉电阻
    P1BP &= ~0x6c;              //使能QSPI的IO0~IO3数据硬件自动设置端口模式
    P_SW4 &= ~0x03;             //使用QSPI的第1组切换(PP1.2/P1.3/P1.4/P1.5/P1.6/P1.7)
#endif
       
#if (QSPI_SW == 0)
    P4M0 |= 0x80; P4M1 &= ~0x80; //设置CS,SCK为强推挽模式  P4^7;强推挽//P2^7;强推挽
    P2M0 |= 0x80; P2M1 &= ~0x80;
                P4SR &= ~0xe0;               //设置所有的QSPI口为快速模式
    P2SR &= ~0xe0;
                P2PU |= 0xe0;                //使能所有的QSPI口的内部10K上拉电阻
    P4PU |= 0xe0;
    P2BP &= ~0x60;              //使能QSPI的IO0~IO3数据硬件自动设置端口模式
    P4BP &= ~0x60;            
    P_SW4 = (P_SW4 & ~0x03) | 0x10;            //使用QSPI的第3组切换(P4.7/P2^5/P2^6/P2^7/P4^6/P4^5)
#endif

程序部分没有改动,只是在功能脚切换部分做了以上修改。但是在串行FLYSH编程器中无法运行。如果把#define QSPI_SW     0   切换到 #define QSPI_SW     1  就一切正常。是哪里出了问题吗?

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 15:22:39

6

主题

8

回帖

96

积分

注册会员

积分
96
发表于 2025-1-16 11:50:52 | 显示全部楼层
FLASH 我用的是GD25Q80,
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:47 , Processed in 0.125416 second(s), 51 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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