我用的MC9S08控制CH372B,內(nèi)置固件模式,實(shí)現(xiàn)并口轉(zhuǎn)USB功能。為何讀數(shù)據(jù)/狀態(tài)時,最高位始終是1,6~0位是正確的。我發(fā)送命令、數(shù)據(jù)CH372B的響應(yīng)是正常的。更換了一片CH372B問題一樣。
您好,您可以確認(rèn)以下幾點(diǎn):
確認(rèn)兩顆芯片之間并口通訊是否正常,即發(fā)送讀獲取版本號命令,其次您設(shè)置為內(nèi)置固件模式,電腦是否正確識別到了372設(shè)備。
關(guān)于讀取數(shù)據(jù)的時候,您的MCU(控制芯片)IO的輸入配置是否正確。
檢查硬件電路,D7腳的連接是否正常,以及查看讀取數(shù)據(jù)的程序是否哪里有錯誤的操作。
您好,謝謝您及時的解答:
1、兩顆芯片通訊完全正常,我給CH372寫入的數(shù)據(jù)和命令都正常,讀出數(shù)據(jù)0~6位也正常,就第7位讀出一直為1;我都用你們的調(diào)試軟件試過,即單片機(jī)收到數(shù)據(jù)后,原樣返回;如果忽略第7位數(shù)據(jù),全部正常。電腦識別372設(shè)備正常;
2、我最不解的是為何同一個并口,只有1位會有問題?
2、我比較疑惑的是,我的IO口是8位口,都是統(tǒng)一操作的,為何會出現(xiàn)只有1位不正常?更換過CH372B,問題依舊。
我又進(jìn)行了如下實(shí)驗(yàn):
? ?上電后,不進(jìn)行任何設(shè)置,直接讀取并口數(shù)據(jù)。按照數(shù)據(jù)手冊的描述,讀出數(shù)應(yīng)該是0,但是讀到的是0x80。我用示波器測量D7信號,確實(shí)始終是高電平。而D0~D6,在RD信號為低時,會輸出低電平,RD信號為高時,會恢復(fù)到高電平。我又將單片機(jī)和D7連接的引腳斷開,D7也始終是高電平。最后我又將D7接到另一個輸入口上,讀到的也始終是1,實(shí)在沒有辦法了。
? ? 總之,就是上電后,我只執(zhí)行讀取操作,D7和D6~D0的效果就不一樣。
讀數(shù)子程序:
byte ch372_data_read(void)
{
? volatile byte recv_data1;??
? ? PTHDD=0x00;? ? ? ? ?//port input mode? ?
? ? DATA_WR;? //A0=0? ? ??
? ? CH372_RD_EN;? //RD=0;
? ? DELAY(1);
? ? SRS=0x00;
? ? recv_data1=PTHD;? ??
? ? CH372_RD_DIS;? ?//RD=1;
? return recv_data1;
}
以上是CH372電路,I/O引腳和MCU引腳直連
您好,看您的原理圖,這邊CH372的最小系統(tǒng)圖是沒有問題的。關(guān)于您讀取數(shù)據(jù)的函數(shù),請問您CS腳有控制么?讀取函數(shù)您可以參考這段代碼移植過去進(jìn)行嘗試。您也可以把MCU的D7腳接地,然后讀取數(shù)據(jù),看看是否也是為1.
? ?u8 PortData;? ?
? ?DATA_MODE_IN;? //把STM32連接CH375的數(shù)據(jù)端口配置成輸入,讀取CH372的數(shù)據(jù)
delay_us(10);? ?//延時
CS=0;? ? ? ? ? ?//打開片選
delay_us(10);
A0=0;? ? ? ? ? ?//數(shù)據(jù)模式
delay_us(10);
RD=0;? ? ? ? ? ?//打開讀使能
delay_us(10);
PortData = (u8)( GPIO_ReadInputData(GPIO_CH375_Data) );? //讀取數(shù)據(jù)
delay_us(10);
RD=1;? ? ? ? ? ?//關(guān)閉讀使能
delay_us(10);
CS=1;? ? ? ? ? ?//關(guān)閉片選
delay_us(10);
A0=1;? ? ? ? ? ?//恢復(fù)A0為高電平
delay_us(10);
? ?return PortData; //返回讀到的數(shù)據(jù)
你好,我想問一些關(guān)于CH376的問題:
1、文件屬性(創(chuàng)建時間、修改時間等)是在創(chuàng)建文件的時候自動生成的?還是需要我發(fā)指令,把這些屬性都寫到某個固定位置?【我實(shí)測發(fā)現(xiàn)在PC端顯示U盤中文件的創(chuàng)建時間、修改時間都不對,修改時間都是2004.01.01】
2、參照EXAM13例程,讀取文件屬性返回的長度為32,正確,但屬性內(nèi)容也全部為32,是哪里出錯了嗎?
你好,我想問一些關(guān)于CH376的問題:
1、文件屬性(創(chuàng)建時間、修改時間等)是在創(chuàng)建文件的時候自動生成的?還是需要我發(fā)指令,把這些屬性都寫到某個固定位置?【我實(shí)測發(fā)現(xiàn)在PC端顯示U盤中文件的創(chuàng)建時間、修改時間都不對,修改時間都是2004.01.01】
2、參照EXAM13例程,讀取文件屬性返回的長度為32,正確,但屬性內(nèi)容也全部為32,是哪里出錯了嗎?
直接修改文件屬性是可以成功的,比如直接把文件名的后綴從TXT改為EXL。但是如果要先判斷這個文件是不是TXT然后再修改的話,就得先把屬性讀出來判斷,這時讀取就會出錯。
讀到的文件屬性32好像一直是前面返回的長度,32對應(yīng)的字符是space(空格)。
因?yàn)槲矣譁y了讀U盤的廠商信息和產(chǎn)品信息,INQUIRY_DATA結(jié)構(gòu)體類型的大小為36,所以讀到的長度也是36正確,緊接著讀到的廠商信息和產(chǎn)品信息內(nèi)容也全是36,對應(yīng)的字符是$$$$$$$$$$$$$$$$$$$$$$$$$$$$
請問這是哪里的問題呢?望解答!謝謝
您好,正常來說廠商的這些信息都是unicode編碼,您可以看一下是否為編碼格式問題,導(dǎo)致的亂碼顯示等。