引用回复:V3接地了没啊? 哪个V3?
hcn,你好!方便的话加我,谢谢!
我的msn:个人信息保护,已隐藏
QQ:50306058
就是接3.3V的时候要接电源,而接5V的时候要接退藕电容在接地的,也就是你电路图上的第9脚
引用回复:就是接3.3V的时候要接电源,而接5V的时候要接地的,也就是你电路图上的第9脚 没有,我接地后试试.谢谢!
在V3接地的时候要加个0.01u的退藕电容在接地
引用回复:在V3接地的时候要加个0.01u的退藕电容在接地 我知道了,我改电路时没有考虑3.3V和5V区别。等我改完后再给您消息,谢谢了!非常感谢!
hcn你好!
我刚才把5V电压改成了3.3V电压,其他没有改动。CH375仍然没有正常工作,这是为何啊?
那你在加上复位程序试了没??
试了,复位程序为: IO0SET |= 0x400; for(j = 0;j < 0x2fff; j++); IO0CLR |= 0x400; 先置1,再置0,返回的仍然是0。
电压正常,晶振也起振。
你将读,写的子程序发出来看下,可能是你I/O口的方向错了而读不到数据
void CH375_PORT_INIT( ) /* 由于使用通用I/O模块并口读写时序,所以进行初始化 */ {
IO3SET |= 0x0A000000; /*设置CS,WR默认为高电平 */ IO1SET |= 0x00000002; /*设置RD默认为高电平 */ IO2DIR &= 0xFFFFFF00; /* 设置8位并口为输入 */ IO0DIR &= 0xFFFEFFFF; /* 设置INT#为输入 */ IO3DIR |= 0x0A000001; /*设置CS,WR,A0默认为输出 */ IO1DIR |= 0x00000002; /*设置RD默认为输出 */
}
void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { mDelay1_2uS( ); /* 至少延时1uS */ IO2CLR |= 0x000000FF; /* 清并口输出 */ IO3SET |= 0x00000001; /*输出A0(P3.0)=1; */ IO2SET |= (UINT32)mCmd; /* 向CH375的并口输出数据*/ IO3DIR |= 0x0A000001; /* 设置CS,WR,A0为输出 */ IO1DIR |= 0x00000002; /*设置RD默认为输出 */ IO2DIR |= 0x000000FF; /*写操作所以数据输出*/ IO1SET |= 0x00000002; /*RD(P1.1)=1*/ IO3CLR |= 0x0A000000; /* 输出有效写控制信号, 写CH375芯片的命令端口,CS(P3.25)=0; WR=(P3.27)=0;*/ mDelay1_2uS( ); //IO2DIR = IO2DIR; IO2DIR = IO2DIR; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ //IO3SET = 0x0A000001; /* 输出无效的控制信号, 完成操作CH375芯片, A0(P3.0)=1; CS(P3.25)=1; WR=(P3.27)=1;*/ //IO1SET = 0x00000002; /*设置RD(P1.1)=1*/ IO2DIR &= 0xFFFFFF00; /* 禁止数据输出 */ mDelay1_2uS( ); /* 至少延时2uS */ }
void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { mDelay1_2uS( ); /* 至少延时1uS */ IO2CLR |= 0x000000FF; /* 清并口输出 */ IO2SET |= (UINT32)mData; /* 向CH375的并口输出数据*/ IO2DIR |= 0x000000FF; /*写操作所以数据输出*/ IO1SET |= 0x00000002; /*RD(P1.1)=1*/ IO3CLR |= 0x0A000001; /* 输出有效写控制信号, 写CH375芯片的命令端口, A0(P3.0)=0; CS(P3.25)=0; WR=(P3.27)=0;*/ mDelay1_2uS( ); /* 至少延时1uS */ //IO2DIR = IO2DIR; IO2DIR = IO2DIR; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ //IO3SET = 0x0A000000; /* 输出无效的控制信号, 完成操作CH375芯片, A0(P3.0)=0; CS(P3.25)=1; WR=(P3.27)=1;*/ //IO1SET = 0x00000002; /*设置RD(P1.1)=1*/ //IO2DIR &= 0xFFFFFF00; /* 禁止数据输出 */ mDelay1_2uS( ); /* 至少延时1uS */ }
UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; mDelay1_2uS( ); /* 至少延时1uS */ IO2DIR &= 0xFFFFFF00; /*读操作所以数据输入*/ IO1CLR |= 0x00000001; /*RD(P1.1)=0*/ IO3CLR |= 0x02000001; //输出有效读控制信号, 读CH375芯片的命令端口, A0(P3.0)=0;CS(P3.25)=0;*/// WR=(P3.27)=1; mDelay1_2uS( ); //IO2DIR = IO2DIR;IO2DIR = IO2DIR; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ mData = (UINT8)IO2PIN; /* 从CH375的并口P2.0-P2.7输入数据 */ //IO3SET = 0x0A000000; /* 输出无效的控制信号, 完成操作CH375芯片, A0(P3.0)=0; CS(P3.25)=1; WR=(P3.27)=1;*/ return( mData ); }
1 ud+和ud-接反了。 2 若用5v,v3应通过一电容接地。 3 用2210的IO口仿总线方式,如何解决IO是输入或输出?这点我不肯定。
引用回复:1 ud+和ud-接反了。 2 若用5v,v3应通过一电容接地。 3 用2210的IO口仿总线方式,如何解决IO是输入或输出?这点我不肯定。
1.UD+/UD-是接反了 2.电压现在改用3.3V的了 3.2210用IODIR来设置IO口的方向,0为输入,1为输出。
那你的复位程序就要将TODIR要设置成0啊