关于SPI的引脚GPIO模式使用问题

wyy123   2010-12-24 09:14 楼主
                                 参照参考手册上的表22,SPI在做全双工模式中的主模式时,MISO的GPIO模式已更改配置为浮空输入或者带上拉输入,但是为什么很多例程中都配置为复用推挽输出,可是程序运行的结果也都正确呢?

回复评论 (9)

                                 记得好像他会自己配置,SPI功能打开初始化之后IO操作就无效了
点赞  2010-12-24 10:55
                                 这是因为配置为复用推挽输出时,实际上输出驱动器的内部另一端没有连接到功能模块,所以这个输出部分没有作用,只有引脚的输入功能起作用。
点赞  2010-12-24 10:58


还是不能完全明白版主的意思,翻看了下用户手册,看到了复用功能配置的图17,输出驱动器字配置为复用功能的时候,是没有连接到输出数据寄存器,但是连接到了复用功能输出啊。是不是配置为推挽式复用功能输出模式,输入信号就会变成复用功能输入,进入片上外设?
这样说,配置为推挽复用输出的时候,实际上也是有输入的,等于就将这个I/o配置为了推挽复用功能,既配置了输出也配置了输入?那外设的GPIO是不是可以一律配置为推挽输出就行了?那手册上的那个外设GPIO配置表,有何意义?

谢谢版主的回答
点赞  2010-12-24 11:15
                                 你说的"手册上的那个外设GPIO配置表",是哪个?
点赞  2010-12-24 11:53


第8.1.11那个表
点赞  2010-12-24 14:55

就这

1.jpg (48.01 KB)

点赞  2010-12-24 14:57
版主在三楼所说,“没有连接到功能模块”指的是图中的2处吗?“只有引脚的输入起作用”指的是1处的复用输入功能吗?
此图中,是不是表明,只要配置为复用推挽输出模式,根据外设的需要一样有可能有输入进来?

2.jpg (47.78 KB)

点赞  2010-12-24 15:03
如果看看GPIO配置为Alternate function时的框图,你就明白了。

当MISO的GPIO模式配置为复用推挽输出时,因为SPI模块的MISO信号在主模式时是输入而没有输出,因此下图中的Alternate Function Output信号线上没有信号,所以推挽输出的2个MOS管都是处于关闭状态,不会影响外部信号。


GPIO配置为复用推挽输出时,Alternate Function Input始终是有效的,所以SPI模块的MISO信号可以正确收到外来的信号。

STM32_AF_PP.GIF (14.61 KB)

点赞  2010-12-24 15:11


明白了,谢谢版主的详细解答
点赞  2010-12-24 16:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复