测试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; //测试数据 uint8_t cc; //测试应该返回的数据 uint8_t dd=0x05; //复位命令 uint16_t addm=0x0200; //命令的地址 uint16_t adds=0x0100; //写数据的地址 uint16_t addsf=0x0400; //读数据的地址 //发送命令 w_sram(dd,addm); delay_1ms(100); //发送命令 w_sram(aa,addm); delay_1ms(10); //发送数据 w_sram(bb,adds); //读取数据 delay_1ms(50); cc=*((char*)addsf); _SEI(); } //SRAM void SRAM_init(void) { sbi(MCUCR,SRE);//外部SRAM接口使能 sbi(DDRC,PC7); // 设置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); } } }

把你的代码写详细点,还有就是你测试命令不成功的话,那么,看下你测试命令返回的数据是多少?


我的程序如下: //硬件的连接 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; //测试数据 uint8_t cc; //测试应该返回的数据 uint8_t dd=0x05; //复位命令 uint16_t addm=0x0200; //命令的地址 uint16_t adds=0x0100; //写数据的地址 uint16_t addsf=0x0400; //读数据的地址 //发送复位命令 w_sram(dd,addm); delay_1ms(100); //发送测试命令 w_sram(aa,addm); delay_1ms(10); //发送测试数据 w_sram(bb,adds); //读取测试数据CC delay_1ms(50); cc=*((char*)addsf); _SEI();//开全局中断

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

//向并口写数据函数 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); } } }

我的测试命令没有成功,返回值是0XFF


程序中先不发复位命令,那你用示波器看下晶振可起振了,测下25脚和26脚电压,看可成功复位(25脚为低电平,26脚为高电平).


不发复位命令也是一样的结果,我的测试命令没有成功,返回值是0XFF


25脚和26脚电压是多少?


25脚是0V,26脚是5.2V


CS接在PD2上,你的地址中没有将CS置0,那你在写命令或读写数据时要将CS拉低,选中CH375.你可以测下CS脚的电平.或者你循环写一个数据,测下D0-D7,CS,WR的波形是不是正常的.


我按你说的方法做了还是不行,但是数据是送到CH375了,可是没有返回数据。


数据送到CH375了,不可能没有返回数据的,数据端口方向要设置正确.


我是用AVRSTUDIO仿真监视并口的 数据读写情况,显示数据已经送出到并口数据线上,但返回数据是0XFF. 是不是不能用仿真调试?


那你直接下载到单片机里看下可不可以呢,有的仿真器速度上可能对CH375有影响,不满足时序要求.


下到 单片机里 了 ,我送的数据是0X00返回数据应该是0XFF,可是所有的数据管脚都是低电平。


那只有2种可能,一种就是375没有工作,按照楼上所说的,375是工作的,还有一种可能就是你的片选这边有问题,仔细检查你的三个读写子函数。


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


是不是我的代码有问题呢? CH375的测试命令和数据之间要不要加延时?还是发送命令之后直接发数据? 单片机并口控制CH375是不是就和控制一个外部数据存储芯片一样?


只有登录才能回复,可以选择微信账号登录