STM32 其实可以进行读取USB文件,但仅限于F4以上芯片才可以进行SUB文件读写,但在项目开发中,往往用不到此芯片,那么只能通过外挂的USB芯片进行USB文件读写,本文则是采用STM32F103的SPI与CH376进行通信,通过CH376操作指令进行操作。
1、CH376介绍
CH376芯片 是沁恒的一款文件管理控制芯片,用于单片机系统读写 U 盘或者 SD 卡中的文件。同时可以使用 CH376 操作 USB 键盘鼠标,以及打印机等各种 USB 设备。
CH376 支持三种通讯接口:8 位并口、SPI 接口或者异步串口
1.1 芯片特点
●支持 1.5Mbps 低速和 12Mbps 全速 USB 通讯,兼容 USB V2.0。
● 支持 USB-HOST 主机接口和 USB-DEVICE 设备接口,支持动态切换主机方式与设备方式。
● 支持 USB 设备的控制传输、批量传输、中断传输。
● 自动检测 USB 设备的连接和断开,提供设备连接和断开的事件通知。
● 提供 6MHz 的 SPI 主机接口,支持 SD 卡以及与其协议兼容的 MMC 卡和 TF 卡等。
● 内置 USB 控制传输的协议处理器,简化常用的控制传输。
● 内置固件处理海量存储设备的专用通讯协议,支持 Bulk-Only 传输协议和 SCSI、UFI、RBC 或 等效命令集的 USB 存储设备(包括 U 盘/USB 硬盘/USB 闪存盘/USB 读卡器)。
● 内置 FAT16 和 FAT32 以及 FAT12 文件系统的管理固件,支持容量高达 32GB 的 U 盘和 SD 卡。
● 提供文件管理功能:打开、新建或删除文件、枚举和搜索文件、创建子目录、支持长文件名。
● 提供文件读写功能:以字节为最小单位或者以扇区为单位对多级子目录下的文件进行读写。
● 提供磁盘管理功能:初始化磁盘、查询物理容量、查询剩余空间、物理扇区读写。
● 提供 2MB 速度的 8 位被动并行接口,支持连接到单片机的并行数据总线。
● 提供 2MB/24MHz 速度的 SPI 设备接口,支持连接到单片机的 SPI 串行总线。
● 提供最高 3Mbps 速度的异步串口,支持连接到单片机的串行口,支持通讯波特率动态调整。
● 支持 5V 电源电压和 3.3V 电源电压以及 3V 电源电压,支持低功耗模式。
● USB 设备方式完全兼容 CH372 芯片;USB 主机方式基本兼容 CH375 芯片。
● 提供 SOP-28 和 SSOP20 无铅封装,兼容 RoHS,提供 SOP28 到 DIP28 的转换板,SOP28 封装的 引脚基本兼容 CH375 芯片。
而且CH376的文件操作与linux的文件操作相识,故在学习上可以参考。
1.2 CH376 指令
这些操作指令在后期使用过程中,将大大帮助我们进行操作。
2、STM32CUBEX配置
上述讲述了CH376的一些基本介绍,那么如何将官方给的例程文件运用到自己的工程上呢?
本次使用的单片机是STM32F103RCT6,配合使用的是STMCUBEMX进行快速开发
1、打开CubeMX
2、选择芯片
3、配置基础模式 SWD下载 晶振时钟
4、SPI通信模式设置
在进行配置时讲解一下:
在上图需要选择<