測試CH375是否工作,沒有成功,是什么原因?

測試CH375一直沒工作,不知道是我的代碼問題還是硬件的問題?

我的程序如下: // CH375 ATMAGE128 WR -- WR RD -- RD A0 -- PC1 CS -- PD2 //

#include #include #include #include #include #include

void SRAM_init(void); void w_sram(char wdata,uint16_t wadder); void delay_1ms(int a);

void main() { SRAM_init(); uint8_t aa=0x06; //測試命令 uint8_t bb=0x57; //測試數(shù)據(jù) uint8_t cc; //測試應(yīng)該返回的數(shù)據(jù) uint8_t dd=0x05; //復(fù)位命令 uint16_t addm=0x0200; //命令的地址 uint16_t adds=0x0100; //寫數(shù)據(jù)的地址 uint16_t addsf=0x0400; //讀數(shù)據(jù)的地址 //發(fā)送命令 w_sram(dd,addm); delay_1ms(100); //發(fā)送命令 w_sram(aa,addm); delay_1ms(10); //發(fā)送數(shù)據(jù) w_sram(bb,adds); //讀取數(shù)據(jù) delay_1ms(50); cc=*((char*)addsf); _SEI(); } //SRAM void SRAM_init(void) { sbi(MCUCR,SRE);//外部SRAM接口使能 sbi(DDRC,PC7); // 設(shè)置CS cbi(PORTC,PC7); }

/* 由于使用通用I/O模塊并口讀寫時序,所以進行初始化 */

void w_sram(char wdata,uint16_t wadder) { //*((char*)0x11ff)=a; *((char*)wadder)=wdata; }

//DELAY void delay_1ms(int a) { int m; int n; for(n=a;n>0;n--) { for(m=100;m>0;m--) { _delay_loop_1(10); } } }

把你的代碼寫詳細點,還有就是你測試命令不成功的話,那么,看下你測試命令返回的數(shù)據(jù)是多少?


我的程序如下: //硬件的連接 CH375 ATMAGE128 WR -- WR RD -- RD A0 -- PC1 CS -- PD2 //

//以下是程序 #include #include #include #include #include #include

void SRAM_init(void); void w_sram(char wdata,uint16_t wadder); void delay_1ms(int a);

void main() {

SRAM_init(); uint8_t aa=0x06; //測試命令 uint8_t bb=0x57; //測試數(shù)據(jù) uint8_t cc; //測試應(yīng)該返回的數(shù)據(jù) uint8_t dd=0x05; //復(fù)位命令 uint16_t addm=0x0200; //命令的地址 uint16_t adds=0x0100; //寫數(shù)據(jù)的地址 uint16_t addsf=0x0400; //讀數(shù)據(jù)的地址 //發(fā)送復(fù)位命令 w_sram(dd,addm); delay_1ms(100); //發(fā)送測試命令 w_sram(aa,addm); delay_1ms(10); //發(fā)送測試數(shù)據(jù) w_sram(bb,adds); //讀取測試數(shù)據(jù)CC delay_1ms(50); cc=*((char*)addsf); _SEI();//開全局中斷

} //使能并口外部SRAM void SRAM_init(void) { sbi(MCUCR,SRE);//外部SRAM接口使能 sbi(DDRC,PC7); // 設(shè)置CS cbi(PORTC,PC7); }

//向并口寫數(shù)據(jù)函數(shù) void w_sram(char wdata,uint16_t wadder) { //*((char*)0x11ff)=a; *((char*)wadder)=wdata; }

//DELAY延時函數(shù) void delay_1ms(int a) { int m; int n; for(n=a;n>0;n--) { for(m=100;m>0;m--) { _delay_loop_1(10); } } }

我的測試命令沒有成功,返回值是0XFF


程序中先不發(fā)復(fù)位命令,那你用示波器看下晶振可起振了,測下25腳和26腳電壓,看可成功復(fù)位(25腳為低電平,26腳為高電平).


不發(fā)復(fù)位命令也是一樣的結(jié)果,我的測試命令沒有成功,返回值是0XFF


25腳和26腳電壓是多少?


25腳是0V,26腳是5.2V


CS接在PD2上,你的地址中沒有將CS置0,那你在寫命令或讀寫數(shù)據(jù)時要將CS拉低,選中CH375.你可以測下CS腳的電平.或者你循環(huán)寫一個數(shù)據(jù),測下D0-D7,CS,WR的波形是不是正常的.


我按你說的方法做了還是不行,但是數(shù)據(jù)是送到CH375了,可是沒有返回數(shù)據(jù)。


數(shù)據(jù)送到CH375了,不可能沒有返回數(shù)據(jù)的,數(shù)據(jù)端口方向要設(shè)置正確.


我是用AVRSTUDIO仿真監(jiān)視并口的 數(shù)據(jù)讀寫情況,顯示數(shù)據(jù)已經(jīng)送出到并口數(shù)據(jù)線上,但返回數(shù)據(jù)是0XFF. 是不是不能用仿真調(diào)試?


那你直接下載到單片機里看下可不可以呢,有的仿真器速度上可能對CH375有影響,不滿足時序要求.


下到 單片機里 了 ,我送的數(shù)據(jù)是0X00返回數(shù)據(jù)應(yīng)該是0XFF,可是所有的數(shù)據(jù)管腳都是低電平。


那只有2種可能,一種就是375沒有工作,按照樓上所說的,375是工作的,還有一種可能就是你的片選這邊有問題,仔細檢查你的三個讀寫子函數(shù)。


看下是不是CH375被你搞壞了?


是不是我的代碼有問題呢? CH375的測試命令和數(shù)據(jù)之間要不要加延時?還是發(fā)送命令之后直接發(fā)數(shù)據(jù)? 單片機并口控制CH375是不是就和控制一個外部數(shù)據(jù)存儲芯片一樣?


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

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