基于uCOSⅡ和CH375的U盘数据读写接口设计

合集下载

单片机通过CH375 读写U 盘时的注意事项

单片机通过CH375 读写U 盘时的注意事项

单片机通过CH375读写U盘时的注意事项版本:1B1、概述USB总线接口芯片CH375支持USB-HOST和USB-DEVICE,可以用于单片机读写U盘。

本说明中的多数内容为建议性说明,而非强制性说明,建议的目的旨在提高最终产品的稳定性和可靠性,很多内容只是针对一般情况和大多数用户而言,而未考虑个别或者例外。

本说明中列举了一些发生在某些品牌U盘上的怪现象,都是我们实际测试现象的描述,我们并没有以此评价U盘的优劣,因为实际上它们可能已经算是所有U盘中比较优秀的几种,而且,我们也不排除这仅仅是品牌U盘中的个别现象,只是正好被我们碰到而已。

2、硬件2.1. CH375芯片1) CH375内部含有时钟振荡电路,但是驱动能力比普通的单片机要弱一些,振荡波形通常比较接近正弦波(普通单片机的振荡波形接近方波),这种弱振荡的优点是对外产生的电磁干扰较少,缺点是理论上自身比较容易受外来的干扰,当然,如果电路及PCB设计良好则不会产生干扰。

2) CH375的时钟可以使用普通12MHz石英晶体或者普通12MHz有源晶振,但是不宜使用频率误差较大的陶瓷晶体。

对于普通石英晶体,虽然CH375手册中标明振荡电容为15pF,但是原则上应该根据晶体厂家的推荐值选择匹配的振荡电容,例如是18pF、20pF、22pF、24pF、27pF等。

3) 如果电源电压为3.3V,可以将XI引脚的电容C1容量选用小些(例如10pF),或者用有源晶振或者外部振荡电路为CH375的XI引脚提供时钟,以保证时钟稳定性。

有的电路还可以在CH375的XO引脚串接100Ω到300Ω的电阻,改善振荡参数。

对于CH375B芯片,不需要外串电阻。

4) 为了降低电磁辐射,并减少来自外界的干扰,振荡电路的晶体X1的金属外壳应该接地,晶体X1以及电容C1、C2应该尽量靠近CH375,C1和C2的GND端应该尽量接近CH375的GND端,相关的PCB走线应该尽量短,并且可以在周边环绕接地线或敷铜。

单片机读写U盘的接口

单片机读写U盘的接口

CH375是USB总线的通用接口芯片,支持HOST主机方式和SLAVE设备方式。

MCS-51单片机读写U盘的电路原理图,CH375芯片的TXD引脚接高电平,工作于串口方式。

在串口方式下,CH375只需要与单片机/DSP/MCU连接3个信号线,TXD引脚、RXD引脚以及INT#引脚,其他引脚都可以悬空。

除了连接线较少之外,其他外围电路与并口方式基本相同。

由于INT#引脚和TXD 引脚在C H375复位期间只能提供微弱的高电平输出电流,在进行较远距离的连接时,为了避免INT#或者TXD在CH3 75复位期间受到干扰而导致单片机误操作,可以在INT#引脚或者TXD引脚上加阻值为1~5kΩ的上拉电阻,以维持较稳定的高电平。

在CH375芯片复位完成后,INT#引脚和TXD引脚将能够提供5mA的高电平输出电流或者5mA的低电平吸入电流。

单片机读写U盘的接口由于CH375内置了处理Mass-Storage海量存储设备的专用通信协议的固件,所以嵌入式系统的单片机可以通过CH375将U盘(USB闪存盘、USB外置硬盘)作为可移动的大容量存储器。

数据读写只需要几条指令,而不需要详细了解USB通信协议。

如果嵌入式系统需要将USB存储设备组织为文件系统,可调用CH375文件级子程序库提供的接口API,由子程序库处理文件系统。

MCS-51单片机读写U盘范例源程序如下:#include#include "CH375INC.H"#include /* 以下定义适用于MCS-51单片机 */#define UINT8 unsigned char#define UINT16 unsigned short#define UINT32 unsigned long#define UINT8X unsigned char xdata#define UINT8VX unsigned char volatile xdataUINT8VX CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */UINT8VX CH375_DAT_PORT _at_ 0xBCF0; /* CH375数据端口的I/O地址 */#define CH375_INT_WIRE INT0 /* P3.2, 连接CH375的INT#引脚,用于查询中断状态 */UINT8X DISK_BUFFER[512*32] _at_ 0x0000; /* 外部RAM数据缓冲区的起始地址 */UINT32 DiskStart; /* 逻辑盘的起始绝对扇区号LBA */UINT8 SecPerClus; /* 逻辑盘的每簇扇区数 */UINT8 RsvdSecCnt; /* 逻辑盘的保留扇区数 */UINT16 ; FATSz16; /* FAT16逻辑盘的FAT表占用的扇区数 *//* ********** 硬件USB接口层,无论如何这层省不掉,单片机总要与CH375接口吧 */void mDelaymS( UINT8 delay ) {UINT8 i, j, c;for ( i = delay; i != 0; i -- ) {for ( j = 200; j != 0; j -- ) c += 3;for ( j = 200; j != 0; j -- ) c += 3;}}void CH375_WR_CMD_PORT( UINT8 cmd ) { /* 向CH375的命令端口写入命令 */CH375_CMD_PORT=cmd;for ( cmd = 2; cmd != 0; cmd -- ); /* 发出命令码前后应该各延时2uS */}void CH375_WR_DAT_PORT( UINT8 dat ) { /* 向CH375的数据端口写入数据 */CH375_DAT_PORT=dat; /* 因为MCS51单片机较慢所以实际上无需延时 */}UINT8 CH375_RD_DAT_PORT( void ) { /* 从CH375的数据端口读出数据 */return( CH375_DAT_PORT ); /* 因为MCS51单片机较慢所以实际上无需延时 */ }UINT8 mWaitInterrupt( void ) { /* 等待CH375中断并获取状态,返回操作状态 */while( CH375_INT_WIRE ); /* 查询等待CH375操作完成中断(INT#低电平) */CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断,获取中断状态 */return( CH375_RD_DAT_PORT( ) );}/* ********** BulkOnly传输协议层,被CH375内置了,无需编写单片机程序 *//* ********** RBC/SCSI命令层,虽然被CH375内置了,但是要写程序发出命令及收发数据*/UINT8 mInitDisk( void ) { /* 初始化磁盘 */UINT8 Status;CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */Status = CH375_RD_DAT_PORT( );if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB设备断开 */CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */Status = mWaitInterrupt( ); /* 等待中断并获取状态 */if ( Status != USB_INT_SUCCESS ) return(Status ); /* 出现错误 */CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 获取USB存储器的容量 */Status = mWaitInterrupt( ); /* 等待中断并获取状态 */if ( Status != USB_INT_SUCCESS ) { /* 出错重试 *//* 对于CH375A芯片,建议在此执行一次CMD_DISK_R_SENSE命令 */mDelaymS( 250 );CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 获取USB存储器的容量 */Status = mWaitInterrupt( ); /* 等待中断并获取状态 */}if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出现错误 */return( 0 ); /* U盘已经成功初始化 */}UINT8 mReadSector( UINT32 iLbaStart, UINT8 iSectorCount, UINT8X *oDataBuffer ) {UINT16 mBlockCount;UINT8 c;CH375_WR_CMD_PORT( CMD_DISK_READ ); /* 从USB存储器读数据块 */CH375_WR_DAT_PORT( (UINT8)iLbaStart ); /* LBA的最低8位 */CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 8 ) );CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 16 ) );CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 24 ) ); /* LBA的最高8位 */CH375_WR_DAT_PORT( iSectorCount ); /* 扇区数 */for ( mBlockCount = iSectorCount * 8; mBlockCount != 0; mBlockCount -- ) {c = mWaitInterrupt( ); /* 等待中断并获取状态 */if ( c == USB_INT_DISK_READ ) { /* 等待中断并获取状态,请求数据读出 */CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 从CH375缓冲区读取数据块 */c = CH375_RD_DAT_PORT( ); /* 后续数据的长度 */while ( c -- ) *oDataBuffer++ = CH375_RD_DAT_PORT( );CH375_WR_CMD_PORT( CMD_DISK_RD_GO ); /* 继续执行USB存储器的读操作 */}else break; /* 返回错误状态 */}if ( mBlockCount == 0 ) {c = mWaitInterrupt( ); /* 等待中断并获取状态*/if ( c== USB_INT_SUCCESS ) return( 0 ); /* 操作成功 */}return( c ); /* 操作失败 */}/* ********** FAT文件系统层,这层程序量实际较大,不过,该程序仅演示极简单的功能,所以精简 */UINT16 mGetPointWord( UINT8X *iAddr ) { /* 获取字数据,因为MCS51是大端格式 */ return( iAddr[0] | (UINT16)iAddr[1] << 8 );}UINT8 mIdenDisk( void ) { /* 识别分析当前逻辑盘 */UINT8 Status;DiskStart = 0; /* 以下是非常简单的FAT文件系统的分析,正式应用绝对不应该如此简单 */Status = mReadSector( 0, 1, DISK_BUFFER ); /* 读取逻辑盘引导信息 */if ( Status != 0 ) return( Status );if ( DISK_BUFFER[0] != 0xEB && DISK_BUFFER[0] != 0xE9 ) { /* 不是逻辑引导扇区 */DiskStart = DISK_BUFFER[0x1C6] | (UINT16)DISK_BUFFER[0x1C7] << 8| (UINT32)DISK_BUFFER[0x1C8] << 16 | (UINT32)DISK_BUFFER[0x1C9] << 24; Status = mReadSector( DiskStart, 1, DISK_BUFFER );if ( Status != 0 ) return( Status );}SecPerClus = DISK_BUFFER[0x0D]; /* 每簇扇区数 */RsvdSecCnt = DISK_BUFFER[0x0E]; /* 逻辑盘的保留扇区数 */FATSz16 = mGetPointWord( &DISK_BUFFER[0x16] ); /* FAT表占用扇区数 */return( 0 ); /* 成功 */}UINT16 mLinkCluster( UINT16 iCluster ) { /* 获得指定簇号的链接簇 *//* 输入: iCluster 当前簇号, 返回: 原链接簇号, 如果为0则说明错误 */UINT8 Status;Status = mReadSector( DiskStart + RsvdSecCnt + iCluster / 256, 1,DISK_BUFFER );if ( Status != 0 ) return( 0 ); /* 错误 */return( mGetPointWord( &DISK_BUFFER[ ( iCluster + iCluster ) & 0x01FF ] ) ); }UINT32 mClusterToLba(UINT16 iCluster ) { /* 将簇号转换为绝对LBA扇区地址 */ return( DiskStart + RsvdSecCnt + FATSz16 * 2 + 32 + ( iCluster - 2 ) *SecPerClus );}void mInitSTDIO( void ) { /* 仅用于调试用途及显示内容到PC机,与该程序功能完全无关 */SCON = 0x50; PCON = 0x80; TMOD = 0x20; TH1 = 0xf3; TR1=1; TI=1; /* 24MHz, 9600bps */}void mStopIfError( UINT8 iErrCode ) { /* 如果错误则停止运行并显示错误状态 */ if ( iErrCode == 0 ) return;printf( "Error status, %02X", (UINT16)iErrCode );}main( ) {UINT8 Status;UINT8X *CurrentDir;UINT16 Cluster;mDelaymS( 200 ); /* 延时200毫秒 */mInitSTDIO( );CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); /* 初始化CH375,设置USB工作模式 */CH375_WR_DAT_PORT( 6 ); /* 模式代码,自动检测USB设备连接 */while ( 1 ) {printf( "Insert USB disk" );while ( mWaitInterrupt( ) != USB_INT_CONNECT ); /* 等待U盘连接 */mDelaymS( 250 ); /* 延时等待U盘进入正常工作状态 */Status = mInitDisk( ); /* 初始化U盘,实际是识别U盘的类型,必须进行此步骤 */ mStopIfError( Status );Status = mIdenDisk( ); /* 识别分析U盘文件系统,必要操作 */mStopIfError( Status );Status = mReadSector( DiskStart + RsvdSecCnt + FATSz16 * 2, 32,DISK_BUFFER );mStopIfError( Status ); /* 读取FAT16逻辑盘的根目录,通常根目录占用32个扇区*/for ( CurrentDir = DISK_BUFFER; CurrentDir[0] != 0; CurrentDir += 32 ) {if ( ( CurrentDir[0x0B] & 0x08 ) == 0 && CurrentDir[0] != 0xE5 ) {CurrentDir[0x0B] = 0; /* 为了便于显示,设置文件名或者目录名的结束标志 */ printf( "Name: %s", CurrentDir ); /* 通过串口输出显示 */}} /* 以上显示根目录下的所有文件名,以下打开第一个文件,如果是C文件的话 */if ( (DISK_BUFFER[0x0B]&0x08)==0 && DISK_BUFFER[0]!=0xE5 && DISK_BUFFER[8] =='C' ) {Cluster = mGetPointWord( &DISK_BUFFER[0x1A] ); /* 文件的首簇 */while ( Cluster < 0xFFF8 ) { /* 文件簇未结束 */if ( Cluster == 0 ) mStopIfError( 0x8F ); /* 对于首簇,可能是0长度文件*/Status = mReadSector( mClusterToLba( Cluster ), SecPerClus,DISK_BUFFER );mStopIfError( Status ); /* 读取首簇到缓冲区 */DISK_BUFFER[30] = 0; printf( "Data: %s", DISK_BUFFER ); /* 显示首行*/Cluster = mLinkCluster( Cluster ); /* 获取链接簇,返回0说明错误 */}}while ( mWaitInterrupt( ) != USB_INT_DISCONNECT ); /* 等待U盘拔出 */mDelaymS( 250 );}}该程序可以支持WINDOWS按FAT16格式化的U盘__________________________。

基于MCU和CH375的并口转USB口驱动器的设计

基于MCU和CH375的并口转USB口驱动器的设计

技 术 创 新
图 2 系统硬件电路图
系统设计引入看门狗定时复位芯片 X5045 , 主要 完成上电复位控制、看门狗定时器及降压管理 功能。 单 片 机 W78E516B 是 具 有 带 ISP 功 能 的 Flash E- PROM 的 低 功 耗 8 位 微 控 制 器 ; ISP 功 能 可 用 于 固 件 升 级 , ISP 连 到 并 口 一 脚 由 上 位 机 程 序 和 W78E516B 的 4K LDROM 中 的 ISP 程 序 共 同 完 成 单 片 机 的 64K APROM。 CH375 芯片的 RD# 和 WR# 可以分别连接到 单片机的读选通输出引脚和写选通输出引脚。 CS# 可 以直接连到 P2 口的除 P2.0 外的任一脚。INT# 连接到 单片机的中断输入引脚 , 低电平有效。当 CS# 和 RD# 以及 A0 都为 低 电 平 时 , CH375 中 的 数 据 通 过 D7 ~ D0 输出 ; 当 CS# 和 WR# 以及 A0 都为低电平时 , D7~ D0 上的数据被写入 CH375 芯片 中 ; 当 CS# 和 WR# 都为 低电平而 A0 为 高 电 平 时 , D7 ~ D0 上 的 数 据 被 作 为 命 令码写入 CH375 芯片中。 其他 IO 口 , 如 BUSY 信号连 接 到 仪 器 的 打 印 并 口 , CH375 主 要 配 合 单 片 机 完 成 USB 传输协议的解释 , 识别 USB 外设 , 完成 对 USB 打 印机枚举 , 同时接收单片机发来的数据发送给 USB 打 印机 ; 而单片机主要协助 CH375 完成 USB 传输 协议 的解释 , 实现并口与 USB 口之 间 的 数 据 通 信 , 一 方 面 接收仪器通过并口发送来的数据, 另一方面通过与

基于CH375的USB数据采集应用程序

基于CH375的USB数据采集应用程序

基于CH375的USB数据采集应用程序摘要利用USB接口技术,采用USB模块CH375与AT89C81结合,实现与计算机通信。

给出了CH375与单片机接口电路的原理简图,并详细介绍了实现USB数据传输的上位机的程序设计。

关键词:USB,CH375,AT89C51,上位机一、CH375模块简介USB模块CH375是一个USB总线的通用设备接口芯片,用户无需编写驱动程序,内置有USB通讯中的底层协议,完全满足USB1.1标准。

具有8位数据总线(D0~D7)、地址输入(A0)、读(RD#)、写(WR#)、片选控制线(CS#)以及中断输出(INT#),可以方便地挂接到单片机的数据总线上。

当A0为低电平时选择数据端口,单片机通过8位并口对CH375进行读写数据;为高电平时选择命令端口,可以向其写入命令。

在本地端,单片机对CH375的操作是采用命令加数据的I/O操作方式,任何操作都是先发命令给CH375,然后执行数据输入输出。

CH375接收到上位机发送的数据或者发送完给上位机的数据后,以中断方式通知单片机,并进行相应处理。

将CH375芯片的驱动程序、动态链接库拷贝到上位机中,利用CH375动态链接库DLL 提供的API函数对其进行操作,对USB设备的通信就几乎和访问本地硬盘中的文件差不多了。

二、系统原理图CH375的数据总线直接与AT89C51的数据总路线P0口相连,中断输出INT#与AT89C51的外部中断INT1相连,RD#、WR#与A T89C51的RD、WR对应,片选A0及CS#分别接P2.0和P2.1。

接接线电路图如下:三、设计通信方案USB模块CH375在计算机应用层与其本地端单片机AT89C51之间提供了端对端的连接。

统一采用数据加应答方式进行通信,所有的通信都由计算机应用层发起,然后以接收到单片机的应答结束。

单一通道完整的通信过程包括:①计算机应用层按事先约定的格式将数据请求发送给CH375;②CH375以中断方式通知单片机。

基于CH375控制芯片的U盘读写系统

基于CH375控制芯片的U盘读写系统
式 , 过串行输 入 、 通 串行 输 出和 中断输 出与单 片 机 相 连 接 。C 35的 U B主 H7 S
VC C c# s RT S# RT S A, CⅣ} GD N D7 D 6 D 5 D 4 D3 D 2
D1 D 0
图 1 G 35引脚 图 H7
3 电路 设 计
本设计 中 C 35 H 7 工作在主机方式下 , 以总线方式挂在单片机系统总线上 。单片机通过 R WR 高位地 D、 、 址译码产生的片选 c 和地址线 A ( C 35 A 引脚) s 8接 H 7 的 0 的综合控制, 完成与 C 35的通讯。C 35IT H7 H 7 # N
基 于 C 3 5 制 芯 片 的 U盘读 写 系 统 H7控
陈会 张喜验2周扬2 田滢 杨俊 贤 , , , ,
(. 1中国海洋大学 , 山东 青 岛 260;. 6 32 山东省科学 院海洋 仪器 仪表研究所 , 0 山东 青 岛 2 0 1 6 0) 6 摘要 : 针对一些 内部集成了 U B S 设备接 口的嵌入式微控制 器同过去的开发系统不兼容 的情况 , 于 U B 口 基 S接 控制 芯片 C 35设计 了一个不 需要 大规模改变原有系统 , 于对 原有 系统 进行 升级的 u盘 读写 系统。通过 H 7, 适
收稿 日期:O60 —9 2O .81
Байду номын сангаас
维普资讯
第5 期
陈会 , : 等 基于 G 35 H 7 控制 芯片的 u盘读写 系统
5 7
位, 从而将 U B存储设备简化为一种外部数据存储器 , S 单片机可以 自由读写 U B存储设备 中的数 据 , 可以 S 也
索等 。
C 35以 C H7 语言子程序库提供 了 U B S 存储设备的文件级接 口, 这些应用层接 口 A I P 包含了常用的文件

基于CH375的U盘读写模块在移动数据交换中的应用 (2)

基于CH375的U盘读写模块在移动数据交换中的应用 (2)

收稿日期:2005-09 作者简介:秦霆镐(1953—),男,副教授,主要研究方向为自动测控技术及楼宇自动化等。

图2 CH375的U 盘读写模块外观图基于CH375的U 盘读写模块在移动数据交换中的应用秦霆镐,凌 辉,庞海珑(上海大学自动化系,上海200072) 摘要:提出一种基于CH375的U 盘读写模块与51系列单片机相结合以实现US B 主机功能的方法,给出了该方法的软硬件具体实现。

关键词:US B 主机;数据交换;CH375中图分类号:TP39 文献标识码:B 文章编号:1006-2394(2006)01-0034-03Appli ca ti on of USB M odule Ba sed on CH375i n Da t a ExchangeQ I N G Ting 2hao,L I N G Hui,P ANG Hai 2l ong(Aut omati on Depart m ent,Shanghai University,Shanghai 200072,China )Abstract:A method of realizati on of US B host functi on is devel oped by combiningMCS 251MC U and the US B module based on the chi p of CH375.The design of s oft w are and hard ware is p resented in detail and p r os pect is made .Key words:US B host;data exchange;CH3751 基于CH375的U 盘读写模块简介CH375是一个US B 总线的通用接口芯片,支持HOST 主机方式和S LAVE 设备方式。

在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP /MCU 等控制器的系统总线上。

基于CH375 的U 盘MP3 播放器设计

基于CH375 的U 盘MP3 播放器设计
基于CH375 的U 盘MP3 播放器设计
1 方案设计
1. 1 系统功能简介 • 本设计主要完成U 盘的识别和数据的读取, 并将U 盘中读取的MP3 文件解码播放出流畅的音乐, 完成MP3 播放器的存储不解码的分离。 • 系统功能主要包括读取U盘数据和MP3 解码播放2 部分。实现设计功能需要USB接口芯片、MP3 解码芯片、 主控制器和其他外围电路。
1. 2 主要芯片的选择
1.通过比较本文选择南京沁恒电子生产的一款USB 通用接口芯片CH 375。 CH375 芯片支持HOST 主机方式和DEVICE 设备方式, 内部集成了PL L 倍频器、主 从USB 接口、数据缓冲区、被动并行接口、异步串行接口、命令解释器、控制传输 的协议处理器、通用的固件程序等。 2. 音频解码芯片选择芬兰VL SI 公司生产的VS1003。 VS1003 具有MP3/ WMA/ MIDI 解码和ADPCM 编码功能, 他内部包含一个高性能、 低功耗的DSP 处理核( VSDSP), 一个工作内存, 一片可供用户程序使用的5. 5kBRAM, 一个串行SPI 总线接口, 一个高质量的采样频率可调 的过采样DAC 以及一个16 位的 采样ADC。 3.采用高性能低功耗的STC12C5A60S2微处理器作为系统主控制器。 STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片 机,是高速/低功耗/超强抗干扰的新一代8051单片机,挃令代码完全兼容传统8051, 但速度快8-12倍。内部集成MAX810与用复位电路,2路PWM,8路高速10位A/D转换 (250K/S),针对电机控制,强干扰场合。工作频率范围0~35MHz,片上集成1280字节 RAM,有EEPROM功能,ISP(在系统可编程)/IAP(在应用可编程),无需与用编程器, 无需与用仿真器,可通过串口(P3.0/P3.1)直接下载用户程序。 能保证MP3 文件的顺畅播放。

基于芯片CH375的移动数据采集系统

基于芯片CH375的移动数据采集系统

信息产业引言在人们的日常生活中或是在工业控制领域,常常需要一套简单的设备,长时间采集数据,然后集中分析。

在这种情况下,传感器+单片机+USB接口+U盘存储器是一种简便、实用、成本小的解决方案。

文中主要介绍了单片机与CH375的硬件连接,U盘数据存储格式以及软件设计。

1硬件设计1.1芯片选择微处理器芯片的选择依据是片内RAM,片内RAM主要作用是临时存储采集到的数据(数据缓冲区),如果片内RAM不够大,那么会导致频繁的写U盘,这对U盘的寿命和通讯的速率都会产生影响,在此选择AVR128(4K片内RAM)。

USB接口芯片选择CH375,CH375是国内的南京沁恒公司开发的产品,是USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式,内置了处理Mass-Storage海量存储设备的专用通讯协议的固件。

外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。

存储设备可选普通U盘,价格低、寿命长、携带方便。

1.2硬件连接(见图1)单片机与CH375模块之间的连接使用8位并行数据线、A0线、读使能、写使能、片选和中断信号,可以方便进行数据交换。

U盘直接插在CH375模块的USB接口上。

具体电路图如图2。

片选是通过地址线A9来直接操作的,低电平选中,A0接地址线,中断接在INT上。

单片机控制CH375的命令是通过在数据总线上写命令字节来实现的,其中地址线A0用来区分写命令或者数据,当A0=1时可以在总线上写命令;当A0=0时可以在总线上读写数据。

所以,单片机写命令即为写地址0x1**(**为命令字节),读写数据则为0x0**(**为数据字节)。

2U盘数据存储结构2.1存储数据的两种方式方式一:不按PC机上文件系统的方式存储,这种方式只是单纯的把U盘作为一个ROM存储器。

这种存储数据的方式对于单片机来说比较简单,但是把U盘插入电脑后,不能直接读出U盘的数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关键词 : H 7 ; C 3 5 U盘 数 据 读 写 ; C S 1 作 系统 : 3 2 4 ;移 植 u O I操 ¥C40 中图 分 类 号 : N 7 T 24 文献标识码 : A 文 章 编 号 :1 7 — 2 6 2 1 ) 8 0 7 — 3 64 6 3 (0 1 1— 18 0
何 达 .黄 光 明
( 中师 范 大 学 物 理 科 学 与 技 术 学 院 , 北 武 汉 4 0 7 ) 华 湖 3 0 9 摘 要 : 设 计 在 ¥ C 4 0处 理 器 和 u O I下设 计 了基 于 C 3 5的 U 盘 数 据 读 写 方 案 。 方案 以数 字频 率特 性 测 试 该 324 C SI H7 该
第 11 .8
电子 设 计 工 程
E e to i sg n i e r g l cr n c De in E gn e i n
2 1 年 9月 01
SD 2 1 e . 01
基于 u OSI和 C 7 C I H3 5的 U 盘数据读 写接 口设计
仪 为 应 用 背 景 , 出 了 具体 应 用 电路 。 件 设 计 基 于嵌 入 式 操 作 系统 u O 给 软 C SⅡ , 证 了 系统 实 时性 和 可扩 展 性 。 点介 保 重
绍了uO C SⅡ操 作 系统 下 的 C 3 5读 写 方法 。该 方 案 在 数 字频 率 特 性 测 试 仪 中运 行 良好 . 到 了预 期 的技 术 指 标 。 H7 达
发 , 发 周 期 长 , 本 高 。 度 大 。 实 际 的应 用 中 比较 麻 烦 。 研 成 难 在 C 3 5是 南 京 沁 恒 公 司 生 产 的 一 款 U B 总线 通 用 接 口 H7 S 芯 片 。C 3 5芯 片 将 U B协 议 、 A S S O A E协 议 、C I H7 S M S —T R G S S 协 议 集 成 到 了芯 片 内部 口 这 些 内置 的 固 件 使 得 开 发 人 员 不 】 。 需 要 研 究 复 杂 的 U B通 信协 议 . 需 通 过 简 单 的命 令 就 可 以 S 只 直 接 对 U盘 的 扇 区 进 行 读 写 。沁 恒 公 司 还 提 供 U 盘 文 件 级 操 作 库 和 应 用 示 例 , 大 简 化 了 开 发 流 程 , 得 开 发 更 加 简 大 使
dg tlf q e c w e i g isr me L T e h r w r mp e n a in i n l d d T e s f r e i sb s d o mb d e ii r u n y s e p n n t a e u n h ad a e i l me tt si c u e . o h ot e d sg i a e n e e d d wa n r a me o e a in s se u e l i p r t y tm COSI t o 1,w ih g a a ten a me p roma c n c l b l yo e s se T i a e as h c u r n e i gr l i e r n e a d s a a i t f h y tm. e t f i t h s pr p l o fc s so eme h d o ed t a s si n b s d o H3 5 a d u o u e n t t o f h aa t n miso a e n C 7 n COSI . h n i i ae e in g a Sr a h d w e e h t r T ea t p t d d s o l c e h n t 1 c g i e h
Ab ta t A d sg f Bd t rn mi in b sdo H3 5.¥ C 2 0 a du OSI Sit d c d T ed s nwa sd i sr c: ein o aat s s o ae n C 7 US a s 3 2 4 n C i r u e . h ei su e n I no g
在 数 字 频 率 特 性 测 试 仪 中 ,为 了更 好 地 分 析 数 据 信 息 。
通 常 需 要 把 测 试 仪 上 的数 据 、 试 曲线 传 送 给 P 测 C机 . 后 做 然 进 一 步 的 分 析 处 理 。通 常 的 通 讯 方 式 是 基 于 R 一 3 S 2 2接 口的
US a at n mi in w s p l d i i i l r q e c w e i gi s u n . B d t r s s o a p i d gt e u n ys e p n t me t a s a e n af n r
Ke r s H3 5;U B d t a s sin;u OSI o eaesse y wo d :C 7 S aat n mis r o C p rt ytm;¥ C 4 0;ta s ln I 3 2 4 rn pa t
De in o B d t r n m iso a e n u s fUS a a ta s si n b s d o COSl a d CH3 5 g n I 7
HE D a,HUANG a g mi g Gu n — n
( ol eo hs a cec n e h o g ,C nr hn om lU ie i , hn4 0 7 , hn ) C l g e fP yi l ineadT cn l y e t l ia r a nvrt Wu a 3 0 9 C i c S o aC N sy a
相关文档
最新文档