[求助]請教用CH375讀第一個(gè)扇區(qū)需要6~8秒,為何?

Uint8 USB_LbaRead(Uint8 *buffaddr,Uint32 lbaaddress,Uint8 sectornum) { Uint8 temp; Uint16 bufferlen=0;

USB_WRITE_CMD = USB_DISK_READ; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>0)&0xff; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>8)&0xff; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>16)&0xff; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>24)&0xff; DELAY_MS(20); USB_DATA_OPT = sectornum; DELAY_MS(20); while (1) { while(IOPIN0&USB_INIT_PORT); DELAY_MS(1000); USB_WRITE_CMD = USB_GET_STATUS; DELAY_MS(20); temp = USB_DATA_OPT; switch (temp) { case USB_INT_DISK_READ: USB_DataRead(&buffaddr[bufferlen]); bufferlen+=usbrvelen; USB_WRITE_CMD = USB_DISK_RD_GO; break; case USB_INT_SUCCESS: return 1; default : return 0; } } }

主要是延遲,一般都要加個(gè)20MS的延時(shí),特別是中斷的時(shí)候要加個(gè)1000MS的延時(shí),這樣才能讀64個(gè)字節(jié)。再做個(gè)8次循環(huán),呵呵 那個(gè)時(shí)間我調(diào)整過,只要少于立馬讀出來的全是00,加延遲數(shù)據(jù)就對。

不要告訴我用你們的那個(gè)文件庫,因?yàn)槟銈冞@個(gè)庫KEIL報(bào)錯(cuò),格式不識(shí)別。

讀寫脈寬設(shè)置圖: 20108161624398.jpg

你把你的三個(gè)讀寫子函數(shù)貼出來看下,明顯的你加這么長延時(shí)導(dǎo)致了讀寫速度太慢啊。


#define USB_WRITE_CMD *((volatile Uint8 *)0x83000001) #define USB_DATA_OPT *((volatile Uint8 *)0x83000000)

void USB_DataRead(Uint8 *buffaddr) { Uint8 i;

USB_WRITE_CMD = USB_RD_DATA; DELAY_MS(10); usbrvelen = USB_DATA_OPT; for(i=0;i { *buffaddr = USB_DATA_OPT; buffaddr++; } }


你看看,你是不是說的這幾個(gè)讀寫


這個(gè)函數(shù)延時(shí)這么長時(shí)間??隙ú恍械?,你看一下CH375DS1并口時(shí)序部分,按照時(shí)序做。 我們提供的庫不會(huì)報(bào)錯(cuò),如果報(bào)錯(cuò)則可能是你添加錯(cuò)誤導(dǎo)致的。這些庫都是經(jīng)過實(shí)際驗(yàn)證的。否則不會(huì)傳到網(wǎng)上去的。每個(gè)庫都有一個(gè)對應(yīng)的頭文件,在頭文件的開始部分會(huì)有對庫的描述,編譯器及其版本號等其他的的要求。另外您可以把錯(cuò)誤信息貼出來,我們判斷錯(cuò)誤大概是由于什么來引起的。每種MCU,每種編譯器都有對應(yīng)的庫,庫文件名:CH375LIB.ZIP,可以到在線下載里搜索。根據(jù)MCU和編譯器選擇適合您的庫

讀寫物理扇區(qū)的函數(shù),你到在線下載里搜索CH375EVT.ZIP,里面有參考程序 CH375EV0.C,你參考這個(gè)去寫。如果MCU的速度足夠快的話,CH375讀U盤應(yīng)該能達(dá)到500-600KB/S。


你沒有看清楚我的說明嗎?我也不想延長這么長呀,關(guān)鍵不延長這么長讀不出來呀。 另外我用的是KEIL 3.55A,LPC2200系列MCU,你說我該用那個(gè)庫呀。你告訴我那個(gè)庫,我添加貼圖過來給你看看是不是我添加庫出錯(cuò),還是不識(shí)別你們的庫


幫我仔細(xì)看看嘛,你們說的這些我都也注意了,想不明白所以才找你們


看來延時(shí)要加對地方,否則出力不討好


需要看下你總線配置,因?yàn)榕渲檬强赡軐?dǎo)致你的總線速度過快,你有沒有測試過你一個(gè)讀寫脈沖寬度是多少?。?/p>


別著急,你仔細(xì)看看說明書,舉個(gè)例子: void USB_DataRead(Uint8 *buffaddr) { Uint8 i;

USB_WRITE_CMD = USB_RD_DATA; DELAY_MS(10); usbrvelen = USB_DATA_OPT; for(i=0;i{ *buffaddr = USB_DATA_OPT; buffaddr++; } }

這里的DELAY_MS(10);就是不對的。只需要延時(shí)1.5-2US即可。 USB_WRITE_CMD = USB_DISK_READ; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>0)&0xff; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>8)&0xff; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>16)&0xff; DELAY_MS(20); USB_DATA_OPT = (lbaaddress>>24)&0xff; DELAY_MS(20); USB_DATA_OPT = sectornum; DELAY_MS(20); 這里也是不對的。你沒有按照我們提供的時(shí)序去做。所以建議你看一下CH375DS1,和CH375EV0.C 你看看里面是怎么寫的,然后去參考。 8樓已經(jīng)告訴你了。檢查你的讀寫脈沖是否符合要求。之所以會(huì)產(chǎn)生你說的現(xiàn)象,可能就是讀寫脈沖不對,導(dǎo)致需要在后面加很長的延時(shí),這是有可能的。


我的讀寫脈沖設(shè)置抓圖給你,幫我看看合適不? 啊,怎么上圖?


讀寫脈寬設(shè)置在一樓 然后我更下面的這樣 void USB_DataRead(Uint8 *buffaddr) { Uint8 i;

USB_WRITE_CMD = USB_RD_DATA; DELAY_NS(10); usbrvelen = USB_DATA_OPT; for(i=0;i{ *buffaddr = USB_DATA_OPT; buffaddr++; DELAY_NS(5); } }

USB_WRITE_CMD = USB_DISK_READ; DELAY_NS(10); USB_DATA_OPT = (lbaaddress>>0)&0xff; DELAY_NS(10); USB_DATA_OPT = (lbaaddress>>8)&0xff; DELAY_NS(10); USB_DATA_OPT = (lbaaddress>>16)&0xff; DELAY_NS(10); USB_DATA_OPT = (lbaaddress>>24)&0xff; DELAY_NS(10); USB_DATA_OPT = sectornum; DELAY_NS(10);


兩位再幫我琢磨琢磨,該怎么樣提高讀出數(shù)據(jù)速度


就是需要你的時(shí)序圖來看下符合不符合我們芯片的讀寫時(shí)序,因?yàn)槟悴捎玫氖歉咚賳纹瑱C(jī),所以要特別注意這些地方。


圖不需要上傳,按照下面的時(shí)序做: CH375B 命令碼與命令碼之間的間隔時(shí)間 1.5 uS CH375B 命令碼與數(shù)據(jù)之間的間隔時(shí)間 1.5 uS CH375B 數(shù)據(jù)與數(shù)據(jù)之間的間隔時(shí)間 0.6 uS 有效的寫選通脈沖WR 的寬度 60 nS 有效的讀選通脈沖RD 的寬度 60 nS RD 或WR 前的地址輸入建立時(shí)間 5 nS RD 或WR 后的地址輸入保持時(shí)間 5 nS 寫選通WR 前的數(shù)據(jù)輸入建立時(shí)間 0 nS 寫選通WR 后的數(shù)據(jù)輸入保持時(shí)間 5 nS 讀選通RD 有效到數(shù)據(jù)輸出有效 0 nS 讀選通RD 無效到數(shù)據(jù)輸出無效 0 nS

CH375DS1 第12頁。你測試一下你現(xiàn)在的讀寫低電平的脈沖寬度,自己調(diào)節(jié)一下,然后調(diào)節(jié)一下。 寫命令之前延時(shí)1US,之后延時(shí)2US, 寫數(shù)據(jù)后延時(shí)1US 讀數(shù)據(jù)前延時(shí)1US。 調(diào)試好時(shí)間后,做測試命令,能通過表示讀寫正確。然后按照CH375EV0.C寫程序即可。你看看CH375EV0.C,按照以上提供的方法完全能夠解決你的問題了。


好,那我仔細(xì)測試,有目標(biāo)就有信心了


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

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