memcpy(BufLogDescr, SetupGetCfgDescr, sizeof( SetupGetCfgDescr )); memcpy( );是標(biāo)準(zhǔn)的C的庫函數(shù).可以查找一下功能. 將SetupGetCfgDescr指針的內(nèi)容復(fù)制到BufLogDescr中,復(fù)制長度sizeof( SetupGetCfgDescr ),返回實際復(fù)制長度. const UINT8C SetupGetDevDescr[] = { 0x80, 0x06, 0x00, 0x01, 0x00, 0x00, 0x12, 0x00 }; 是針對51MCU KEIL編譯器下面的定義.定義到代碼區(qū)的數(shù)組. AVR單片機(jī)GCC編譯器的定義如下: prog_char SetupGetDevDescr[] = { 0x80, 0x06, 0x00, 0x01, 0x00, 0x00, 0x12, 0x00 };
這是怎么回事?是不是U盤沒有插好?還是其他的情況,請技術(shù)人員指導(dǎo),謝謝
技術(shù)人員呢?幫我分析一下好嗎?它檢測到的設(shè)備是全速的,是不是這個問題?
你測一下UD+上的電壓是是多少?供電是幾V?還有你的MCU的晶振是多少?
供電5V ,UD+3.14V,51單片機(jī)晶振用的是11.0592,374的晶振是24M
UD+的電壓不正常,正常好像是3.7V,請問是哪里出了問題?還是374哪里沒有連接正確?謝謝
你用CH374EVT.ZIP中的HOST.C程序做一下測試.以便于確認(rèn)是硬件問題還是軟件的問題. VCC上加電容了沒有?一定要保證供電良好. SendByte(0xF0); while(1) { s=Wait374Interrupt(); mDelaymS( 100 ); if(s==ERR_USB_UNKNOWN) {
SendByte(s); } else { SendByte(s); break; } } 這段函數(shù)是做什么用的?應(yīng)該可以去掉.
VCC和GND之間加了220UF的電容,那里是沒有用的,開始我沒有加這段程序,我以為是沒有查詢到中斷,我就加了這段,不加那段程序 s = GetDeviceDescr( buf ); // 獲取設(shè)備描述符 SendByte(s); 返回還是FA啊,不知道怎么回事?
這個程序是用你的程序修改的,可以獲取設(shè)備描述符,你可以試試。 另,建議初次調(diào)試未通過之前,盡量不要自行修改示例程序,畢竟所有的示例都是測試過的,應(yīng)該不會有問題 UploadImages/20088514393687.rar
1223
請問用AVR開發(fā)CH374的SPI讀取U盤的設(shè)備描述符時,端口初始化 void CH374_PORT_INIT( ) /* 由于使用通用I/O模擬并口讀寫時序,所以進(jìn)行初始化 */ { /* 如果是硬件SPI接口,那么可使用mode3(CPOL=1&CPHA=1)或mode0(CPOL=0&CPHA=0),CH374在時鐘上升沿采樣輸入,下降沿輸出,數(shù)據(jù)位是高位在前 */ CH374_SPI_SCS = 1; /* 禁止SPI片選 */ CH374_SPI_SCK = 1; /* 默認(rèn)為高電平,SPI模式3,也可以用SPI模式0,但模擬程序可能需稍做修改 */ /* 對于雙向I/O引腳模擬SPI接口,那么必須在此設(shè)置SPI_SCS,SPI_SCK,SPI_SDI為輸出方向,SPI_SDO為輸入方向 */ } 對于雙向I/O引腳模擬SPI接口,那么必須在此設(shè)置SPI_SCS,SPI_SCK,SPI_SDI為輸出方向,SPI_SDO為輸入方向 如何修改?還需要修改那些地方?謝謝
如何修改?還需要修改那些地方?謝謝
假設(shè)硬件連接如下: /* AVR 374 PORTB.0 -------- SCS# PORTB.1 -------- SCK PORTB.2 -------- SDI PORTB.3 -------- SDO */ 那么: void CH374_PORT_INIT( ) { PORTB = 0x07; /* 設(shè)置SCS#,SCK,SDI默認(rèn)為高電平 */ DDRB = 0x07; /* 設(shè)置SCS#,SCK,SDI,為輸出,設(shè)置SDO為輸入 */ }