命令GET_STATUS遇到的問(wèn)題

第一次使用CH375A芯片,使用的是89C52讀寫375A,遇到的問(wèn)題是 采用命令與375通訊,源程序如下: main(){ UINT8 Status,i; mDelaymS( 200 ); /* 延時(shí)200毫秒 */ CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* 硬件復(fù)位CH375 */ mDelayuS( 2 ); /* 延時(shí)2US */ Status=CH375_GET_IC_VER( ); /*******獲取芯片版本號(hào) */ Status=CH375_CHECK_EXIST( );/*******測(cè)試工作狀態(tài) */ mStopIfError( Status ); /**************************/ CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); /* 初始化CH375,設(shè)置USB工作模式 */ CH375_WR_DAT_PORT( 6 ); /* 模式代碼,自動(dòng)檢測(cè)USB設(shè)備連接 */ while( CH375_INT_WIRE ); /* 查詢等待CH375操作完成中斷(INT#低電平) */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷,獲取中斷狀態(tài) */ i= CH375_RD_DAT_PORT( ) ; /**************************/ …… } 其中:/*$$$$$$$$*/ UINT8 CH375_CHECK_EXIST( void ) { /* 測(cè)試CH375是否工作正常,返回操作狀態(tài):0表示工作正常;1表示錯(cuò)誤 */ UINT8 i=0xF0; /* 測(cè)試數(shù)據(jù)輸入 */ CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); mDelayuS( 2 ); CH375_WR_DAT_PORT( i ); mDelayuS( 2 );// i=CH375_RD_DAT_PORT( ); if( i == 0x0F ) return( 0 ); else return( 1 ); } /*$$$$$$$$*/ UINT8 CH375_GET_IC_VER( void ){ UINT8 i; CH375_WR_CMD_PORT( CMD_GET_IC_VER ); /* 查詢等待CH375版本號(hào) */ mDelayuS( 2 ); i=CH375_RD_DAT_PORT( ); return( i ); }

沒(méi)有調(diào)用庫(kù)函數(shù),只是采用命令調(diào)試。GET_IC_VER /*******獲取芯片版本號(hào) */ CHECK_EXIST/*******測(cè)試工作狀態(tài) */兩條命令都是正確的!但是在執(zhí)行命令GET_STATUS是為什么INT#線一直是低電平狀態(tài),我看他提供的數(shù)據(jù)手冊(cè)上說(shuō)在執(zhí)行完此命令后INT#引腳應(yīng)該CH375取消中斷,是不是為高電平?但是在上述程序中我測(cè)試了卻是一直為低電平。在此請(qǐng)教謝謝!

設(shè)置模式之后,375是不給你中斷的,你只需要在設(shè)置模式之后直接讀取下數(shù)據(jù)端口的數(shù)據(jù)就可以了,按照你那樣操作的話,你是永遠(yuǎn)也不會(huì)獲取到中斷的。判斷一直為低電平的最好檢測(cè)方法是將375的INT#腳撬起來(lái),直接用萬(wàn)用表來(lái)測(cè)中斷引腳的電壓。


是呀!應(yīng)該在這條命令中形成死循環(huán)while( CH375_INT_WIRE ); /* 查詢等待CH375操作完成中斷(INT#低電平) */ ,但是在上面程序中,這條語(yǔ)句執(zhí)行過(guò)去了,證明我的U盤插入了,但是在執(zhí)行完CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷,獲取中斷狀態(tài) */ i= CH375_RD_DAT_PORT( ) 后引腳INT#還為低電平(證明還有中斷,沒(méi)有取消中斷請(qǐng)求)?


U盤插入的話是有中斷的,也就是說(shuō)在你先插U盤在上電的話,中斷腳應(yīng)該會(huì)有低電平的,返回的中斷狀態(tài)是0X15,但是在你先上電在查U盤的話,那么,你在那是等不到中斷的,按照你的說(shuō)法,你的中斷引腳一直為低電平的話,那么,你就應(yīng)該將375的中斷引腳撬起來(lái),直接拿萬(wàn)用表去測(cè)中斷引腳是高還是低。如果是高的話,那就是你板子上面把375的中斷引腳拉低了。


謝謝!我回去再測(cè)試一下!


已經(jīng)解決了!


你好,我也出現(xiàn)了這情況,就是設(shè)置模式之后,375是不給中斷的,就一直等U盤插入,當(dāng)U盤插入后就一直中斷低電平,CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷,獲取中斷狀態(tài) */ i= CH375_RD_DAT_PORT( ) 后也不行,拔出U盤中斷返回值也為斷開值,就是一直在中斷拉不高,當(dāng)然也把腳抬試過(guò)


腳抬試過(guò)的話,那么,中斷引腳沒(méi)有變高嗎?


現(xiàn)在就個(gè)怪問(wèn)題,當(dāng)用中斷方式時(shí) /* CH375的INT#引腳連接51單片機(jī)的INT0引腳, 采用中斷方式 */ void CH375Interrupt( ) interrupt 0 using 1 { unsigned char i; EA=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); //* 獲取中斷狀態(tài)并取消中斷請(qǐng)求 for( i = 10; i != 0; i -- ); mIntStatus = CH375_RD_DAT_PORT( ); //* 獲取中斷狀態(tài) CH375_INT_FLAG = 0; //* 清中斷標(biāo)志 if ( mIntStatus == USB_INT_DISCONNECT ) mDeviceOnline = 0; //* 檢測(cè)到USB設(shè)備斷開事件 else if ( mIntStatus == USB_INT_CONNECT ) mDeviceOnline = 1; //* 檢測(cè)到USB設(shè)備連接事件 EA=1; } 當(dāng)插U盤時(shí)進(jìn)入中斷,但執(zhí)行CH375_WR_CMD_PORT( CMD_GET_STATUS ); 中斷引腳沒(méi)有變高又進(jìn)行下次的中斷. 還有用查詢方式如下: /* 等待CH375中斷并獲取狀態(tài) */ unsigned char mWaitInterrupt() { /* 主機(jī)端等待操作完成, 返回操作狀態(tài) */ unsigned char c; while((P3&0x04)==0x04); //CH375_INT_WIRE 查詢等待CH375操作完成中斷(INT#低電平) CH375_WR_CMD_PORT( CMD_GET_STATUS );/* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ c = CH375_RD_DAT_PORT( ); /* 返回中斷狀態(tài) */ if ( c == USB_INT_DISCONNECT ) mDeviceOnline = 0; /* 檢測(cè)到USB設(shè)備斷開事件 */ else if ( c == USB_INT_CONNECT ) mDeviceOnline = 1; /* 檢測(cè)到USB設(shè)備連接事件 */ return( c ); } 執(zhí)行后中斷引腳變高正常運(yùn)行.


hcn :能否把你QQ加下進(jìn)一步交流,我這整幾天了都是這問(wèn)題,我的QQ:463159441而我這只能用中斷方式謝謝


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

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