如题: 程序运行过程中 SPI 工作模式切换需要注意什么?下面的操作有没有问题? //切换 SPI2 mode 11 SPI2->CR1 &= ~SPI_CR1_SPE; SPI2->CR1 |= SPI_CR1_CPOL|SPI_CR1_CPHA; SPI2->CR1 |= SPI_CR1_SPE; //中间为其它代码 ............. ............. //切换 SPI2 mode 01 SPI2->CR1 &= ~SPI_CR1_SPE; SPI2->CR1 ^= SPI_CR1_CPOL; SPI2->CR1 |= SPI_CR1_SPE; |
只要不是在片选为低时就行。切换前把SPI关掉,SPI_Cmd(SPI1, DISABLE);。
评分
查看全部评分
验证了一下,确实是片选为低时做模式切换会有问题:
片选为低电平时,切换工作模式,立即进行 SPI 收发,发现数据都是无效的。
拉高片选再切换工作模式,就没有问题了。
评分
查看全部评分