你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

感觉STM32F107的接U盘导出数据比较难用  

[复制链接]
奏奏奏 提问时间:2017-7-4 18:55 /
最近做现有产品的功能改进,
需要主控STM32F107接TF卡与U盘,
做好的实验数据存TF卡里,
然后有需要的时候导出到U盘中。
现在的方案构思是这样的:
(1)做好实验结果存TF卡,TF卡里面用CSV格式存;
(2)当检测到U盘插入时,自动将这个CSV文件导出到U盘,其中U盘与TF卡中都用FATFS文件系统。
感觉这里面第(2)步比较头疼,各位有没有什么好想法?
收藏 评论29 发布时间:2017-7-4 18:55

举报

29个回答
kimoye 回答时间:2017-12-21 10:23:47
1:建立缓存区,未传送到U盘的数据文件用定时策略或者及时更新到缓存区里面。
2:采用自动增量更新的做法,自动检测U盘插入和文件传送应该实现难度不高。
集中说一下文件传输,STTM32F这些一般来说支持的外设接口速度不是很高,我个人建议追求的是自动化,查阅一下别人封装好的或者官方的文件操作库即可,而自动化重点其实在于实现第一步的增量缓冲和增量传送,这里面是有很多细节来保证你自动化的精度的,这是一个守恒,我觉得题主的意思应该就是想提高自动化程度,那某一方面人要做的工作肯定得付出多一些。这里指的不是难度,难度方面很多写好的库了,主要是细节方面,比如你要考虑传送到一半掉电了这种,文件校检这种。当然做出一个可以用的版本只需要实现1和2就基本OK了的

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

wolfgang 回答时间:2017-12-21 22:36:10
本帖最后由 wolfgang2015 于 2017-12-24 00:24 编辑

2的基本步骤如下:
1、USB要设置为主机模式;
2、读取U盘配置参数区信息动态识别U盘大小
3、根据CSV文件大小判断FATFS文件系统剩余空间是否足够;
4、初始化U盘中Flash(文件系统来做,底层操作可以参考实现)
5、块写文件内容

补充一点,USB存储文件,不能以中断(HID)模式传输数据,要以数据流模式批量传输数据。
jinyi7016 回答时间:2017-12-21 10:44:18
这里的检测,可以每隔一段时间检测一次,可以是10s的时间
对于复制或是导出,
先搜索目标文件夹是否存在,不存在就新建,如果存在,就搜索目标文件夹里面的文件,和源文件夹里面的对比,如果不存在,则复制文件,如果搜索到源文件夹里面的是目录,目标文件夹没有,则新建目录,然后立刻进入目录进行复制

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

疯de_恒 回答时间:2017-12-21 09:46:27
FATFS文件系统支持盘符的。首先TF卡有文件保存了,这步没问题,比如TF卡的盘符设置为0,当有USB插入时,识别成功后将其盘符设置为1或其他不冲突即可,然后直接这些复制文件,我觉得是可行的。

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

wenyangzeng 回答时间:2017-12-21 10:05:33
本帖最后由 wenyangzeng 于 2017-12-21 17:29 编辑

假设楼主板上的USB设备是由CH375驱动,可以在平时让CH375进入低功耗睡眠挂起状态,当有USB盘插入时,CH375会自动唤醒。唤醒后即可执行将CSV文件导出到U盘的任务。

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

nyszx 回答时间:2017-12-21 11:31:31
第二实现方法没问题呀,头疼啥呀,头疼实现不了还是头疼实现太复杂?
dzwwzd6699 回答时间:2017-12-21 12:47:50
检测到u盘插入进入中断,通过单片机的SPI口往U盘上写文件。
可以试试硬件spi,速度比软件模拟快

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

寂寞,点燃一支烟 回答时间:2017-12-21 12:55:49
检测U盘  当插入之后直接拷贝就可以了
maxtch 回答时间:2017-12-21 13:05:26
USB 设备插入的时候是有一个中断的。
五哥1 回答时间:2017-12-21 13:28:47
不知头疼在那里?导出到U盘应该好办吧,U盘和TF卡的FATFS文件系统,应该好处理,多看下例程,也可以看下原子的例程,应该有启示。
weiwei4 回答时间:2017-12-21 14:53:55
可以把文件按照时间或一定的规则保存文件名,在检测到U盘插入后,检测U盘里面是不是有这个文件,如果没有,就将该文件保存到U盘里,有就不再复制,这样应该可行吧

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

风之山谷 回答时间:2017-12-21 15:57:54
方法一:STM32F107应该有USB设备插入拔出中断,所以可以在中断中判断是否有U盘插入;方法二可以定时轮询,向U盘读数据,成功则插入了,失败则没有插入。

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

hoook 回答时间:2017-12-21 16:58:54
可以考虑用U盘驱动
slotg 回答时间:2017-12-21 19:41:33
TF 卡会有取出的需求吗?假如没有取出的需求的话是否可以用大容量的 EEPROM 取代,第(2)步比较头疼指的是那一个部份?插入检测还是文件储存?这部分应该会有现有的例程可以参考吧!

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

sylar.z 回答时间:2017-12-21 19:49:25
使用FATFS文件系统及比较简单了,做过TF卡的文件存取,单没做过USB的。检测USB插入应该也有一个人机制,感觉文件转存还是比较好实现的
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版