關于CH372地址問題

我的單片機不能與CH372正常通信,不能設置工作模式,我想問下I/O地址是多少,單片機與372是直接相連的,D0-D7接P2.0-P2.7,P3.4接WR,P3.5接RD,P3.7接A0,CS接地。我想問下CH372_CMD_PORT和CH372_DAT_PORT,為多少呀!還有就是CH372晶振一個腳對地是1.8V,另一個有3.8V-4V,會不會對通訊有很大影響呀!

你是用IO口模擬總線去操作CH372的,那么就不存在CH372_CMD_PORT和CH372_DAT_PORT,你硬件修改一下,參考下面的讀寫時序: /* 單片機的引腳 CH372芯片的引腳 P3.2 INT# P1.0 A0 P1.1 CS# 如果模擬出的并口上只有CH372,那么CS#可以直接接低電平,強制片選 P1.2 WR# P1.3 RD# P0(8位端口) D7-D0 */ sbit CH372_A0 = P1^0; sbit CH372_CS = P1^1; sbit CH372_WR = P1^2; sbit CH372_RD = P1^3;

void mDelay1_2uS( ) /* 至少延時1.2uS,根據(jù)單片機主頻調整 */ { return; }

void CH372_PORT_INIT( ) /* 由于使用通用I/O模塊并口讀寫時序,所以進行初始化 */ { CH372_CS = 1; CH372_WR = 1; CH372_RD = 1; CH372_A0 = 0; P0 = 0xFF; /* 并口輸入 */ }

void xWriteCH372Cmd( UINT8 mCmd ) /* 外部定義的被CH372程序庫調用的子程序,向CH372寫命令 */ { mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時1uS */ P0 = mCmd; /* 向CH372的并口輸出數(shù)據(jù) */ CH372_A0 = 1; CH372_CS = 0; CH372_WR = 0; /* 輸出有效寫控制信號, 寫CH372芯片的命令端口 */ CH372_CS = 0; /* 該操作無意義,僅作延時,CH372要求讀寫脈沖寬度大于100nS */ CH372_WR = 1; /* 輸出無效的控制信號, 完成操作CH372芯片 */ CH372_CS = 1; CH372_A0 = 0; P0 = 0xFF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時2uS */ }

void xWriteCH372Data( UINT8 mData ) /* 外部定義的被CH372程序庫調用的子程序,向CH372寫數(shù)據(jù) */ { P0 = mData; /* 向CH372的并口輸出數(shù)據(jù) */ CH372_A0 = 0; CH372_CS = 0; CH372_WR = 0; /* 輸出有效寫控制信號, 寫CH372芯片的數(shù)據(jù)端口 */ CH372_CS = 0; /* 該操作無意義,僅作延時,CH372要求讀寫脈沖寬度大于100nS */ CH372_WR = 1; /* 輸出無效的控制信號, 完成操作CH372芯片 */ CH372_CS = 1; P0 = 0xFF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); /* 至少延時1.2uS */ }

UINT8 xReadCH372Data( void ) /* 外部定義的被CH372程序庫調用的子程序,從CH372讀數(shù)據(jù) */ { UINT8 mData; mDelay1_2uS( ); /* 至少延時1.2uS */ P0 = 0xFF; /* 輸入 */ CH372_A0 = 0; CH372_CS = 0; CH372_RD = 0; /* 輸出有效寫控制信號, 讀CH372芯片的數(shù)據(jù)端口 */ CH372_CS = 0; /* 該操作無意義,僅作延時,CH372要求讀寫脈沖寬度大于100nS */ mData = P0; /* 從CH372的并口輸入數(shù)據(jù) */ CH372_RD = 1; /* 輸出無效的控制信號, 完成操作CH372芯片 */ CH372_CS = 1; return( mData ); }


我想問一下CH372A和CH372B有什么區(qū)別呀,我用同樣的程序初始化不同芯片怎么結果不同呀!


沒什么本質的區(qū)別。CH372B比CH372A的速度快,溫度特性更好,軟件上是兼容CH372A的。 具體的結果是什么?


我昨天對CH272B初始化程序,電腦也能識別驅動也裝上了,可是第二次就不行了,我能夠返回值 我寫CMD_SET_USB_MODE這個命令后,返回0X51應該正常吧,可是我發(fā)CMD_CHECK_EXIST這個命令后再寫入數(shù)據(jù),返回的數(shù)據(jù)就不正常了,并不是取反的值,我檢查電路,發(fā)現(xiàn)晶振不正常了,D+也為0V ,電腦連硬件插入的提示都沒有了。我換其它晶振都無法正常工作。我又換了一塊372A的試,結果又出現(xiàn)相同情況,返回值全是0XFF我現(xiàn)在都不敢再試了。我的電路圖你們也曾經(jīng)看過說沒問題。問題會在什么地方呢?難道是我的程序有問題?


晶振有問題,你換個晶振實驗一下,晶振不起振可能是 1 如果是用助焊劑焊接的小電容,由于助焊劑有導電成分,有時會振蕩不起來. 2 在電源為3.3v的情況下,有時不太容易起振,可以將XI端的電容降到10P或者干脆去掉. 3 根據(jù)經(jīng)驗有的小電容和晶振受潮漏電,導致不起振. 4 萬用表或者示波器測量過程中會由于并聯(lián)電容電阻的存在導致停振

"萬用表負端接芯片GND,測XI和XO引腳對地電阻,如果電阻較小,說明晶體或者電容漏電,小于幾百K可能就會導致無法振蕩, 兩個電容用15p左右的,如果XI端的電容量小些比較容易起振"


我的電源是用的5V 供電,我很想問的是D+開始為3.3V,不知怎么的,調試一會D+就為0V 了,電路工作不正常,芯片壞的可能性大嗎?


只有登錄才能回復,可以選擇微信賬號登錄

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