[转]关于stm32硬件spi的miso口配置

Posted tubujia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转]关于stm32硬件spi的miso口配置相关的知识,希望对你有一定的参考价值。

在我们刚使用spi时,对于spi的io口配置可能会有一些疑惑吧,miso明明是一个输入口却配置成了复用推挽输出,是不是会有一点疑惑呢?

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     // 复用的推挽输出

MISO不是应该设置成为输入端口(GPIO_Mode_IN_FLOATING)才行的吗?是不是很疑惑呢?

其实配置为复用推挽输出也是可以正常工作的,只不过配置成浮空输入和上拉输入更容易理解。

具体产生这一问题的原因是:从功能上来说,MISO应该配置为输入模式才对,但为什么也可以配置为GPIO_Mode_AF_PP?实际上当一个GPIO端口配置为GPIO_Mode_AF_PP时,片上外设的复用功能输出信号会连接到输出控制电路,然后在端口上产生输出信号。但是在芯片内部,MISO是SPI模块的输入引脚,而不是输出引脚,也就是说“复用功能输出信号"根本不存在,所以"输出控制电路"就不能对外部产生输出信号,然而即使在复用推挽输出模式下,复用功能输入信号却与外部引脚之间相互连接,既MISO得到了外部信号的电平,实现了输入的功能。

技术分享图片

 



以上是关于[转]关于stm32硬件spi的miso口配置的主要内容,如果未能解决你的问题,请参考以下文章

STM32F0 SPI 环回 - MISO 上没有数据

stm32的两个spi互相通信,从spi正确接收主spi数据,但主spi收不到从spi数据(MISO一直为低),是何原因?

关于使用STM32 SPI3的一些总结

2个stm32怎么用spi通信

STM32F405 裸机 SPI 从机 - MISO 数据有时会混乱

STM32F1基于STM32CubeMX配置硬件SPI驱动nRF24L01数据收发