如何让STM32 SPI传输结束后MOSI引脚始终保持低电平
SPI信号引脚说明
- 蓝色 : MOSI
- 天蓝色 : CLK

问题
在SPI传输过程中,若MOSI数据的最后一位为高电平,传输结束后该引脚会持续保持高电平。请问有什么方法能让SPI传输结束后MOSI引脚输出低电平?
解决方法
追加空传输字节
完成目标数据传输后,额外发送一个0x00字节。这样传输的最后一位是低电平,SPI控制器会自动保持MOSI为低,操作简单,无需额外硬件改动。切换GPIO模式拉低
传输结束后,把MOSI引脚从SPI外设模式切换成普通GPIO输出模式,直接输出低电平。比如STM32用HAL_GPIO_WritePin()配合引脚复用配置,Arduino用pinMode(MOSI_PIN, OUTPUT)加digitalWrite(MOSI_PIN, LOW)即可实现。配置SPI空闲电平
部分MCU的SPI控制器支持设置空闲状态下的引脚电平。查芯片手册找到对应控制寄存器,把MOSI的空闲电平配置为低,这种方法不用额外传数据,效率更高,但要看硬件是否支持。硬件下拉电阻
软件方案受限的话,在MOSI引脚和地之间接10kΩ左右的下拉电阻。注意电阻不能太小,避免影响正常传输时的信号强度,同时要确认MCU引脚驱动能力足够。
内容的提问来源于stack exchange,提问作者Min
相关产品推荐
相关产品推荐


