[求助]CH375初始化失敗

我用串口方式,USB主機(jī)模式,做塊板子。實(shí)現(xiàn)單片機(jī)讀取U盤數(shù)據(jù)。可我在程序初始化CH375事失敗了。我用示波器測(cè)量發(fā)現(xiàn),CH375的晶振正常,工作電壓也正常,可是我把程序燒進(jìn)去的時(shí)候,在程序中初始化CH375芯片(想必同時(shí)也對(duì)CH375進(jìn)行復(fù)位吧),可是我用示波器測(cè)試其INT#管腳,卻沒有出現(xiàn)過低電平。正常情況下,不是初始化CH375芯片的情況下會(huì)出現(xiàn)INT#輸出低電平的嗎?我的CH375到底怎么了?

以下是我的簡(jiǎn)單測(cè)試CH375識(shí)別U盤程序: main() { UINT8 i; PORTA = 0x00;//單片機(jī)A端口初始化 DDRA = 0xFF; PORTC = 0xFF;//單片機(jī)C端口初始化 DDRC = 0xFF; init_lcd(); init_lcd(); mInitSTDIO( ); LCD_write_string(0,0,"Start" ); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); i = CH375LibInit( ); /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它電路初始化 */ xWriteCH375Cmd( 0x06 ); /* 測(cè)試CH375是否正常工作 */ xWriteCH375Data( 0x55 ); /* 寫入測(cè)試數(shù)據(jù) */ i = ~ 0x55; /* 返回?cái)?shù)據(jù)應(yīng)該是測(cè)試數(shù)據(jù)取反 */ if ( xReadCH375Data( ) != i ) { /* CH375不正常 */ LCD_write_string(0,0,"wrong" ); for ( i=80; i!=0; i-- ) { xWriteCH375Cmd( 0x05 ); /* 多次重復(fù)發(fā)命令,執(zhí)行硬件復(fù)位 */ } } else LCD_write_string(0,0,"right" ); }

(1)失敗了,返回值是多少呢? (2)“不是初始化CH375芯片的情況下會(huì)出現(xiàn)INT#輸出低電平的嗎”,我們手冊(cè)中從來(lái)沒這么說過,不知道你是從哪兒看到的??!


返回的值是“tart”,我的錯(cuò)誤停機(jī)程序是:

void mStopIfError( UINT8 iError ) { unsigned char *k; k=&iError; if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ LCD_write_string(0,0,k); /* 顯示錯(cuò)誤 */ mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); } (2)我是在CH37說明書里的管腳說明里看到的,里面說:在復(fù)位完成后為中斷請(qǐng)求輸出,低電平有效。


做了下測(cè)試命令,測(cè)試命令返回值不正確。會(huì)是什么問題?


返回值是多少?你用什么數(shù)據(jù)測(cè)試的?這個(gè)問題很多,比如硬件連接不正確,讀寫時(shí)序不正確.你循環(huán)發(fā)送數(shù)據(jù)看看各引腳是不是正確.


(1)檢查硬件連接有沒有錯(cuò)誤. (2)檢查串口配置是否出錯(cuò).串口通訊默認(rèn)情況下為波特率9600,9位串口,發(fā)送命令第9為為1,數(shù)據(jù)為0.


我認(rèn)真看過了,電路圖完全按照貴公司給的串口方式連接,晶振工作正常,VCC,GND都正常,可是為什么初始化不成功?而且停機(jī)錯(cuò)誤返回的值居然是“tart”,是之前“Start”的后面幾個(gè)字符,而不是庫(kù)里面的錯(cuò)誤代碼。

M16串口波特率設(shè)置如下: UBRRH = 0; UBRRL = 47; /* 9600bps@7.3728MHz */ UCSRB = 0x1C; /* BIT(RXEN) | BIT(TXEN);|BIT(UCSZ2) */ UCSRC = 0x86; /* BIT(UCSZ1) | BIT(UCSZ0); 9個(gè)數(shù)據(jù)位*/

讀寫函數(shù)如下:

void xWriteCH375Cmd( UINT8 mCmd ) { UCSRA|=0x41;//TXCIE=1;TXB8=1; //TXCIE = 1,發(fā)送時(shí)使能中斷TXB8 = 1, 1表示地址,0 表示數(shù)據(jù) UCSRB|=0x40;//TXC=1; 發(fā)送數(shù)據(jù)開始 UDR = mCmd; //發(fā)送緩沖器 while (UCSRB&0x0BF==0X40); delay2us( ); delay2us( ); }

void xWriteCH375Data( UINT8 mData ) { UCSRA|=0x40;//TXCIE = 1,發(fā)送時(shí)使能中斷TXB8 = 0, 1表示地址,0 表示數(shù)據(jù) ; UCSRB|=0x40; //TXC=1 發(fā)送數(shù)據(jù)開始 UDR = mData; while (UCSRB&0x40==0x40); delay2us( ); }

UINT8 xReadCH375Data( void ) { delay2us(); UCSRA|=0x80;//RXCIE = 1,發(fā)送時(shí)使能中斷RXB8=0, 1表示地址,0 表示數(shù)據(jù); UCSRB|=0x80;//接收數(shù)據(jù)開始 RXC=1 while (UCSRB&0x80==0x80); return(UDR); }

哎,到現(xiàn)在我實(shí)在是搞不懂錯(cuò)誤在哪里?


你本身和我們芯片串口連接之后還可以通過串口發(fā)送數(shù)據(jù)?這種方式是一定不允許的.把所有的串口輸出全部去掉.


您可以再說得詳細(xì)點(diǎn)嗎?我不是很明白。


你使用的是串口方式來(lái)與CH375通訊,就不能再使用該串口來(lái)監(jiān)視程序,否則會(huì)造成數(shù)據(jù)干擾導(dǎo)致CH375誤操作的,換一種監(jiān)視方式.


你使用的是串口方式來(lái)與CH375通訊,就不能再使用該串口來(lái)監(jiān)視程序,否則會(huì)造成數(shù)據(jù)干擾導(dǎo)致CH375誤操作的,換一種監(jiān)視方式.


那還能用什么監(jiān)視程序?


用LED指示操作成功還是失敗


解決了嗎?我也是同樣的問題,內(nèi)置模式可以初始化,外置就報(bào)無(wú)法識(shí)別的USB


內(nèi)置模式可以初始化則表示硬件連接和接口程序基本是沒問題的,外置固件無(wú)法識(shí)別,是因?yàn)槊枋龇畔]有成功傳給PC,仔細(xì)檢查枚舉部分的程序。 另,下載CH372EVT.ZIP,參考\CH372EVT\PUB\XFIRM,這是外置固件例程


我沒做到什么指示燈,我只用LED1602來(lái)監(jiān)視程序進(jìn)度。我看了CH375LIB\MCS51\FILELIB5\EXAM7里的串口程序,里面監(jiān)視程序也用到串口的寄存器TI,怎么解析呢?為什么說用串口方式與CH375通訊就不能用串口來(lái)監(jiān)視程序呢?難道我板子是串口方式,卻用并口的監(jiān)視程序嗎?


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

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