完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我向操作单元为“字”的FIFO中写入一个“字”;查询时,发现FIFO中被重复写了32个“字”。(FIFO一共有32个字的存储空间)
以下是我针对此问题写的一段代码: #include "STM32f10x.h" #include "stm32f10x_conf.h" SDIO_DataInitTypeDef SDIO_DataInitStructure; SDIO_InitTypeDef SDIO_InitStructure; void SD_LowLevel_Init(void) ; void SDIO_DataInit(void); int main(void) { char *character= "abcdefghijklmnop" ; uint32_t *data= (uint32_t *)character ; SD_LowLevel_Init(); SDIO_DataInit(); SDIO->DCTRL = 0; SDIO_DataInitStructure.SDIO_DataLength = 16; SDIO_SetSDIOOperation(ENABLE); SDIO_DataInitStructure.SDIO_DataTimeOut = 0xffffffff; SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard; //SDIO_TransferDir_ToCard=0 SDIO_TransferDir_ToSDIO=2 SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Stream; // SDIO_TransferMode_Stream SDIO_TransferMode_Block SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable; SDIO_DataConfig(&SDIO_DataInitStructure); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(0X12345678); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(*data++); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(*data++); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(*data); SDIO->FIFOCNT; SDIO->DCOUNT; } void SD_LowLevel_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; /*!< GPIOC and GPIOD Periph clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD , ENABLE); /*!< Configure PC.08, PC.09, PC.10, PC.11, PC.12 pin: D0, D1, D2, D3, CLK pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); /*!< Configure PD.02 CMD line */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init(GPIOD, &GPIO_InitStructure); /*!< Enable the SDIO AHB Clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SDIO, ENABLE); /*!< Enable the DMA2 Clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE); } void SDIO_DataInit(void) { SDIO_DeInit(); /*!< Power ON Sequence -----------------------------------------------------*/ /*!< Configure the SDIO peripheral */ /*!< SDIO_CK = SDIOCLK / (SDIO_INIT_CLK_DIV + 2) */ /*!< on STM32F4xx devices, SDIOCLK is fixed to 48MHz */ /*!< SDIO_CK for initialization should not exceed 12 MHz */ SDIO_InitStructure.SDIO_ClockDiv = 0x04; 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_4b; SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable; SDIO_Init(&SDIO_InitStructure); /*!< Set Power State to ON */ SDIO_SetPowerState(SDIO_PowerState_ON); /*!< Enable SDIO Clock */ SDIO_ClockCmd(ENABLE); /*******************************************Gainspan Testing******************************/ SDIO_DataStructInit(&SDIO_DataInitStructure); } |
|
相关推荐
1个回答
|
|
SD接口没用过啊,用SPI接口挺好用的,在对速度没有太大要求的情况下可以考虑考虑SPI
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式ElfBoard EL 1板卡-i2c与从设备通讯编程示例之i2c-tools工具使用
1226 浏览 0 评论
stc15f2k60s2利用串口传输字模存储到eeprom并进行点阵显示
1453 浏览 1 评论
1457 浏览 0 评论
615 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序
1283 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11607 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-4 20:17 , Processed in 0.419570 second(s), Total 40, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号