ImageVerifierCode 换一换
格式:DOCX , 页数:62 ,大小:32.72KB ,
资源ID:24462090      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24462090.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32F10xSDIO.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32F10xSDIO.docx

1、STM32F10xSDIOSDIO库函数入下表:No库函数名作用操作对象1SDIO_DeInit初始化SDIO外设寄存器8个寄存器的的初始值2SDIO_Init初始化SDIO_InitStruct结构体SDIO-CLKCR配置CLKCR3SDIO_StructInit初始化SDIO_InitStruct内的结构成员配置CLKCR寄存所需要的参数缺省值4SDIO_ClockCmd开启/关闭SDIO时钟*(vu32 *) CLKCR_CLKEN_BB配置CLKCR5SDIO_SetPowerState设置电源控制状态SDIO-POWERPOWER操作6SDIO_GetPowerState读取电源控

2、制状态SDIO-POWER7SDIO_ITConfig开启或关闭中断SDIO-MASK8SDIO_DMACmd开启或关闭 DMA *(vu32 *) DCTRL_DMAEN_BB9SDIO_SendCommand初始化SDIO_CmdInitStruct并发送配置命令SDIO-ARG/ CMD10SDIO_CmdStructInit为SDIO_CmdInitStruct结构体填充缺省值11SDIO_GetCommandResponse返回命令反馈信息(命令索引值)SDIO-RESPCMD12SDIO_GetResponse返回上次从SD卡传回的命令响应*(vu32 *)(SDIO_RESP_A

3、DDR + SDIO_RESP)13SDIO_DataConfig初始化SDIO_DataInitStruct以设置数据路径SDIO-DTIMER/ DLEN/ DCTRL14SDIO_DataStructInit初始化SDIO_DataInitStruct结构体的成员15SDIO_GetDataCounter返回待传输的数据字节数SDIO-DCOUNT16SDIO_ReadData从Rx FIFO读出已收到的数据SDIO-FIFO17SDIO_WriteData向Tx FIFO写入待发送的数据SDIO-FIFO18SDIO_GetFIFOCount返回FIFO内的(发送或接受的)数据字数SD

4、IO-FIFOCNT19SDIO_StartSDIOReadWait开启读等待操作*(vu32 *) DCTRL_RWSTART_BBDCTRL的读位操作20SDIO_StopSDIOReadWait关闭读等待操作*(vu32 *) DCTRL_RWSTOP_BB21SDIO_SetSDIOReadWaitMode设置两个插入读等待间隔之一的选项*(vu32 *) DCTRL_RWMOD_BB22SDIO_SetSDIOOperation使能或失能SDIO模式*(vu32 *) DCTRL_SDIOEN_BBDCTRL23SDIO_SendSDIOSuspendCmd使能或失能SDIO模式暂停

5、命令(正发送)*(vu32 *) CMD_SDIOSUSPEND_BB24SDIO_CommandCompletionCmd使能或失能命令完成信号*(vu32 *) CMD_ENCMDCOMPL_BB25SDIO_CEATAITCmd使能或失能CE-ATA中断*(vu32 *) CMD_NIEN_BB26SDIO_SendCEATACmd发送CE-ATA命令(CMD61)*(vu32 *) CMD_ATACMD_BB27SDIO_GetFlagStatus检查SDIO的标志位是否已被设置SDIO-STA28SDIO_ClearFlag清除SDIO挂起标志位SDIO-ICR29SDIO_GetI

6、TStatus检查SDIO中断是已否发生SDIO-STA30SDIO_ClearITPendingBit清除SDIO中断挂起位SDIO-ICR/*【01】函数SDIO_DeInit * Function Name : SDIO_DeInit* Description : Deinitializes the SDIO peripheral registers to their default reset values.* Input : None* Output : None* Return : None*/void SDIO_DeInit(void) SDIO-POWER = 0x000000

7、00; SDIO-CLKCR = 0x00000000; SDIO-ARG = 0x00000000; SDIO-CMD = 0x00000000; SDIO-DTIMER = 0x00000000; SDIO-DLEN = 0x00000000; SDIO-DCTRL = 0x00000000; SDIO-ICR = 0x00C007FF;/清除所有中断标志 SDIO-MASK = 0x00000000;/*【02】函数SDIO_Init* Function Name : SDIO_Init* Description : Initializes the SDIO peripheral acc

8、ording to the specified parameters in the SDIO_InitStruct.* Input : SDIO_InitStruct : pointer to a SDIO_InitTypeDef structure that contains the configuration information for the SDIO peripheral.* Output : None* Return : None*/SDIO_Init的结构体如下:typedef struct u8 SDIO_ClockDiv;/8bit分频系数 u32 SDIO_ClockEd

9、ge; u32 SDIO_ClockBypass; u32 SDIO_ClockPowerSave; u32 SDIO_BusWide; u32 SDIO_HardwareFlowControl; SDIO_InitTypeDef;上述结构体的参数设置如下: Table.2-1 SD时钟相位选择参数SDIO_ClockEdge的值描述/SDIO_CLKCR.NEGEDGE/bit13#defineSDIO_ClockEdge_RisingSDIOCLK的上升沿产生SDIO_CK0x00000000SDIO_ClockEdge_FallingSDIOCLK的下降沿产生SDIO_CK0x00002

10、000 Table.2-2 SD时钟旁路选择参数SDIO_ClockBypass的值描述/SDIO_CLKCR. Bypass/bit10#defineSDIO_ClockBypass_DisableSDIOCLK分频驱动SDIO_CK输出0x00000000根据CLKDIV7:0分频SDIO_ClockBypass_EnableSDIOCLK直接驱动SDIO_CK输出0x00000400 Table.2-3 SD省电配置参数SDIO_ClockPowerSave的值描述/SDIO_CLKCR. Bypass/bit9#defineSDIO_ClockPowerSave_Disable始终输出

11、SDIO_CK0x00000000SDIO_ClockPowerSave_Enable仅在总线活动时才输出SDIO_CK0x00000200 Table.2-4 SD宽总线模式使能参数SDIO_BusWide的值描述/SDIO_CLKCR.WIDBUS1:0#definebit12-11SDIO_BusWide_1b1位总线模式,使用SDIO_D00x00000000默认SDIO_BusWide_4b4位总线模式,使用SDIO_D3:00x00000800SDIO_BusWide_8b8位总线模式,使用SDIO_D7:00x00001000 Table.2-5 SD宽总线模式使能参数SDIO_

12、 HardwareFlowControl的值描述/SDIO_CLKCR. HWFC_EN/bit14#defineSDIO_HardwareFlowControl_Disable关闭硬件流控制0x00000000SDIO_HardwareFlowControl_Enable开启硬件流控制0x00004000 【注】函数在被调用之前,必须对结构体进行具体数值初始化。函数原型如下:void SDIO_Init(SDIO_InitTypeDef* SDIO_InitStruct) u32 tmpreg = 0; /* Check the parameters */ assert_param(IS_S

13、DIO_CLOCK_EDGE(SDIO_InitStruct-SDIO_ClockEdge); assert_param(IS_SDIO_CLOCK_BYPASS(SDIO_InitStruct-SDIO_ClockBypass); assert_param(IS_SDIO_CLOCK_POWER_SAVE(SDIO_InitStruct-SDIO_ClockPowerSave); assert_param(IS_SDIO_BUS_WIDE(SDIO_InitStruct-SDIO_BusWide); assert_param(IS_SDIO_HARDWARE_FLOW_CONTROL(SDI

14、O_InitStruct-SDIO_HardwareFlowControl); /*- SDIO CLKCR Configuration -*/ /* Get the SDIO CLKCR value */ tmpreg = SDIO-CLKCR; /* Clear CLKDIV, PWRSAV, BYPASS, WIDBUS, NEGEDGE, HWFC_EN bits */ tmpreg &= CLKCR_CLEAR_MASK;/ CLKCR_CLEAR_MASK = 0xFFFF8100,其中CLKEN位保持不变更。 /* Set CLKDIV bits according to SDI

15、O_ClockDiv value */ /* Set PWRSAV bit according to SDIO_ClockPowerSave value */ /* Set BYPASS bit according to SDIO_ClockBypass value */ /* Set WIDBUS bits according to SDIO_BusWide value */ /* Set NEGEDGE bits according to SDIO_ClockEdge value */ /* Set HWFC_EN bits according to SDIO_HardwareFlowCo

16、ntrol value */ tmpreg |= (SDIO_InitStruct-SDIO_ClockDiv | SDIO_InitStruct-SDIO_ClockPowerSave | SDIO_InitStruct-SDIO_ClockBypass | SDIO_InitStruct-SDIO_BusWide | SDIO_InitStruct-SDIO_ClockEdge | SDIO_InitStruct-SDIO_HardwareFlowControl); /* Write to SDIO CLKCR */ SDIO-CLKCR = tmpreg;/*【03】函数SDIO_Str

17、uctInit * Function Name : SDIO_StructInit* Description : Fills each SDIO_InitStruct member with its default value.* Input : SDIO_InitStruct: pointer to an SDIO_InitTypeDef structure which will be initialized.* Output : None* Return : None*/对SDIO-CLKCR涉及到的参数结构体(SDIO_InitTypeDef)进行缺省值注入。函数原型如下:void SD

18、IO_StructInit(SDIO_InitTypeDef* SDIO_InitStruct) /* SDIO_InitStruct members default value */ SDIO_InitStruct-SDIO_ClockDiv = 0x00;/不分频 SDIO_InitStruct-SDIO_ClockEdge = SDIO_ClockEdge_Rising;/上升沿触发产生SDIO_CK SDIO_InitStruct-SDIO_ClockBypass = SDIO_ClockBypass_Disable;/关闭旁路,直接用SDIOCLK驱动SDIO_CK输出 SDIO_I

19、nitStruct-SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;/关闭节能功能,时钟输出SDIO_CK SDIO_InitStruct-SDIO_BusWide = SDIO_BusWide_1b;/默认状态下,总线宽度只占1位。 SDIO_InitStruct-SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;/关闭硬件流控制/*【04】函数SDIO_ClockCmd * Function Name : SDIO_ClockCmd* Description : Ena

20、bles or disables the SDIO Clock.* Input : NewState: new state of the SDIO Clock. This parameter can be: ENABLE or DISABLE.* Output : None* Return : None*/void SDIO_ClockCmd(FunctionalState NewState) /* Check the parameters */ assert_param(IS_FUNCTIONAL_STATE(NewState); *(vu32 *) CLKCR_CLKEN_BB = (u3

21、2)NewState;SDIO-CLKCR的CLKEN位地址定义如下:/* Alias word address of CLKEN bit */#define CLKCR_OFFSET (SDIO_OFFSET + 0x04)#define CLKEN_BitNumber 0x08#define CLKCR_CLKEN_BB (PERIPH_BB_BASE + (CLKCR_OFFSET * 32) + (CLKEN_BitNumber * 4)其中:【1】#define PERIPH_BB_BASE (u32)0x42000000)【2】#define SDIO_OFFSET (SDIO_B

22、ASE - PERIPH_BASE) #define SDIO_BASE (PERIPH_BASE + 0x18000)/即SDIO_OFFSET = 0x18000最终结果是:&CLKCR_CLKEN_BB = 0x424B 00E8/*【05】函数SDIO_SetPowerState * Function Name : SDIO_SetPowerState* Description : Sets the power status of the controller.* Input : SDIO_PowerState: new state of the Power state. * This

23、 parameter can be one of the following values:* - SDIO_PowerState_OFF* - SDIO_PowerState_ON* Output : None* Return : None*/POWER寄存器的参数设置如下: Table5-1 SDIO的电源状态配置参数SDIO_PowerState值描述/SDIO-POWER.bit1-0#define备注SDIO_PowerState_OFF电源关闭,卡的时钟停止0x00000000PWRCTRL1:0。另:0x1保留SDIO_PowerState_ON上电状态,卡的时钟开启0x0000

24、0003SDIO_PowerState_UP保留的上电状态0x00000002本函数没有用到其函数原型如下:void SDIO_SetPowerState(u32 SDIO_PowerState) /* Check the parameters */ assert_param(IS_SDIO_POWER_STATE(SDIO_PowerState);/只能输入On和Off两个状态,Up状态不配置 SDIO-POWER &= PWR_PWRCTRL_MASK;/ 0xFFFFFFFC,清除PWRCTRL1:0控制位 SDIO-POWER |= SDIO_PowerState; /写入新控制方式/

25、*【06】函数SDIO_GetPowerState * Function Name : SDIO_GetPowerState* Description : Gets the power status of the controller.* Input : None* Output : None* Return : Power status of the controller. The returned value can* be one of the following:* - 0x00: Power OFF* - 0x02: Power UP* - 0x03: Power ON */u32

26、SDIO_GetPowerState(void) return (SDIO-POWER & (PWR_PWRCTRL_MASK); / 0xFFFFFFFC,读出PWRCTRL1:0控制位配置:0b00、0b10、0b11/*【07】函数SDIO_ITConfig * Function Name : SDIO_ITConfig* Description : Enables or disables the SDIO interrupts.* Input : - SDIO_IT: specifies the SDIO interrupt sources to be enabled or disabled.* This parameter can be one or a combination of the following values:* - SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt* - SDIO_IT_DCRCFAIL: Data block sent/received (CR

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1