写指令数据不对

1,我用的是STC58和375S,我的硬件电路是用的T0接的A0,片选CS直接接地.所以理论上我的375硬件地址可以任意设定,我设的数据/和指令地址分别为:0XFEF0/0XFFF0;

2,在写指令的时候T1置1,在读/写数据的时候T0置低.下载程序后,插上U盘有中断,但无论是写测试信号还是其他操作从375返回的都是FF00????,在写入获取中断状态并清中断的指令后,不能清中断,(貌似该指令没起作用)

不知道什么原因,个人认为是不是不应该用T0去控制区别指令和数据操作指令请斑竹指点!!!!!!!!!!!!

根据你的地址可以使用P2.0接375的A0引脚


(1)T0接的A0,那么应是模拟I/O方式操作CH375,不存在地址一说 (2)主机模式设置成功没?若没,确认单片机与CH375之间的软硬件接口是否正常,用测试命令测试 (3)参考下面的读写时序 sbit CH375_A0 = P1^0; sbit CH375_CS = P1^1; sbit CH375_WR = P1^2; sbit CH375_RD = P1^3; void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { //*(UINT8XV *)0XBDF1 = mCmd; //return; mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延时1uS */ P0 = mCmd; /* 向CH375的并口输出数据 */ CH375_A0 = 1; CH375_CS = 0; CH375_WR = 0; /* 输出有效写控制信号, 写CH375芯片的命令端口 */ CH375_CS = 0; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ CH375_WR = 1; /* 输出无效的控制信号, 完成操作CH375芯片 */ CH375_CS = 1; CH375_A0 = 0; P0 = 0xFF; /* 禁止数据输出 */ mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延时2uS */ }

void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { //*(UINT8XV *)0XBCF0 = mData; //return; P0 = mData; /* 向CH375的并口输出数据 */ CH375_A0 = 0; CH375_CS = 0; CH375_WR = 0; /* 输出有效写控制信号, 写CH375芯片的数据端口 */ CH375_CS = 0; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ CH375_WR = 1; /* 输出无效的控制信号, 完成操作CH375芯片 */ CH375_CS = 1; P0 = 0xFF; /* 禁止数据输出 */ mDelay1_2uS( ); /* 至少延时1.2uS */ }

UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; //return( *(UINT8XV *)0XBCF0 ); mDelay1_2uS( ); /* 至少延时1.2uS */ P0 = 0xFF; /* 输入 */ CH375_A0 = 0; CH375_CS = 0; CH375_RD = 0; /* 输出有效写控制信号, 读CH375芯片的数据端口 */ CH375_CS = 0; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ mData = P0; /* 从CH375的并口输入数据 */ CH375_RD = 1; /* 输出无效的控制信号, 完成操作CH375芯片 */ CH375_CS = 1; return( mData ); }


1.我CS直接接的低电平,没影响吧? 2.机模式设置没成功,确认单片机与CH375之间的软硬件接口是正常的,用测试命令测试,返回是0XFF00. 3.再问375S和375A/B有什么区别,我的是375S


这个没有区别,如果返回0XFF的话,那么硬件上面还是有问题,你首先先检测下芯片的25,26脚,正常的情况的话,25脚为低,26脚为高,还有你的系统工作的电压是多少?


25脚为低,26脚为高 `这错了` 25是高`26是低才正常


hcn: 1.我返回的是0XFF00,用的是单面板做的扳子 2.以前我的375在插入U盘时有中断产生 3.我重新做了扳子后测得25脚为高,26脚为低,资料上说明25是高`26是低才正常,你的回复是不是笔误???


你可以把电路图贴出来看看,估计是你的程序有问题,读写子函数有问题 正常的情况下,25为低,26为高,不是笔误,复位完成后25为低,26为高.资料上说的是25输出高电平的复位信号供其他芯片复位,26输出低电平的复位信号供其他芯片复位.复位完成后25为低,26为高


电路图就是官网上的,只是片选用的是直接接地,A0接的是P2.6,当然地址用的是0XFFF0,和0XBFF0 系统电压是5V,现在上电的、后测得25为高26,为低,应该是什么原因呢?


XI=1.8V ,XO=2.5V


晶振已经起振了.那这样的话,芯片没有复位成功. 你把电路传上来看看,检查你的硬件2脚,是高电平还是低电平.确定要用12MHZ的晶振


2脚是高电平,是12M的晶振,我换了一个晶振XI=1.98V,XO=2.86V.


当RSTI 引脚为高电平时,CH375芯片被复位;当RSTI 引脚恢复为低电平后,CH375 会继续延时复位35mS 左右,然后进入正常工作状态.那你检查你的375的第2脚怎么回事吧,怎么会为高电平呢?外部把375的第2脚强制拉为高电平了.正常情况为低电平?您的电路不方面给我们看看吗?尽量贴出来



论坛不能贴图 我把电路发你邮箱了


没有收到 发送到tech@wch.cn邮箱.


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