SPI 工作模式切换
如题: 程序运行过程中 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);。 本帖最后由 xiajintaord 于 2018-8-10 17:32 编辑
toofree 发表于 2018-6-6 18:12
模式切换,随便搞。
只要不是在片选为低时就行。切换前把SPI关掉,SPI_Cmd(SPI1, DISABLE);。 ...
验证了一下,确实是片选为低时做模式切换会有问题:
片选为低电平时,切换工作模式,立即进行 SPI 收发,发现数据都是无效的。
拉高片选再切换工作模式,就没有问题了。
页:
[1]