这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 【STCAi8051U】使用Ai8051U的SPI外设读写W25Q128

共2条 1/1 1 跳转至

【STCAi8051U】使用Ai8051U的SPI外设读写W25Q128

专家
2025-09-17 14:28:00   被打赏 50 分(兑奖)     打赏

前次在学习使用Ai8051U的SPI外设读写W25Q128时,没有成功。在大佬jobs的提示下,今天重新捡起来。参考学习其它单片机的驱动模式,终于弄明白失败的原因了。

SPI的工作模式,根据CPOL和CPHA的设置,有四个模式。在驱动W25Q128的时候,应该设置CPOL=1,CPHA=1,也就是说让SCK平时处于高电平,在SCK脉冲的下降沿采样数据。

按照这个模式,SPI的初始化程序:


/************************************************
初始化SPI接口
入口参数: 无
  返回值: 无
************************************************/
void spi_init(void) {
    SS = 1;
    
    SPCTL = 0x50;      //使能 SPI 主机模式, 
    
    //00: P1.4 P1.5 P1.6 P1.7, 01: P2.4 P2.5 P2.6 P2.7, 10: P4.0 P4.1 P4.2 P4.3, 11: P3.5 P3.4 P3.3 P3.2
    SPI_S1 = 0;     //01: P2.4(SS)、P2.5(MOSI)、P2.6(MISO)、P2.7(SCK)
    SPI_S0 = 1;    
    
    // CPOL=1(SCK平时为高),CPHA=1(下降沿有效),
    CPOL=1;
    CPHA=1;

    SPSTAT = 0xc0; //清中断标志
    //ESPI = 1; //使能 SPI 中断
        
}

程序运行起来后,从逻辑分析仪得到的读取数据的时序信号:

图片1.png

可以看到修改了设置之后,在发送完MOSI数据后,在SCK的最后一个脉冲的下降沿开始读取来自Flash的数据(MISO)。读出来的数据与预先在Flash中设置的数据是一致的。

图片2.png

程序的Log输出:

图片3.png





关键词: 菜鸟学单片机     Ai8051U     W25Q128     SP    

院士
2025-09-17 15:08:58     打赏
2楼

这就是玩硬件嘛!

在反复失败的情况下,才得到一次成功。



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]