wolfgd 发表于 2023-6-6 14:13:45

STC32G通过SPI驱动MB85RS64V出错!!!


通过SPI驱动MB85RS64V,SPI口初始化如下:

void SPI_config(void)
{
        SPI_InitTypeDef                SPI_InitStructure;
        SPI_InitStructure.SPI_Enable    = ENABLE;                          //SPI启动    ENABLE, DISABLE
        SPI_InitStructure.SPI_SSIG      = ENABLE;                                //片选位   ENABLE, DISABLE
        SPI_InitStructure.SPI_FirstBit= SPI_MSB;                                //移位方向   SPI_MSB, SPI_LSB
        SPI_InitStructure.SPI_Mode      = SPI_Mode_Master;                //主从选择   SPI_Mode_Master, SPI_Mode_Slave
        SPI_InitStructure.SPI_CPOL      = SPI_CPOL_High;                        //时钟相位   SPI_CPOL_High,   SPI_CPOL_Low
        SPI_InitStructure.SPI_CPHA      = SPI_CPHA_2Edge;                //数据边沿   SPI_CPHA_1Edge,SPI_CPHA_2Edge
        SPI_InitStructure.SPI_Speed   = SPI_Speed_4;                        //SPI速度    SPI_Speed_4, SPI_Speed_8, SPI_Speed_16, SPI_Speed_32/SPI_Speed_2
        SPI_Init(&SPI_InitStructure);
        NVIC_SPI_Init(DISABLE,Priority_3);                //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
}


当写入时,如果操作 SS=0片选时,SPIF就一直不为0

                SPDAT = dat;
                while(SPIF == 0);
                SPI_ClearFlag();






wolfgd 发表于 2023-6-6 14:27:00

资料描述与SS管脚无关,但只要SS为0 就卡住了

梁工 发表于 2023-6-6 16:15:00

SPI主机发送与SS无关,不管你是否拉低SS脚,发送都会完成。
页: [1]
查看完整版本: STC32G通过SPI驱动MB85RS64V出错!!!