開發(fā)指南和中文資料
1、概述
CH376 是文件管理控制芯片,用于單片機系統(tǒng)讀寫 U 盤或者 SD 卡中的文件。
同時可以使用 CH376 操作 USB 鍵盤鼠標,以及打印機等各種 USB 設備。該文檔主要是介紹 客戶
端軟件如何與 CH376 的固件程序通訊,實現(xiàn)對 U 盤以及SD卡的文件操作。
CH376 支持三種通訊接口:8 位并口,SPI 接口或者異步串口;
2、硬件抽象層
2.1. 8 位并口
并口信號線包括:位雙向數(shù)據(jù)總線 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 的并口輸出數(shù)據(jù) */
- 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( ); /* 禁止數(shù)據(jù)輸出 */
- /*mDelay0_5uS( ); mDelay0_5uS( ); mDelay0_5uS( );*/
- /* 延時 1.5uS 確保讀寫周期大于 1.5uS,或者用狀態(tài)查詢代替 */
- }
-
- /* 往 CH376數(shù)據(jù)端口寫入數(shù)據(jù) */
- void xWriteCH376Data( UINT8 mData ) /* 向 CH376 寫數(shù)據(jù) */
- {
- /* (*(volatile unsigned char xdata *)0xBCF0) = mData ; */ /* 通過 51 單片機外
- 部并行總線接口操作向 CH376 寫入數(shù)據(jù) */
- CH376_DATA_DAT_OUT( mData ); /* 向 CH376 的并口輸出數(shù)據(jù) */
- CH376_DATA_DIR_OUT( ); /* 設置并口方向為輸出 */
- CH376_A0 = 0;
- CH376_CS = 0;
- CH376_WR = 0; /* 輸出有效寫控制信號, 寫CH376 芯片的數(shù)據(jù)端口 */
- //CH376_CS = 0; /* 該操作無意義,僅作延時,CH376 要求讀寫脈沖寬度大于 40nS */
- CH376_WR = 1; /* 輸出無效的控制信號, 完成操作 CH376 芯片 */
- CH376_CS = 1;
- CH376_DATA_DIR_IN( ); /* 禁止數(shù)據(jù)輸出 */
- //mDelay0_5uS( ); /* 確保讀寫周期大于 0.6uS */
- }
-
- /* 從 CH376數(shù)據(jù)端口讀取數(shù)據(jù) */
- UINT8 xReadCH376Data( void ) /* 從 CH376 讀數(shù)據(jù) */
- {
- UINT8 mData;
- /* mData = (*(volatile unsigned char xdata *)0xBCF0) ; */ /* 通過 51 單片機外
- 部并行總線接口操作從 CH376 讀取數(shù)據(jù) */
- //mDelay0_5uS( ); /* 確保讀寫周期大于 0.6uS */
- CH376_DATA_DIR_IN( ); /* 設置并口方向為輸入 */
- CH376_A0 = 0;
- CH376_CS = 0;
- CH376_RD = 0; /* 輸出有效讀控制信號, 讀CH376 芯片的數(shù)據(jù)端口 */
- CH376_CS = 0; /* 該操作無意義,僅作延時,CH376 要求讀寫脈沖寬度大于 40nS*/
- mData = CH376_DATA_DAT_IN( );/* 從 CH376 的并口輸入數(shù)據(jù) */
- CH376_RD = 1; /* 輸出無效的控制信號, 完成操作 CH376 芯片 */
- CH376_CS = 1;
- return( mData );
- }
-
- /* 從 CH376命令端口讀取狀態(tài) */
- UINT8 xReadCH376Status( void ) /* 從 CH376 讀狀態(tài),僅用于并口方式 */
- {
- UINT8 mData;
- /* mData = (*(volatile unsigned char xdata *)0xBDF1) ; */ /* 通過 51 單片機外
- 部并行總線接口操作從 CH376 讀取狀態(tài) */
- CH376_DATA_DIR_IN( ); /* 設置并口方向為輸入 */
- CH376_A0 = 1;
- CH376_CS = 0;
復制代碼
全部資料51hei下載地址:
CH376中文資料.pdf
(5.05 MB, 下載次數(shù): 51)
2018-6-4 01:13 上傳
點擊文件名下載附件
CH376編程指南.pdf
(261.02 KB, 下載次數(shù): 56)
2018-6-4 01:13 上傳
點擊文件名下載附件
|