stm32的SPI初始化
扫描二维码
随时随地手机看文章
1 void SPIx_Init(void)
2 {
3 RCC->APB2ENR|=1<<2; //PORTA时钟使能
4 RCC->APB2ENR|=1<<12; //SPI1时钟使能
5
6 //这里只针对SPI口初始化
7 GPIOA->CRL&=0X000FFFFF;
8 GPIOA->CRL|=0XBBB00000;//PA5.6.7复用推挽输出
9 //GPIOA->ODR|=0X7<<5; //PA5.6.7上拉,应该不起作用,因为此模式
10 SPI1->CR1&=~(1<<6);//关闭SPI来配置某些位
11
12 SPI1->CR1&=~(1<<15);//1:双线双向模式 0:单向双向模式
13 SPI1->CR1&=~(1<<13);//1:启动CRC校验 0:关闭CRC校验 只能在SPE=0时改写,否则出错。只能在全双工模式使用
14 SPI1->CR1|=0<<11;//1:16bit数据格式 0:8bit数据格式 只能在SPE=0时改写,否则出错。
15 SPI1->CR1|=0<<10;//1:全双工模式 0:只接收模式
16 SPI1->CR1|=1<<9; //1:启用软件从设备管理 0:禁止软件从设备管理 当为1时,NSS电平由SSI位决定
17 SPI1->CR1|=1<<8;//
18 SPI1->CR1|=0<<7; //1:先发送MSB 0:先发送LSB
19 SPI1->CR1|=0<<3//5~3bit:分频系数 0~7 分频系数为Fpclk/2、4、8、16、32、64、128、256
20 SPI1->CR1|=1<<2;//1:主设备 0:从设备
21 SPI1->CR1|=1<<1; //CPOL 1:空闲时SCK为1 0:空闲时SCK=0
22 SPI1->CR1|=1<<0; //CPHA 1:数据采样从第二个时间边沿开始 0:数据采样从第一个时钟边沿开始
23 SPI1->CR1|=1<<6; //1:开启SPI 0:关闭SPI
24 }