chunyang
获得 4 次赞
帮助过124人
寄存器设置如下: /******************************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个周期的时钟,求教大神是何缘故?