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

感觉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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版