關(guān)于INT信號(hào)不變低的問題

我用ch375+44b0實(shí)現(xiàn)從功能,pc可以識(shí)別到它了,但是當(dāng)pc不停的向下發(fā)數(shù)據(jù)的時(shí)候,INT始終沒有拉低,用示波器測(cè)不到INT信號(hào),我的程序進(jìn)不了中斷。采用查詢也是沒有變低,請(qǐng)問有誰遇到類似問題嗎?是硬件還是軟件問題呢?


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

附上程序,請(qǐng)高手指教 #include"44b.h" #include "CH375INC.H" #include #include "def.h"

char CH375Interrupt( void ) { /* 清中斷 */ rINTPND = 0x00000000; /* 清除所有未決的中斷*/ rI_ISPC = 0x03FFFFFF; xWriteCH375Cmd( CMD_GET_STATUS ); /* 獲取中斷狀態(tài)并取消中斷請(qǐng)求 */ CH375IntStatus = xReadCH375Data( ); /* 獲取中斷狀態(tài) */ return(CH375IntStatus); // if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT; /* 檢測(cè)到USB設(shè)備斷開事件 */ // else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT; /* */ }

/* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫命令 */ void xWriteCH375Cmd( UINT8 mCmd ) { Delay(2);/* 至少延時(shí)1uS */ CH375_CMD_PORT = mCmd; Delay(2); /* 至少延時(shí)2uS */ } /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫數(shù)據(jù) */ void xWriteCH375Data( UINT8 mData ) { CH375_DAT_PORT = mData ; Delay(2); /* 至少延時(shí)1.2uS */ } /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù) */ UINT8 xReadCH375Data( void ) { UINT8 mData; Delay(2); /* 至少延時(shí)1.2uS */ mData = (UINT8)CH375_DAT_PORT; return( mData ); }

/* 延時(shí)指定毫秒時(shí)間,根據(jù)主頻調(diào)整,不精確 */ void mDelaymS( UINT32 ms ) { UINT32 i; while ( ms -- ) for ( i = 4000; i != 0; i -- ); }

/* 檢查操作狀態(tài),如果錯(cuò)誤則顯示錯(cuò)誤代碼并停機(jī) */ void mStopIfError( UINT8 iError ) { if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ while ( 1 ) { mDelaymS( 100 ); } }

/*375自測(cè)*/ void CH375_check(void) { unsigned char i,check_value; /* 測(cè)試CH375是否正常工作,可選操作,通常不需要 */ xWriteCH375Cmd( CMD_CHECK_EXIST ); /* 測(cè)試CH375是否正常工作 */ Delay(5); xWriteCH375Data( 0x55 ); /* 寫入測(cè)試數(shù)據(jù) */ // i = ~ 0x55; /* 返回?cái)?shù)據(jù)應(yīng)該是測(cè)試數(shù)據(jù)取反 */ Delay(5); if (xReadCH375Data( )==0xaa) {check_value=xReadCH375Data( );} else { /* CH375不正常 */ for ( i=80; i!=0; i-- ) { xWriteCH375Cmd( CMD_RESET_ALL ); /* 多次重復(fù)發(fā)命令,執(zhí)行硬件復(fù)位 */ xReadCH375Data( ); } xWriteCH375Cmd( 0 ); mDelaymS(100); /* 延時(shí)350ms */ while(1); } }

/* 設(shè)置USB工作模式, 必要操作 */ void ch375_mode_set() { unsigned short i; unsigned char value; xWriteCH375Cmd( CMD_SET_USB_MODE ); Delay(5); xWriteCH375Data(0x02 ); /* 設(shè)置為使用內(nèi)置固件的USB設(shè)備方式 */ Delay(5); for ( i=2000; i!=0; i-- ) {/* 等待操作成功,通常需要等待10uS-20uS */ value=xReadCH375Data( ); if ( value == CMD_RET_SUCCESS ) break; } if ( i==0 ) { //CH372/CH375存在硬件錯(cuò)誤 while(1); }; }

void Main(void) {

UINT8 i,length=0;

UINT8 buffer[64]; while(1); Port_Init();

/* CH375 復(fù)位 */ // CH375Reset( ); // Delay(50000); /* 延時(shí)50ms */

/* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ // i = CH375LibInit( ); // mStopIfError( i );

CH375_check( ); CH375_PORT_INIT( );

while ( 1 ) { /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ while(!(rPDATG&0x2)); ch375_mode_set(); Delay( 100000 ); switch ( CH375IntStatus ) { /* 分析中斷狀態(tài)處理 */ case USB_INT_EP2_OUT: { /* 批量端點(diǎn)下傳成功 */ xWriteCH375Cmd( CMD_RD_USB_DATA ); /* 從當(dāng)前USB中斷的端點(diǎn)緩沖區(qū)讀取數(shù)據(jù)塊,并釋放緩沖區(qū) */ length = xReadCH375Data( ); /* 首先讀取后續(xù)數(shù)據(jù)長(zhǎng)度 */ for ( i = 0; i < length; i ++ ) buffer[ i ] = xReadCH375Data( ); /* 接收數(shù)據(jù)包 */ /* 測(cè)試數(shù)據(jù)正確性,將接收到的命令包數(shù)據(jù)取反后返回給PC機(jī) */ xWriteCH375Cmd( CMD_WR_USB_DATA7 ); /* 向USB端點(diǎn)2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */ xWriteCH375Data( length ); /* 首先寫入后續(xù)數(shù)據(jù)長(zhǎng)度,回傳剛接收到的數(shù)據(jù)長(zhǎng)度 */ for ( i = 0; i < length; i ++ ) xWriteCH375Data( ~ buffer[ i ] ); /* 數(shù)據(jù)取反后返回,由計(jì)算機(jī)應(yīng)用程序測(cè)試數(shù)據(jù)是否正確 */ break; } case USB_INT_EP2_IN: { /* 批量數(shù)據(jù)發(fā)送成功 */ xWriteCH375Cmd( CMD_UNLOCK_USB ); /* 釋放當(dāng)前USB緩沖區(qū) */ break; } default: { /* 其它中斷,未用到,解鎖后退出即可 */ xWriteCH375Cmd( CMD_UNLOCK_USB ); /* 釋放當(dāng)前USB緩沖區(qū) */ break; } } } }


/* CH375 復(fù)位 */ CH375Reset( ); Delay(50000); /* 延時(shí)50ms */ /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ i = CH375LibInit( ); mStopIfError( i ); 請(qǐng)問上面的復(fù)位和初始化是否一定要,為什么沁恒的庫(kù)里沒有提供函數(shù)實(shí)體???


反正我知道初始化是一定要的~~


但是它的子程序庫(kù)里沒有初始化的函數(shù)實(shí)體,尤其是UINT8 CH375Init( void ) /* 初始化CH375 */ 這個(gè)函數(shù),就一個(gè)外部申明,我該怎么寫呢? 能不能發(fā)個(gè)給我 個(gè)人信息保護(hù),已隱藏


void CH375_INT( ) { unsigned char i; /* 測(cè)試CH375是否正常工作,可選操作,通常不需要 */ CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 測(cè)試CH375是否正常工作 */ CH375_WR_DAT_PORT( 0x55 ); /* 寫入測(cè)試數(shù)據(jù) */ i = ~ 0x55; /* 返回?cái)?shù)據(jù)應(yīng)該是測(cè)試數(shù)據(jù)取反 */ if ( CH375_RD_DAT_PORT( ) != i ) { /* CH375不正常 */ for ( i=80; i!=0; i-- ) { CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* 多次重復(fù)發(fā)命令,執(zhí)行硬件復(fù)位 */ CH375_RD_DAT_PORT( ); } CH375_WR_CMD_PORT( 0 ); Delay50ms( ); /* 延時(shí)50ms */ } /* 設(shè)置USB工作模式, 必要操作 */ CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); CH375_WR_DAT_PORT( 6); /* 設(shè)置為使用主機(jī)模式 */ for ( i=100; i!=0; i-- ) { /* 等待操作成功,通常需要等待10uS-20uS */ if ( CH375_RD_DAT_PORT( ) == CMD_RET_SUCCESS ) break;} }


UINT8 CH375LibInit( void ) /* 初始化CH375程序庫(kù)和CH375芯片,操作成功返回0 */ { CH375LibConfig = LIB_CFG_VALUE; /* CH375程序庫(kù)配置值 */ DISK_BASE_BUF[0] = 0; /* 該操作無意義,只是為了防止編譯器優(yōu)化時(shí)不產(chǎn)生DISK_BASE_BUF緩沖區(qū) */ if ( CH375GetVer( ) < CH375_LIB_VER ) return( 0xFF ); /* 獲取當(dāng)前子程序庫(kù)的版本號(hào),版本太低則返回錯(cuò)誤 */ return( CH375_Init( ) ); /* 初始化CH375 */ } CH375_Init( )函數(shù)是有返回值的,你的函數(shù)好像沒有返回值啊。那 i = CH375LibInit( ); mStopIfError( i );就編譯不過了


我測(cè)到中斷信號(hào)了,獲得狀態(tài)是對(duì)的,但是讀取的長(zhǎng)度還是不對(duì)為0


我用CH375做從模式,調(diào)通很久了。但運(yùn)行一直不太穩(wěn)定。真暈。


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

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