OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11074|回复: 10

求助关于STM32f407的FSMC接口实现对CF卡的读写操作

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2017-3-14
在线时间
24 小时
发表于 2017-3-14 22:22:07 | 显示全部楼层 |阅读模式
尊敬的原子哥,尊敬的各位STM32大神们,请教一个问题,还望各位大神不吝赐教。

描述:我想选用STM32F407ZGT6单片机的FSMC接口的PC card控制器实现对CF卡的读、写、擦除等操作,在网上查阅了好多相关资料,却没有找到一个类似的应用,
         另外翻阅了STM32F407ZGT6的datasheet里边有关于操作PC CARD/compact  FLASH 的描述,官网应用手册中却未有相关应用。
问题:请问各位大神这款单片机的FSMC接口能否实现对cf卡的相关操作,如何实现,以及可供硬件接口设计原理。非常感谢!急、急、急

FSMC描述

FSMC描述

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2017-3-14
在线时间
24 小时
 楼主| 发表于 2017-3-19 22:17:10 | 显示全部楼层
已经联系到本论坛大神  刺客 ,可以确定这个方案是可行的,等做完此项目一定专门写一个帖子,描述项目开发方案,供大家参考,相互学习。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2017-9-1
在线时间
9 小时
发表于 2017-9-19 19:53:12 | 显示全部楼层
您好!请问stm32f407怎么实现对CF卡的操作的?您能说一下嘛?麻烦您了!
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2016-5-14
在线时间
13 小时
发表于 2017-10-19 11:02:13 | 显示全部楼层
不知道楼主解决了没有如果解决可不可以开个贴或指点一下719698753@qq.com
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2017-3-14
在线时间
24 小时
 楼主| 发表于 2017-10-22 17:03:43 | 显示全部楼层
Swordff 发表于 2017-9-19 19:53
您好!请问stm32f407怎么实现对CF卡的操作的?您能说一下嘛?麻烦您了!

FSMC(灵活静态存储器控制器),我使用的是bank1进行操作的,硬件接口如图所示,采用的是IO模式。

IO模式

IO模式
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2017-3-14
在线时间
24 小时
 楼主| 发表于 2017-10-22 17:04:52 | 显示全部楼层
skeletonwei 发表于 2017-10-22 17:03
FSMC(灵活静态存储器控制器),我使用的是bank1进行操作的,硬件接口如图所示,采用的是IO模式。

如果你简单的将CF卡看做是一个ram的话,就很容易理解了
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2017-3-14
在线时间
24 小时
 楼主| 发表于 2017-10-22 17:11:59 | 显示全部楼层
xaiozhi 发表于 2017-10-19 11:02
不知道楼主解决了没有如果解决可不可以开个贴或指点一下

处理器:STM32F407ZG
外设:FSMC  BANK1 (将CF卡看做一个RAM,进行操作)
硬件接口:我用的是IO模式,接口电路中CD1/CD2是卡出入检测引脚,相当于一个外部中断。


希望这些对你能有所帮助!

CF卡硬件接口 IO模式

CF卡硬件接口 IO模式

STM32F407(IO模式 ).zip

4.78 KB, 下载次数: 240

驱动参考程序

回复 支持 反对

使用道具 举报

127

主题

207

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1077
金钱
1077
注册时间
2017-9-11
在线时间
105 小时
发表于 2017-10-22 20:18:42 | 显示全部楼层
本帖最后由 huyuezhan 于 2017-10-22 20:30 编辑

IO操作肯定没问题,按IDE接口连就行了,周立功一本书里有CF卡详细的文字说明,好像叫《ARM嵌入式系统软件开发实例》,和楼上的代码结合
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2017-9-1
在线时间
9 小时
发表于 2017-11-8 15:18:24 | 显示全部楼层
非常感谢!谢谢您的帮助和资料!
我还有一个小问题,想请问一下您最后的读取写入CF卡的速度大概是多少?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-8-24
在线时间
2 小时
发表于 2020-9-8 17:33:34 | 显示全部楼层
volatile u16 * CF_DATA_REG = (volatile u16 *)(0x60000800);//数据寄存器
volatile u16 * CF_ERR_REG = (volatile u16 *)(0x60000802);//错误寄存器(读)
volatile u16 * CF_FEATURE_REG = (volatile u16 *)(0x60000802);//特征寄存器
volatile u16 * CF_SEC_COUNT_REG = (volatile u16 *)(0x60000804);//扇区计数寄存器  共64k:256个扇区
volatile u16 * CF_CYL_LOW_REG = (volatile u16 *)(0x60000808);//柱面寄存器0地位
volatile u16 * CF_SEC_NUM_REG = (volatile u16 *)(0x60000806);//扇区号寄存器;将要访问的第一个扇区的编号
volatile u16 * CF_CYL_HI_REG = (volatile u16 *)(0x6000080A);//柱面寄存器1高位
volatile u16 * CF_DRV_HD_REG = (volatile u16 *)(0x6000080C);//驱动器/磁头寄存器E0
volatile u16 * CF_STATUS_REG = (volatile u16 *)(0x6000080E);//(读)状态寄存器
volatile u16 * CF_COMMAND_REG = (volatile u16 *)(0x6000080E);//(写)命令寄存

问下大家,这些寄存器地址为什么是这些值?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2022-6-12
在线时间
0 小时
发表于 2022-6-12 12:53:21 | 显示全部楼层
huyuezhan 发表于 2017-10-22 20:18
IO操作肯定没问题,按IDE接口连就行了,周立功一本书里有CF卡详细的文字说明,好像叫《ARM嵌入式系统软件开 ...

周立功的书,确实有写这个CF卡的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 15:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表