您的位置 首页 制造

关于STM32的SPI端口设置问题

在复用SPI总线时,必须先设置总线端口。读取其他ARM芯片(如NXP)一般很容易看出芯片的设置是否正确。不过对于STM32就容易让人迷惑了…

在复用SPI总线时,必须先设置总线端口。读取其他ARM芯片(如NXP)一般很简单看出芯片的设置是否正确。不过关于STM32就简单让人利诱了。例如,咱们在运用SPI总线进行通讯时,能够这样设置:

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端口的设置就会发生疑问了,MISO不是应该设置成为输入端口(GPIO_Mode_IN_FLOATING)才行的吗?

答题是必定的,关于STM32的这一类管脚来说(如USART_RX)即能够设置成为输入形式,也能够设置成为复用的推挽输出。其作业都是正常的,不过主张我们仍是设置成为输入端口的好,简单了解。

详细发生这一问题的原因是:从功用上来说,MISO应该装备为输入形式才对,但为什么也能够装备为GPIO_Mode_AF_PP?请看下面的GPIO复用功用装备框图。当一个GPIO端口装备为GPIO_Mode_AF_PP是,这个端口的内部结构框图如下:图中能够看到,片上外设的复用功用输出信号会连接到输出控制电路,然后在端口上发生输出信号。但是在芯片内部,MISO是SPI模块的输入引脚,而不是输出引脚,也就是说图中的”复用功用输出信号”底子不存在,因而”输出控制电路”不能对外发生输出信号。而另一方面看,即便在GPIO_Mode_AF_PP形式下,复用功用输入信号却与外部引脚之间相互连接,既MISO得到了外部信号的电平,完成了输入的功用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/275974.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部