xiajintaord 发表于 2018-6-6 16:53:12

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;


toofree 发表于 2018-6-6 18:12:42

模式切换,随便搞。
只要不是在片选为低时就行。切换前把SPI关掉,SPI_Cmd(SPI1, DISABLE);。

xiajintaord 发表于 2018-6-7 08:49:06

本帖最后由 xiajintaord 于 2018-8-10 17:32 编辑

toofree 发表于 2018-6-6 18:12
模式切换,随便搞。
只要不是在片选为低时就行。切换前把SPI关掉,SPI_Cmd(SPI1, DISABLE);。 ...
验证了一下,确实是片选为低时做模式切换会有问题:
片选为低电平时,切换工作模式,立即进行 SPI 收发,发现数据都是无效的。

拉高片选再切换工作模式,就没有问题了。
页: [1]
查看完整版本: SPI 工作模式切换