SDIO_InitStructure.SDIO_ClockDiv = SDIO_TRANSFER_CLK_DIV;。
SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising;。
SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Disable;。
SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;。
SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_1b;。
SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;。
SDIO_Init(&SDIO_InitStructure);。
这个是F4的初始化流程,你主要对比芯片手册和固件库就知道该怎么配置了,或者去网上搜索相关文档。
SDIO速度较快、SPI速度较慢。
但STM32的SDIO不好用,特别是4BIT的方式,用1BIT的方式倒是可以,速度大概2M字节每秒。用SPI比较稳定,速度在1-2M字节每秒之间,适合对速度要求不高的情况。
SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如AT91RM9200。
SDIO在SD标准上定义了一种外设接口。目前,SDIO主要有两类应用--可移动和不可移动。可移动设备作为Palm和Windows Mobile的扩展设备,用来增加蓝牙、照相机、GPS和802.11b功能。不可移动设备遵循相同的电气标准,但不要求符合物理标准。某些手机内包含通过SDIO连接CPU的802.11芯片。此举将"珍贵"的I/ O管脚资源用于更重要的功能。
不是4个端口,而是用4比特的方式来传输数据。其实SD都支持SPI方式,这种方式下,只有1个bit来传输,会很慢,因此4bit就快了。具体提现在STM32因为有内部SD控制器,因此他可以支持这种4bits模式。就是你说的diskio.c文件中的read/write会利用这个内部的SD控制器来读写,当然也有可能封装初成了函数。具体的SD的资料,一个是看STM32的SD部分的手册,一个是你要找到SD命令字。
这是F4系列中指定gpio复用功能的函数。在单片机中经常一个引脚存在多个功能,如下图:
引脚41同时具有PA8、SCL3、T1CH1三种功能,假如我要使用TIM1定时器功能的话,那么在配置gpio的输出模式的时候就要配置为复用功能AF,每个AF在又存在多个选择:
根据上图可以查到AF2与TIM1相对应,那么我们就可以这样连接:
GPIO_PinAFConfig(PWM_GPIO_PORT, GPIO_PinSource8, GPIO_AF_TIM1);。
swim接口 3.3v,sdio,gnd,reset四个信号。通过stlink就能实现与stm烧写。