jnyyz 发表于 2023-10-7 22:26:43

关于STC32G SPI通信问题。

初始化:
void Init_SPI()                     
{
                //P_SW1=0x04;                               
                SPI_S1=0;SPI_S0=1;       //将 SPI 调整到 SS P22MOSI P23MISO P24SCLK P25
                SPDAT = 0;
                SPSTAT=0xc0;             //SPDAT.7和SPDAT.6写11,可以将中断标志清零。注意是写1才清零
                SPCTL = 0xd0;            //SSIG 1 开启主机模式 SPEN 1 SPI使能DORD 0 先发最高位   MSTR 1 主机模式、SPI输入时钟/4
}



uchar SPI_SendByte(uchar SPI_SendData)
{
        SPDAT= SPI_SendData;   // 将数据 写入
        while(!SPIF);                  //等待写入完成
        SPIF = 1;                        //清除中断标志,和写冲突标志,注意是对应位写1才能清零                       
        returnSPDAT;               //返回得到的数据
}


uint SPI_Flash_ReadID(void)
{
        uint Temp = 0;          
        SPI_FLASH_CS=0;                                  
        SPI_SendByte(0x90);//发送读取ID命令          
        SPI_SendByte(0x00); //前8位
        SPI_SendByte(0x00);//中8位
        SPI_SendByte(0x00); //后8位
        Temp|=SPI_SendByte(0xFF)<<8;

        Temp|=SPI_SendByte(0xFF);       
        SPI_FLASH_CS=1;
}
以上是一个SPI命令,24位地址发送。遇到的问题是,通过示波器观察,只收到了16位地址。而同样的程序,在STC8A8K64SA12上是对的。就是消失了一个SPI_SendByte(0x00);







jnyyz 发表于 2023-10-8 09:00:45

经过尝试,发现如下情况:
        SPI_SendByte(0x90);//发送读取ID命令          
        SPI_SendByte(0x01);
        SPI_SendByte(0x02);
        SPI_SendByte(0x07);
        SPI_SendByte(0x04);

        SPI_SendByte(0x90);//发送读取ID命令          
        SPI_SendByte(0x02);
        SPI_SendByte(0x08);
        SPI_SendByte(0x05);
        SPI_SendByte(0x03);

对比到的PROHEX差异如下(共计2行差异):
:107BC300CA79C2A27490120046740112004674026C
:107BC300CA79C2A274901200467402120046740865

:107BD3001200467407120046740412004674FF1222
:107BD3001200467405120046740312004674FF1225
但是,但是,如果把函数修改为:
        SPI_SendByte(0x90);//发送读取ID命令          
        SPI_SendByte(0x00);
        SPI_SendByte(0x00);
        SPI_SendByte(0x00);
        SPI_SendByte(0x00);
编译的文件再和1274的文件相比较,差异行出现了1576行,已经无法核对编译时这个位置出了什么问题。
即,结论是SPI_SendByte(0x00); 连续发送编译的文件有问题,但找不到问题所在。

神农鼎 发表于 2023-10-8 14:41:25








https://www.stcaimcu.com/forum.p ... d=323&extra=&page=1

页: [1]
查看完整版本: 关于STC32G SPI通信问题。