單片機(jī)通過(guò)CH375讀寫(xiě)U盤(pán)文件的問(wèn)題解答

* 需要設(shè)計(jì)參考資料(光盤(pán)資料可以參考FILELIST.TXT文檔,網(wǎng)上資料更新) USB主機(jī)方式的應(yīng)用可以參考CH375的資料,與計(jì)算機(jī)連接的USB設(shè)備方式(或自己做U盤(pán))可以參考CH372 的資料。如果是讀寫(xiě)U盤(pán)并且用量較少或者是系統(tǒng)集成,關(guān)心快速入門(mén)并且簡(jiǎn)單易用,那么可以參考半成 品U盤(pán)文件讀寫(xiě)模塊的說(shuō)明CH375HM.ZIP;如果是做原始產(chǎn)品設(shè)計(jì),關(guān)心成本,那么可以參考CH375評(píng)估板 資料CH375EVT.ZIP,其中有單片機(jī)讀寫(xiě)U盤(pán)的多個(gè)例子源程序和U盤(pán)文件級(jí)子程序庫(kù)的API說(shuō)明。 在設(shè)計(jì)USB-HOST電路和PCB之前,強(qiáng)烈建議參考CH375的USB電路及PCB設(shè)計(jì)注意事項(xiàng)README.PDF。 常規(guī)問(wèn)題例如不工作/連接失敗可以參考CH372的問(wèn)題解答,關(guān)于USB傳輸速度可以參考評(píng)估板中的說(shuō)明。 * 有關(guān)U盤(pán)文件的一些基礎(chǔ)知識(shí) WINDOWS下U盤(pán)的文件系統(tǒng)主要有FAT12/FAT16/FAT32,我們的子程序庫(kù)都能支持,使用角度感覺(jué)無(wú)區(qū)別。 單片機(jī)不需要考慮文件系統(tǒng),只需要了解文件名、文件長(zhǎng)度等基礎(chǔ)知識(shí)。一個(gè)U盤(pán)中可以有多個(gè)文件,每 個(gè)文件都是一組數(shù)據(jù)的集合,以文件名區(qū)分和識(shí)別。文件長(zhǎng)度是指文件中有效數(shù)據(jù)的長(zhǎng)度,而實(shí)際占用 的磁盤(pán)空間通常大于或者等于文件長(zhǎng)度,實(shí)際文件數(shù)據(jù)的存放可能不是連續(xù)的,而是通過(guò)一組“指針” 鏈接的多個(gè)塊(也就是分配單元或簇),從而能夠根據(jù)需要隨時(shí)增大文件長(zhǎng)度以容納更多數(shù)據(jù)。目錄是 為了便于分類(lèi)管理,管理者可以人為指定將多個(gè)文件歸檔在一起,例如2004年的文件歸到一個(gè)目錄中。 * 讀寫(xiě)U盤(pán)中的文件對(duì)單片機(jī)有要求嗎 硬件上,單片機(jī)需要提供至少600字節(jié)的RAM,RAM多些可以提高速度,軟件上可以采用我們的子程序庫(kù), 但是產(chǎn)生的程序代碼可能會(huì)有幾K字節(jié),也就是說(shuō)單片機(jī)的程序空間必須能夠放得在幾K到十幾K的代碼。 具體的大小與單片機(jī)內(nèi)核有關(guān),MCS51單片機(jī)需要程序空間約8KB/全功能或5KB/簡(jiǎn)功能。 如果不能滿(mǎn)足上述條件,可以采用U盤(pán)文件讀寫(xiě)模塊,對(duì)單片機(jī)的硬件幾乎沒(méi)有要求,代碼要幾百字節(jié), RAM最少可以是幾個(gè)字節(jié)(數(shù)據(jù)流方式)或者幾十個(gè)字節(jié)(字節(jié)讀寫(xiě)方式)或者512字節(jié)(扇區(qū)方式)。 * 關(guān)于磁盤(pán)緩沖區(qū)DISK_BASE_BUF和文件緩沖區(qū)FILE_DATA_BUF 磁盤(pán)緩沖區(qū)用于分析U盤(pán)文件系統(tǒng),處理FAT和文件名等。文件緩沖區(qū)是可選的,但是為了提高速度,文 件緩沖區(qū)FILE_DATA_BUF應(yīng)該有幾K到幾十K的大小。在字節(jié)模式下完全不需要文件緩沖區(qū),使用下述的方 法禁止文件緩沖區(qū):在主程序中不要定義常量 FILE_DATA_BUF_LEN,那么就不需要文件緩沖區(qū)。 * 在子程序庫(kù)中如何使用雙緩沖區(qū),也就是一邊讀寫(xiě)U盤(pán),一連采集數(shù)據(jù)或者使用數(shù)據(jù) 使用CH375FileReadX或CH375FileWriteX子程序,在調(diào)用這兩個(gè)子程序之前,在命令參數(shù)中指定緩沖區(qū)的 起始地址,兩次操作分別使用兩個(gè)緩沖區(qū)的地址,實(shí)現(xiàn)雙緩沖區(qū)讀寫(xiě)。這種情況無(wú)需定義文件緩沖區(qū)。 對(duì)于一些特定應(yīng)用,例如播放MP3需要及時(shí)輸出數(shù)據(jù),那么可以在xQueryInterrupt中等待中斷時(shí)及時(shí)輸 出數(shù)據(jù),而不一定等到完全讀到緩沖區(qū)中再輸出,或者使用外部子程序方式,直接在子程序中輸出數(shù)據(jù)。 * 讀速度比較穩(wěn)定,而寫(xiě)速度有快有慢 由于大多數(shù)U盤(pán)采用的閃存是以16KB為一個(gè)塊進(jìn)行擦除的,所以在物理扇區(qū)號(hào)是16的倍數(shù)的位置向U盤(pán)寫(xiě) 入16KB數(shù)據(jù)是最快的,如果跨塊寫(xiě)U盤(pán)會(huì)稍慢些,如果是寫(xiě)不滿(mǎn)一個(gè)塊那么U盤(pán)還要先備份塊中其它部分 而導(dǎo)致速度下降,如果是一次寫(xiě)入幾十個(gè)字節(jié)的數(shù)據(jù),那么不僅U盤(pán)備份,連子程序庫(kù)也要備份一個(gè)扇區(qū) 中的其它部分(U盤(pán)讀寫(xiě)以512為最小基本單位),此時(shí)速度是最慢的。 * 單片機(jī)產(chǎn)生的文件在WINDOWS下無(wú)法讀取或者刪除不掉 首先文件名必須符合DOS規(guī)范(WINDOWS下的小寫(xiě)或長(zhǎng)文件名實(shí)際上都對(duì)應(yīng)一個(gè)自動(dòng)產(chǎn)生的DOS文件名): 1、文件名分為兩部分,主名和擴(kuò)展名,之間為小數(shù)點(diǎn)分開(kāi)。目錄名與文件名類(lèi)似,下同。 2、擴(kuò)展名可以省略,如果沒(méi)有擴(kuò)展名,小數(shù)點(diǎn)也必須省去,擴(kuò)展名代表文件類(lèi)型,只是代表而已。 3、主名長(zhǎng)度不超過(guò)8個(gè)字符,擴(kuò)展名長(zhǎng)度不超過(guò)3個(gè)字符。 4、必須是大寫(xiě)字母A-Z、數(shù)字0-9、下劃線等,而不能用特殊字符例如空格、斜杠、大于小于等。 5、文件名以00H結(jié)束。 例如有效文件名,字符串的最后以00H結(jié)束,C語(yǔ)言是"\x0": A B2KD9DI8 D4889.C D2004_12.TXT 中文.DOC 例如無(wú)效文件名(注:如果使用長(zhǎng)文件名子程序庫(kù)那么可以支持小寫(xiě)文件名和較長(zhǎng)的文件名) a 小寫(xiě) B2KD8D18X 主名太長(zhǎng) D48 89.C 空格無(wú)效 DOIW44I4.TXT2 擴(kuò)展名太長(zhǎng) 中文.DoC 小寫(xiě) 實(shí)際文件名還要加上左斜杠以指定目錄,例如,strcpy(mCmdParam.Create.mPathName,"/MYFILE.TXT"); 注意在C語(yǔ)言中容易出現(xiàn)strcpy(mCmdParam.Create.mPathName,"\MYFILE.TXT");右斜杠必須是兩個(gè)。 因?yàn)榇蠖鄶?shù)用戶(hù)都使用固定的文件名,不需要復(fù)雜的功能,所以我們沒(méi)有在程序庫(kù)中增加代碼自動(dòng)處理 大小寫(xiě)轉(zhuǎn)換等問(wèn)題,而是由用戶(hù)根據(jù)需要自行處理,以節(jié)約不需此功能時(shí)的代碼。 另外,寫(xiě)完文件后要及時(shí)修改文件長(zhǎng)度,如果寫(xiě)入了數(shù)據(jù)而文件長(zhǎng)度為0,那么WINDOWS也讀不出數(shù)據(jù)。 對(duì)于已經(jīng)發(fā)生錯(cuò)誤的U盤(pán),在重新使用前應(yīng)該在WINDOWS下做磁盤(pán)掃描,修正原有錯(cuò)誤后再使用。 * 在U盤(pán)中無(wú)法創(chuàng)建更多文件 對(duì)于FAT12和FAT16文件系統(tǒng)的U盤(pán),默認(rèn)情況下,根目錄下最多只能有512個(gè)文件(含子目錄和部分已被 刪除的文件),多了就無(wú)法創(chuàng)建。如果必須產(chǎn)生更多文件,兩種方法可選:一是創(chuàng)建子目錄,在子目錄 中可以無(wú)限制地創(chuàng)建更多文件;二是在FAT32文件系統(tǒng)的U盤(pán)根目錄下可以無(wú)限制地建議更多文件。創(chuàng)建 子目錄可以參考評(píng)估板資料中的EXAM9。為了提高效率和便于管理,建議單個(gè)目錄下文件不要太多。 * 如何了解當(dāng)前文件指針和當(dāng)前文件長(zhǎng)度 有兩個(gè)全局變量,文件總長(zhǎng)度CH375vFileSize、文件當(dāng)前指針CH375vCurrentOffset。 如果將文件看成一維數(shù)據(jù)流,那么文件指針是指當(dāng)前處于文件的哪個(gè)位置。移動(dòng)指針可以對(duì)文件的指定 位置進(jìn)行讀寫(xiě),移動(dòng)指針本身不會(huì)改變文件長(zhǎng)度,文件長(zhǎng)度只在關(guān)閉文件或更新長(zhǎng)度時(shí)才刷新到U盤(pán)中。 * 對(duì)于8086、80186、80386等80X86兼容的中低檔工控機(jī),如何支持U盤(pán) 有三種方案(具體參考網(wǎng)上CH375X86.ZIP中的說(shuō)明,用于從工控機(jī)備份數(shù)據(jù)到U盤(pán)等): 1、使用我們的80X86子程序庫(kù),與操作系統(tǒng)無(wú)關(guān),理論上支持任何操作系統(tǒng)。 2、使用DOS操作系統(tǒng)的CH375驅(qū)動(dòng)程序,會(huì)自動(dòng)增加一個(gè)D盤(pán)(如果已經(jīng)有D盤(pán)則是E盤(pán)),實(shí)際是U盤(pán), 硬件是一塊ISA(或PC104)插卡、PCI插卡、或者RS232串口板,支持U盤(pán)帶電熱插拔。 3、使用BIOS擴(kuò)展卡,硬件是一塊ISA或者PCI插卡,將U盤(pán)模似于第二物理硬盤(pán),支持U盤(pán)啟動(dòng)。 如果是用DOS操作系統(tǒng),那么建議用方案2,我們網(wǎng)上提供方案和硬件卡樣品,支持FAT12/16/32等。 * 子程序庫(kù)返回的各種錯(cuò)誤碼都代表什么意思 在CH375HF?.H頭文件中都有定義,例如 ERR_SUCCESS, ERR_DISK_FULL, 返回0x81即ERR_CH375_ERROR說(shuō)明是硬件連接錯(cuò)誤或者CH375不工作 返回0x91即ERR_MBR_ERROR說(shuō)明磁盤(pán)的主引導(dǎo)記錄無(wú)效(磁盤(pán)未分區(qū)或未格式化),或者RAM有問(wèn)題 返回0x10說(shuō)明是意外錯(cuò)誤,可能是硬件時(shí)序錯(cuò)誤或受干擾等 * CH375支持哪些U盤(pán) 目前CH375支持市面上90%以上的標(biāo)準(zhǔn)功能的U盤(pán),如果有U盤(pán)不支持,首先下載網(wǎng)上最新的子程序庫(kù)或者 升級(jí)模塊程序,如果仍然不支持,請(qǐng)將U盤(pán)型號(hào)發(fā)至我們的技術(shù)信箱,若能直接將U盤(pán)寄至我公司更好。 另外,帶特定額外功能的U盤(pán)可能不支持,內(nèi)置USB-HUB的U盤(pán)如果支持就要增加代碼。

hao.


ding


不錯(cuò)


長(zhǎng)長(zhǎng)一大片文章,密密麻麻,看不下去,能不能加大些行距,放大些字體?

還有:375做usb host讀自己的usb設(shè)備(非U盤(pán))需要demo板,選哪個(gè)demo板好?


沒(méi)有這么嚴(yán)重吧!好好看看??! 很不錯(cuò)的??!


看了介紹,感覺(jué)不錯(cuò). 但:請(qǐng)問(wèn)怎樣得到樣片和進(jìn)一步的資料?(或者說(shuō)的更明白些:具備怎樣的資格才能獲得樣片?)


我們正在開(kāi)發(fā)一個(gè)新產(chǎn)品,尋求過(guò)多種USB HOST的芯片控制U盤(pán),不僅太復(fù)雜,而且價(jià)格較高. 你們的CH375好象正好符合我們的需求,想獲得樣片及詳細(xì)資料.


請(qǐng)問(wèn),在用CH375用于USB-HOST開(kāi)發(fā)時(shí),如果數(shù)據(jù)傳輸采用芯片的串口,所有的API程序依然沒(méi)有問(wèn)題嗎? 用不用考慮BULK-ONLY和UFI等協(xié)議


如果用串口你可以采用庫(kù)5或者庫(kù)A自己配置端口就可以了.


庫(kù)5或者庫(kù)A是在library 里嗎?我沒(méi)有啊


不錯(cuò)不錯(cuò),還可以


用單片機(jī)通過(guò)CH375來(lái)讀U盤(pán)里的文件,怎么RecvByte()老沒(méi)有接收到數(shù)據(jù)?


請(qǐng)問(wèn):

我用的是C8051F系列的芯片,我已將此芯片的UART0波特率調(diào)整到115200,并用串口調(diào)試助手收發(fā)都正確, 當(dāng)我用它來(lái)調(diào)試我的U盤(pán)讀寫(xiě)模塊時(shí),我用的Demo程序是SER_ADC.c 那樣我只需改它就可以了吧! 模塊用USB調(diào)制完畢(3線制 + 大端口+波特率除數(shù)=6)。 如果可以的話,mCmdParam.BaudRate.mDivsor=22118400/32/115200 應(yīng)該傳給模塊的吧!

問(wèn)題: 我已經(jīng)發(fā)送了模塊要求的命令(波特率115200),但我就是收不到模塊發(fā)的數(shù)據(jù)! 請(qǐng)問(wèn) why? 請(qǐng)仙人指路??


模塊的晶振是18.432M的吧,18432000/32/115200=5; 你拿模塊配置工具配置也可以, 另外,在波特率高于115200時(shí),最好將模塊的晶振,改換成與你單片機(jī)晶振相同的頻率。 因?yàn)?,不同頻率的晶振在計(jì)算高波特率時(shí),產(chǎn)生的誤差可能疊加,導(dǎo)致通信不正常!


同事收到電話,就是這個(gè)問(wèn)題,是指模塊的晶振頻率除以32及波特率后的結(jié)果,而不是你單片機(jī)的晶振頻率


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

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