參考的程序是“ch376host”,其他帖子中推薦的 開頭部分寫: /**************************************** ** Copyright (C) WCH 1999-2009 ** ** Web: http://www.winchiphead.com ** **************************************** ** USB 1.1 Host Examples for CH376 ** ** KC7.0@MCS-51 ** ** Version: v1.0 ** ** Author: tech14 ** ** Time : 2009/11/18 ** **************************************** 應該是沁恒官方提供的,但是在官方頁面上沒找到下載的地方 我參照這個程序編寫自己的程序,一點一點的添加 增加一點,運行一下看看效果 我用的是8位并口,軟件模擬接口方式
寫到“獲取設備描述符”時就不成功了,輸出“get device descr failed” 我懷疑是前面設置速度的問題 前有面調(diào)用這樣的函數(shù) void set_freq(void) { CH376_WR_CMD_PORT(0x0b); // 切換使375B進入低速模式 CH376_WR_DAT_PORT(0x17); CH376_WR_DAT_PORT(0xd8); } 我不明白0x0b,0x17,0xd8這三個參數(shù)是什么意思 查數(shù)據(jù)手冊中的命令,似乎與速度沒有關系
我重新寫設置低速的函數(shù): void CH376_SET_USB_SPEED(void) { ? ? CH376_WR_CMD_PORT(CMD_SET_USB_SPEED); //0x04 ? ? CH376_WR_CMD_PORT(0x02); } 替換原先的設置速度,獲取設備描述符就成功了 但不是很穩(wěn)定,有時還是會失敗
修改 UINT8 Get_Dev_Descr(),增加輸出語句 發(fā)現(xiàn)是 DATA階段 不成功, issue_token(receive_mode, (0<<4) | DEF_USB_PID_IN); status = wait_interrupt(); 讀出的狀態(tài)值是 0x16 (檢測到USB設備斷開事件) 不明白為什么
另外,不知道 (0<<4) 有什么用,0左移4為不還是0么?
請問,void set_freq(void) 中的那三個參數(shù),能解釋一下是什么意思么? 另外問個小問題,這兩種復位方法效果一樣么: 1. 用 CMD_RESET_ALL 命令復位 2. 在CH376芯片第2腳RSTI,高電平一段時間再恢復低電平(不知道高電平需要持續(xù)多長時間?)