我用的是stc89c58rd+單片機(jī),現(xiàn)在可以和上位機(jī)通信,但是不能讀寫u盤。我用的是CHE75EVT中的程序,u盤插上去都不能檢測,而且編譯有74個(gè)警告,不知道出了什么問題,請指點(diǎn)一下。是不是ch375a對單片機(jī)或者u盤有限制啊,用的頭文件是hf6
那么多的警告,肯定是不正常的,是你沒有添加我們庫的原因,也不是CH375A對單片機(jī)或者U盤有限制,你用的是HF6的頭文件,那你就要添加庫6!!
謝謝,添加庫函數(shù)后,只剩一個(gè)警告了,我的金士頓u盤也能識別了,可是串口中老顯示 Start Wait UdiskReady ? Ready ? Ready ? Ready ? Ready ? Open Error: 1F 然后就運(yùn)行不下去了,那一個(gè)警告為“*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?CH375FILELOCATE?CH375SEC請指點(diǎn)一下
不知道你是用我們的程序還是你自己寫的程序,能將OPEN的程序發(fā)出來看看嗎?可能程序有點(diǎn)問題!
我就是用的你們的程序啊,是EXAM1中的程序,只是稍微改了一下地址,其它沒什么變化啊,而且我的電路基本上跟你們提供的電路一樣,就是A15地址線我的是用一個(gè)反相器反相后再接到ch375上的,地址線最高位跟你們的正好相反,已經(jīng)可以和上位機(jī)通信了,應(yīng)該地址線沒問題。 #include #include
#define CH375_CMD_PORT_ADDR 0x0FF1 /* CH375命令端口的I/O地址 */ #define CH375_DAT_PORT_ADDR 0x0FF0 /* CH375數(shù)據(jù)端口的I/O地址 */
#define DISK_BASE_BUF_ADDR 0x8000 #define FILE_DATA_BUF_ADDR 0x8200 #define FILE_DATA_BUF_LEN 0x7800
檢查下你的供電足不足,個(gè)別U盤電壓低與4。8V的話可能不能正常工作,還有就是你的USB口有沒有串接電阻。USB的4根線有沒有接反等,都有可能導(dǎo)致DISK-READY不能通過
我的USB口沒有串接電阻,只有USB的電壓端接了一個(gè)電阻然后和電源相連,你指的USB電壓是工作時(shí)的電壓還是工作前的電壓,我的調(diào)試板上電前測試USB有五點(diǎn)幾伏,上電后只有三點(diǎn)幾伏,是不是這個(gè)問題?USB四根線應(yīng)該沒接反,因?yàn)榭梢院蜕衔粰C(jī)通信了
我吧USB的VBUS端串聯(lián)的電阻改為2.5歐姆后U盤插入時(shí)的電壓變?yōu)榱?.16V大于4.8V了,還是不行,不過從串口中傳出的信息變?yōu)椋? Start Wait UdiskReady ? Open Error: 1F
少了幾個(gè)“Ready ?”語句,還望指點(diǎn)
你的磁盤緩沖區(qū)好像有點(diǎn)問題。 你有沒有外擴(kuò)RAM?stc89c58rd自帶1K的外部RAM,而你的磁盤緩沖區(qū)地址為0x8000,造成緩沖區(qū)溢出了
我已經(jīng)在程序中禁止STC89C58RD的外部ram了,前面定義了sfr AUXR=0x8e;main函數(shù)中AUXR=0x02;//禁止訪問內(nèi)部擴(kuò)展RAM,我的外擴(kuò)RAM為62256,32K,跟CH375Datasheet1中的并口方式連接一樣
那你的磁盤緩沖區(qū)溢出了,32K,最大地址為0x7FFF,而你的磁盤緩沖區(qū)卻從0x8000開始。
我的地址最高位是經(jīng)過7404取反得到的,所以從8000開始,原電路不是P2.7和CH375的CS相連么,然后我又將P2.7接到7404的一個(gè)輸入端,輸出端接到62256的cs端,這樣地址就是從8000開始了
我的QQ184976517,你能加我指點(diǎn)我一下么,這樣說不清楚
把圖貼出來看看
我不知道在么貼圖啊
磁盤讀寫是正確的,我單獨(dú)對62256讀寫,是可以進(jìn)行寫入和讀出操作的