开发指南和中文资料
1、概述
CH376 是文件管理控制芯片,用于单片机系统读写 U 盘或者 SD 卡中的文件。
同时可以使用 CH376 操作 USB 键盘鼠标,以及打印机等各种 USB 设备。该文档主要是介绍 客户
端软件如何与 CH376 的固件程序通讯,实现对 U 盘以及SD卡的文件操作。
CH376 支持三种通讯接口:8 位并口,SPI 接口或者异步串口;
2、硬件抽象层
2.1. 8 位并口
并口信号线包括:位双向数据总线 D7~D0、读选通输入引脚 RD#、写选通输入引脚 WR#、片选
输入引脚 PCS#、中断输出引脚 INT#以及地址输入引脚 A0 对于类似 Intel 并口时序的单片机,
CH376 芯片的 RD#引脚和 WR#引脚可以分别连接到单片机的读选通输出引脚和写选通输出引脚。对
于类似 Motorola 并口时序的单片机,CH376 芯片的 RD#引脚应该接低电平,并且 WR#引脚连接到单
片机的读写方向输出引脚 R/-W。
并口读写时序如下:
- /* 往 CH376命令端口写入命令 */
- void xWriteCH376Cmd( UINT8 mCmd ) /* 向CH376 写命令 */
- {
- /* (*(volatile unsigned char xdata *)0xBDF1) = mCmd ;
- */ /* 通过51 单片外部并行总线接口操作向 CH376 写入命令 */
- CH376_DATA_DAT_OUT( mCmd ); /* 向 CH376 的并口输出数据 */
- CH376_DATA_DIR_OUT( ); /* 设置并口方向为输出 */
- CH376_A0 = 1;
- CH376_CS = 0;
- CH376_WR = 0; /* 输出有效写控制信号, 写CH376 芯片的命令端口 */
- //CH376_CS = 0; /* 该操作无意义,仅作延时,CH376 要求读写脉冲宽度大于 40nS */
- CH376_WR = 1; /* 输出无效的控制信号, 完成操作 CH376 芯片 */
- CH376_CS = 1;
- CH376_A0 = 0;
- CH376_DATA_DIR_IN( ); /* 禁止数据输出 */
- /*mDelay0_5uS( ); mDelay0_5uS( ); mDelay0_5uS( );*/
- /* 延时 1.5uS 确保读写周期大于 1.5uS,或者用状态查询代替 */
- }
-
- /* 往 CH376数据端口写入数据 */
- void xWriteCH376Data( UINT8 mData ) /* 向 CH376 写数据 */
- {
- /* (*(volatile unsigned char xdata *)0xBCF0) = mData ; */ /* 通过 51 单片机外
- 部并行总线接口操作向 CH376 写入数据 */
- CH376_DATA_DAT_OUT( mData ); /* 向 CH376 的并口输出数据 */
- CH376_DATA_DIR_OUT( ); /* 设置并口方向为输出 */
- CH376_A0 = 0;
- CH376_CS = 0;
- CH376_WR = 0; /* 输出有效写控制信号, 写CH376 芯片的数据端口 */
- //CH376_CS = 0; /* 该操作无意义,仅作延时,CH376 要求读写脉冲宽度大于 40nS */
- CH376_WR = 1; /* 输出无效的控制信号, 完成操作 CH376 芯片 */
- CH376_CS = 1;
- CH376_DATA_DIR_IN( ); /* 禁止数据输出 */
- //mDelay0_5uS( ); /* 确保读写周期大于 0.6uS */
- }
-
- /* 从 CH376数据端口读取数据 */
- UINT8 xReadCH376Data( void ) /* 从 CH376 读数据 */
- {
- UINT8 mData;
- /* mData = (*(volatile unsigned char xdata *)0xBCF0) ; */ /* 通过 51 单片机外
- 部并行总线接口操作从 CH376 读取数据 */
- //mDelay0_5uS( ); /* 确保读写周期大于 0.6uS */
- CH376_DATA_DIR_IN( ); /* 设置并口方向为输入 */
- CH376_A0 = 0;
- CH376_CS = 0;
- CH376_RD = 0; /* 输出有效读控制信号, 读CH376 芯片的数据端口 */
- CH376_CS = 0; /* 该操作无意义,仅作延时,CH376 要求读写脉冲宽度大于 40nS*/
- mData = CH376_DATA_DAT_IN( );/* 从 CH376 的并口输入数据 */
- CH376_RD = 1; /* 输出无效的控制信号, 完成操作 CH376 芯片 */
- CH376_CS = 1;
- return( mData );
- }
-
- /* 从 CH376命令端口读取状态 */
- UINT8 xReadCH376Status( void ) /* 从 CH376 读状态,仅用于并口方式 */
- {
- UINT8 mData;
- /* mData = (*(volatile unsigned char xdata *)0xBDF1) ; */ /* 通过 51 单片机外
- 部并行总线接口操作从 CH376 读取状态 */
- CH376_DATA_DIR_IN( ); /* 设置并口方向为输入 */
- CH376_A0 = 1;
- CH376_CS = 0;
复制代码
全部资料51hei下载地址:
CH376中文资料.pdf
(5.05 MB, 下载次数: 51)
CH376编程指南.pdf
(261.02 KB, 下载次数: 56)
|