M64使能外部RAM(MCUCR = 0x80)時(shí)CH374U出現(xiàn)錯(cuò)誤0x81

如題,使用16M晶振,62256RAM,一旦關(guān)掉外部RAM使能(MCUCR = 0x00)就正常,偶爾也會(huì)有0x81,是什么回事?晶振正常,USB電壓正常,是不是讀寫函數(shù)有問題?

CH374是不是掛在外部總線上面的,訪問62256的地址是不是和CH374的地址有沖突


CH374U采用什么接口方式?并口的話,總線地址會(huì)不會(huì)沖突


模擬并口方式,62256完全占用A0~A14引腳(PA,PC),CH374U使用PF端口,控制信號(hào)使用PE端口,

#define LIB_CFG_INT_EN 0 /* CH374的INT#引腳連接方式,0為"查詢方式",1為"中斷方式"

這一句已經(jīng)注釋掉了//#define CH374_INT_WIRE PE6

另外ATMEGA64L最高晶振8M,我使用的是16M,(習(xí)慣性使用,沒發(fā)現(xiàn)有什么不良影響)


出現(xiàn)0X81是讀寫時(shí)序不正確,可能你開啟外部總線對(duì)CH374的讀寫時(shí)序有影響,仔細(xì)檢查一下哪個(gè)引腳會(huì) 有影響。


你把我們庫編譯的時(shí)候把地址都設(shè)置在內(nèi)部RAM,不要放在62256里面去看下有沒有問題?還有你需要確定下在開啟外部RAM的時(shí)候你在訪問的時(shí)候你拿示波器去看下你的CS以及WR,RD引腳上面有沒有信號(hào)?


#define CH374_A0_0 Pe2_0 //A0 = 0,可以讀寫數(shù)據(jù) #define CH374_A0_1 Pe2_1 //A0 = 1,可以寫命令或讀狀態(tài) #define CH374_CS_0 Pe3_0 #define CH374_CS_1 Pe3_1 #define CH374_WR_0 Pe5_0 #define CH374_WR_1 Pe5_1 #define CH374_RD_0 Pe6_0 #define CH374_RD_1 Pe6_1

#define CH374_DATA_DAT_OUT( d ) Pf=d; /* 向并口輸出數(shù)據(jù) */ #define CH374_DATA_DAT_IN( ) Pinf /* 從并口輸入數(shù)據(jù) */ #define CH374_DATA_DIR_OUT( ) Pf_out /* 設(shè)置并口方向?yàn)檩敵?*/ #define CH374_DATA_DIR_IN( ) Pf_in /* 設(shè)置并口方向?yàn)檩斎?*/

void CH374_PORT_INIT(void ) /* 由于使用通用I/O模擬并口讀寫時(shí)序,所以進(jìn)行初始化 */ { Pe_out; CH374_CS_1; CH374_WR_1; CH374_RD_1; CH374_A0_0; CH374_DATA_DIR_IN( ); /* 設(shè)置并口輸入 */ }

void Write374Index( UINT8 mIndex ) /* 向CH374寫索引地址 */ { CH374_DATA_DIR_OUT( ); /* 設(shè)置并口方向?yàn)檩敵?*/ CH374_DATA_DAT_OUT( mIndex ); /* 向CH374的并口輸出數(shù)據(jù) */ Pe_out; CH374_A0_1; CH374_CS_0; CH374_WR_0; /* 輸出有效寫控制信號(hào), 寫CH374芯片的索引端口 */ //CH374_CS_0; /* 該操作無意義,僅作延時(shí),CH374要求讀寫脈沖寬度大于70nS */ CH374_WR_1; /* 輸出無效的控制信號(hào), 完成操作CH374芯片 */ CH374_CS_1; CH374_A0_0; CH374_DATA_DIR_IN( ); /* 禁止數(shù)據(jù)輸出 */ }

void Write374Data( UINT8 mData ) /* 向CH374寫數(shù)據(jù),索引地址自動(dòng)加1 */ { CH374_DATA_DIR_OUT( ); /* 設(shè)置并口方向?yàn)檩敵?*/ CH374_DATA_DAT_OUT( mData ); /* 向CH374的并口輸出數(shù)據(jù) */ Pe_out; CH374_A0_0; CH374_CS_0; CH374_WR_0; /* 輸出有效寫控制信號(hào), 寫CH374芯片的數(shù)據(jù)端口 */ //CH374_CS_0; /* 該操作無意義,僅作延時(shí),CH374要求讀寫脈沖寬度大于70nS */ CH374_WR_1; /* 輸出無效的控制信號(hào), 完成操作CH374芯片 */ CH374_CS_1; CH374_DATA_DIR_IN( ); /* 禁止數(shù)據(jù)輸出 */ }

UINT8 Read374Data( void ) /* 從CH374讀數(shù)據(jù),索引地址自動(dòng)加1 */ { UINT8 mData; CH374_DATA_DIR_IN( ); /* 設(shè)置并口方向?yàn)檩斎?*/ Pe_out; CH374_A0_0; CH374_CS_0; CH374_RD_0; /* 輸出有效寫控制信號(hào), 讀CH374芯片的數(shù)據(jù)端口 */ CH374_CS_0; /* 該操作無意義,僅作延時(shí),CH374要求讀寫脈沖寬度大于70nS,強(qiáng)烈建議此處執(zhí)行一條空指令延時(shí)以確保并口有足夠時(shí)間輸入數(shù)據(jù) */ mData = CH374_DATA_DAT_IN( ); /* 從CH374的并口輸入數(shù)據(jù) */ CH374_RD_1; /* 輸出無效的控制信號(hào), 完成操作CH374芯片 */ CH374_CS_1; return( mData ); }

UINT8 Read374Data0( void ) /* 從索引端口讀出數(shù)據(jù),索引地址不變,適用于[讀出->修改->寫回]操作 */ { UINT8 mData; CH374_DATA_DIR_IN( ); /* 設(shè)置并口方向?yàn)檩斎?*/ Pe_out; CH374_A0_1; CH374_CS_0; CH374_RD_0; /* 輸出有效寫控制信號(hào), 讀CH374芯片的索引端口 */ CH374_CS_0; /* 該操作無意義,僅作延時(shí),CH374要求讀寫脈沖寬度大于70nS,強(qiáng)烈建議此處執(zhí)行一條空指令延時(shí)以確保并口有足夠時(shí)間輸入數(shù)據(jù) */ mData = CH374_DATA_DAT_IN( ); /* 從CH374的并口輸入數(shù)據(jù) */ CH374_RD_1; /* 輸出無效的控制信號(hào), 完成操作CH374芯片 */ CH374_CS_1; CH374_A0_0; return( mData ); }


貼上接口程序,火速求救!都一個(gè)星期了。。。


你把我們庫編譯的時(shí)候把地址都設(shè)置在內(nèi)部RAM,不要放在62256里面去看下有沒有問題? 請(qǐng)教上面的話是什么意思,如何設(shè)置把庫編譯的時(shí)候把地址都設(shè)置在內(nèi)部RAM?? 我使用ICC,程序都是直接copy原例子過來再修改一下接口的


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

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