[转]关于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得到了外部信号的电平,实现了输入的功能。

原文地址:https://www.cnblogs.com/tubujia/p/10018058.html

时间: 2024-11-02 15:27:11

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

STM8L151 使用硬件SPI驱动W25Q16 Flash

SPI:有四根线的串行通信协议,允许与其他设备以半.全双工.同步.串行方式通信. MISO:主模式输入.从模式输出线 MOSI:主模式输出.从模式输入线 CLK:时钟线 NSS:从设备选择引脚,主设备标准IO驱动,并用来区分从设备 以STM8L 驱动SPI Flash W25Q16 为例说明记录下,使用STM8L 的SPI该注意哪些地方,以及如何简单驱动W25Q16. 华邦的W25Q16 SPI Flash芯片是采用SPI接口,至于该芯片的优缺点就不说了,STM8L上有一个硬件SPI,可以很方便

linux enc28j60网卡驱动移植(硬件spi和模拟spi)

本来想移植DM9000网卡的驱动,无奈硬件出了点问题,通过杜邦线链接开发板和DM9000网卡模块,系统上电,还没加载网卡驱动就直接崩溃了,找不到原因...刚好手上有一个enc28j60的网卡模块,于是就着手移植enc28j60的驱动. 其实移植enc28j60的驱动也十分简单,网上有现成的,只需要分配一些硬件资源即可. 由于我的内核版本老到掉牙,没有自带enc28j60的驱动,只能在网上找一个: enc28j60.c http://git.ti.com/ti-linux-kernel/ti-li

STM32 F4 SPI Accelerometer

STM32 F4 SPI Accelerometer

51学习笔记之以硬件spi与max6675通信实现K型热电偶测温

硬件:max6675  STC12C5A60S2 K型热电偶 功能:实现读取K型热电偶温度,并通过上位机打印出实际温度 难点:读取Max6675的数据是16位,而STC12系列单片机每次接收的数据为8位,如何通过硬件SPI实现直接读取Max6675的温度成为一难点.网上相关教程以及相关论文均是采用软件SPI模拟时序方式采集数据,故而通过STC12系列单片机自带的硬件SPI实现直接读取Max6675的数据具有实际研究意义. 代码: #include "reg51.h" #include

STM32 硬件UART接收超时检测设置

STM32 硬件UART接收超时检测设置 -----------------本文作者"智御电子",期待与电子爱好者交流学习.---------------- 应用场景 在uart应用中有时候需要进行双工通信,主机需要对从机的数据进行接收超时检测,例如modbus协议,主机在接收从机数据在3.5个字节时间后认为数据包接收完毕.那在这种情况下,一般的做法是设置一个定时器,在每接收到一个字节时清零定时器重新计数,直到定时器超过3.5个字节时间后触发中断即默认数据包接收完毕. 以上的定时器设置

STM32硬件IIC驱动设计(转)

源: STM32硬件IIC驱动设计 参考: STM32—硬件IIC主机通信 STM32’s I2C 硬件BUG引发的血案(qzm) 解决STM32 I2C接口死锁在BUSY状态的方法讨论 原文地址:https://www.cnblogs.com/LittleTiger/p/10142844.html

嵌入式物联网之SPI接口原理与配置

本实验采用W25Q64芯片 W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb.该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件.W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节.W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节.所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作. W25Q64的擦写周期多达10W次,可将数据

Linux系统通过com口配置交换机

1.Linux服务器配置交换机的环境 a.通过网络远程连接到Linux服务器或在本地使用linux服务器,用linux服务器的com口连接交换机的console口,在linux服务器上面安装minicom 软件配置交换机. b.如果没有安装minicom , yum安装方式如下: yum install -y minicom      安装com 串口通信工具,类似windows系统的超级终端. 安装完成,需配置才可使用minicom通过com口配置交换机: 2.配置minicom软件 a.配置

H3C设备console口配置本地用户验证

很简单的一个问题,既然有人提到了,那我就在这里记录一下. <H3C>sys System View: return to User View with Ctrl+Z. [H3C]local-user admin [H3C-luser-admin]password cipher 12345678 Updating user(s) information, please wait.... [H3C-luser-admin]service-type telnet level 3 [H3C-luser