請(qǐng)教CH375讀寫(xiě)數(shù)據(jù)問(wèn)題

我現(xiàn)在用BusHound軟件調(diào)試CH375的向端點(diǎn)2的讀寫(xiě)數(shù)據(jù)程序,結(jié)果發(fā)送 成功讀不回來(lái),想請(qǐng)教一下,我用的是總線方式,在向CH375里寫(xiě)數(shù)據(jù)時(shí),先寫(xiě)入數(shù)據(jù)長(zhǎng)度,在寫(xiě)入數(shù)據(jù),這樣同向一個(gè)地址里寫(xiě)數(shù)據(jù),會(huì)將原來(lái)的數(shù)據(jù)長(zhǎng)度覆蓋掉吧?這樣會(huì)有影響嗎?我的函數(shù)如下:請(qǐng)幫忙看看有問(wèn)題嗎?謝謝了 void WrPoint2(UCHAR *psrc,UCHAR n_byte) { SendCommand375(W_USB_DATA7); WriteData375(&n_byte,1); //寫(xiě)數(shù)據(jù)長(zhǎng)度 WriteData375(psrc,n_byte);//寫(xiě)數(shù)據(jù) } void RePoint2(UCHAR *psrc,UCHAR n_byte) { SendCommand375(R_USB_DATA); ReadData375(&n_byte,1); //讀數(shù)據(jù)長(zhǎng)度 ReadData375(psrc,n_byte);//讀數(shù)據(jù),這里讀的數(shù)據(jù)不包括數(shù)據(jù)長(zhǎng)度嗎?我感覺(jué)不包括可是都是從同一地址讀出的應(yīng)該包括啊,請(qǐng)指點(diǎn) } void WriteData375(UCHAR *psrc,UCHAR n_byte) { UCHAR q0; for (q0=0;q0 { XBYTE(USB_DATA_ADR)=(*psrc); _delay_cycles(15); psrc++; }

void ReadData375(UCHAR *pdest,UCHAR n_byte) { UCHAR q0; for (q0=0;q0 { *pdest= XBYTE(USB_DATA_ADR); _delay_cycles(15); pdest++; }

} 文字文字


熱門(mén)產(chǎn)品 : CH390:以太網(wǎng)控制器芯片

(1)端點(diǎn)不相同,端點(diǎn)2其實(shí)是分為上傳和下傳,對(duì)應(yīng)的緩沖區(qū)分為上傳緩沖區(qū)和下傳緩沖區(qū),不是同一個(gè),數(shù)據(jù)無(wú)法回讀 (2)寫(xiě)完一包數(shù)據(jù)不可以緊接著寫(xiě)下一包,必須等前一包處理結(jié)束,產(chǎn)生EP2_OUT中斷后,才能寫(xiě)下一包。 (3)對(duì)于CH375作設(shè)備,可以下載CH372EVT.ZIP,里面有上下位機(jī)例程,先熟悉一下


另外: CH372內(nèi)部有命令解釋器,并不是直接對(duì)寄存器操作的.關(guān)于長(zhǎng)度的問(wèn)題,第一個(gè)字節(jié)是長(zhǎng)度,接下來(lái)是數(shù)據(jù).第一個(gè)就是長(zhǎng)度,已經(jīng)被讀出來(lái)了.所以再讀的話就沒(méi)有了.


按你們說(shuō)的而臥又修改了一下,還是不行。下面是我的中斷函數(shù)和主函數(shù),請(qǐng)幫忙看看,我是初學(xué)者不好意思啊,

/*****************************************************************************

對(duì)CH375的中斷進(jìn)行處理 ********************************************************************************/ void DoInt375() { UCHAR i; UCHAR q0; UCHAR kk; // UINT sum; // SendCommand375(GET_STA); // ReadData375(&q0,1); q0=Get_Staut(); switch(q0) { case 0x02: //批量端點(diǎn)/端點(diǎn)2接收到數(shù)據(jù),OUT表示事務(wù)成功 SendCommand375(R_USB_DATA); //寫(xiě)讀端點(diǎn)2數(shù)據(jù)的命令 ; ReadData375(&q0,1); //讀端點(diǎn)2收到的數(shù)據(jù)的字節(jié)數(shù) if(q0!=0) { ReadData375(UsbReBuf,q0); //讀取數(shù)據(jù),釋放緩沖區(qū) if (q0==4) { for(i=0;i<4;i++) { kk=UsbReBuf[i];

UsbSendBuf[i]=kk; i++; }

for(i=0;i<4;i++) {

UsbSendBuf[i]=~UsbSendBuf[i]; i++; } IsSend=1;

}

} break; case 0x0A: //批量端點(diǎn)/端點(diǎn)2發(fā)送完數(shù)據(jù),IN表示事務(wù)成功 SendCommand375(ULK_USB); //釋放當(dāng)前USB緩沖區(qū) break; }

} void main()

{ Ch375Init(); EX0=1; EA=1; //while(!Test375()); while(1) { if(IsSend==1) { IsSend=0; WrPoint2(UsbSendBuf,4); }

}

}


既然初次接觸,建議不要如此大的修改我們提供的函數(shù),您只要根據(jù)硬件去修改一下讀寫(xiě)函數(shù)就可以了.另外您這個(gè)函數(shù)是按位取反然后上傳的嗎?這是實(shí)現(xiàn)不了的.參考:CH372EVT.ZIP


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频