请教:STM32H743的SPI通讯问题,时钟数量一直是32个时钟?

2019-07-20 06:02发布


寄存器设置如下:


/******************************SPI2初始化******************************************/
void SPI2_init(void)
{
        RCC->APB1LENR |= 1<<14;          //使能SPI2时钟,APB1=


        SPI2->CR1 = 0x0000;          //SPI禁止
        delay_ms(1);
        SPI2->CR1 |= (1<<12);  //SSI bit has an effect only when the SSM bit is set
        delay_ms(1);
        SPI2->CFG1 = (3<<28)|(15<<16)|(15<<0);   //16位数据,波特率=SPI master clock/16
        delay_ms(1);
        SPI2->CFG2 = (1<<26)|(0<<25)|(0<<24)|(0<<23)|(1<<22)|(0<<17);  //SSM置位,SCK空闲低,第1个时钟沿开始采样,先发MSB,Master,
        delay_ms(1);
        SPI2->CR1  |= 1; //使能SPI
        delay_ms(1);
        SPI2->CR1 |= (1<<9);//CSTART置位, CSTART can be set only when SPE=1 and MASTER=1.
        delay_ms(1);       
}





主函数调用程序如下:


                CSN_CLC;               
                while((SPI2->SR & 2)==0);
                SPI2->TXDR=0x5511;
                while((SPI2->SR & 1)==0);
                SPI1->RXDR;
                CSN_SET;





只是测试,没有接任何外设,发现SPI2的MOSI能正常发出数据,但是SCK发出时钟数为32个,更改SPI2->CFG1 的DSIZE设置不起作用,一直输出32个周期的时钟,这是怎么回事呢?调了一天,快崩溃了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。