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

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

hao.


ding


不錯


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

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


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


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


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


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


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


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


不錯不錯,還可以


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


請問(wèn):

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

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


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


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


只有登錄才能回復,可以選擇微信賬號登錄
97精品依人久久久大香线蕉97-亚洲欧美日韩一区二区三区-国产亚洲欧美精品久久久-久久99精品久久久大学生-亚洲成a人片在线不卡一二三区 97精品依人久久久大香线蕉97-亚洲欧美日韩一区二区三区-国产亚洲欧美精品久久久-久久99精品久久久大学生-亚洲成a人片在线不卡一二三区