CH37X 文件管理芯片使用及移植指南

本文详细指导如何使用CH37X文件管理芯片为单片机实现USB-U盘通信,包括芯片功能解读、移植步骤、函数应用和电路设计。适合初学者快速入门。

近期实习公司想要给仪器开发一个利用USB接口向U盘写测量数据的功能(很神奇开了二十年的公司这个都没有)。于是查询了很多资料,最后选择了CH37X文件管理芯片的方案,也顺利实现了功能。

经笔者个人的实践和对网络资源、官方手册的研究参考,整理成本文。由于水平有限,没有深入了解USB传输协议,文件管理等知识,故文章经验性较强,理论深度较差。并且实践经验仍较少,只希望能够帮助其余像笔者一样,对这块芯片处于初学状态的读者顺利入门。

本文第一部分介绍了CH37X芯片的基本功能和特性;

第二部分介绍了单片机移植CH37X操作程序步骤,以及U盘的准备;

第三部分介绍了各个函数的功能和使用方法;

第四部分简略提及了电路设计;

第五部分分享了一些参考资料、视频。

建议阅读本文时,配合使用各参考文件。

1、基本概念

U盘接口功能主要通过CH37X文件管理控制芯片实现,此文实验部分均基于CH376S芯片叙述。该芯片主要用于单片机系统读写U盘或者SD卡的数据。

芯片具有以下功能:

①CH376支持USB设备方式和USB主机方式,即作为主机读取外部储存中的文件,也可以作为设备,向主机传输自身搭载储存芯片上的数据。并且支持两种状态的动态转换;

②内置了USB通讯协议的基本固件,内置了Mass-Storage海量存储设备专用通讯协议的固件。即可以直接调用提供的库函数控制CH376对U盘、SD卡进行操作,使用者只需要负责编写MCU与CH376通讯即可。

③内置了FAT16、FAT32以及FAT12文件系统的管理固件,支持常用的USB储存设备和SD卡。正常我们的PC机并不是对每个单独存储地址下的单元进行直接操作,而是基于文件系统对存储单元进行管理,总之用了文件系统,就能创建常见的带有后缀名、时间戳、大小等信息的各类文件,管理也更加方便。

④CH376支持三种通讯接口,8位并口、SPI接口和异步串口。应注意,并不是所有CH37X芯片都有全部三类接口,最高通讯速率也有所不同。

⑤CH376的应用框图如下,方便理解芯片、控制器、存储单元间关系:

⑥根据芯片不同支持不同速度的USB通讯,基本都兼容USB V2.0(就是接口颜色黑色,接口颜色蓝色的USB 3.0一般硬件上也兼容USB 2.0)。例如CH376支持1.5Mbps低速和12Mbps全速USB通讯,而CH378支持12Mbps全速和480Mbps高速通讯。

⑦根据芯片型号不同支持的容量、单次可操作的最大文件大小也不同,如CH376支持32GB的U盘和SD卡,最大1GB的单个文件,CH378支持32GB的U盘和4GB的单个文件。且连接CH376的U盘格式应为FAT32、FAT16或FAT12,市面上部分U盘使用的exFAT似乎不行,但具体地也没有进行了解、实验。U盘大小也应匹配,不能过大,否则无法操作。如实验过程中,使用exFAT格式64GB盘无法正常操作,FAT32格式4GB盘正常。

⑧官方提供的库函数可以选择是否使用特定功能,主要作用是减小程序大小。可以在头文件filesys.h内修改宏定义。注意,官方提供的文件里面很多功能默认不启用,若编程时出现某函数重定义的提示,很可能是没有启用对应的宏定义。

2、移植指南

鉴于CH37X芯片内置了USB通讯固件和文件管理系统,故移植到任何一款单片机上时都省去了向单片机移植文件管理系统和PC上位机安装驱动的步骤,只需要加入相关库函数、配置底层通讯驱动即可快速移植到任意一款单片机。若想要不使用该芯片,或想对现有FLASH、单片机SRAM做文件管理,可参考正点原子STM32指南中文件管理部分内容。

第一步,准备一块容量合适、格式正确的U盘。若没有特殊需求,一般淘宝里10块4GB的就可以,反而是好的U盘容易用不了。U盘容量必须在CH37X最大可操作容量下,且格式位FAT32、16、12中一种。不存在64GB盘,芯片支持32GB,让芯片只操作里面前32GB容量的情况。U盘格式化步骤如下图:

第二步,加入相关库函数。主要文件有ch376.c、ch376.h、ch376inc.h、filesys.c、filesys.h共五个。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值