在采用通信时,当数据送出后,经常得不到正确的返回信号,或者说是得不到相关的中断,在电路设计上,采上贵公司的提供的原理图进行设计,直接使用MCU的8个I/O与CH375相连!贵公司能否提供一下相关的解决方案,或相关的并口电路原理,与PCB设计时要注意的问题,或是相关的程序源码?UploadImages/200842420142267.rar
原理图你可以去参考CH375DS1上面的电路设计。
到我们网站上下载CH372EVT.ZIP和CH375EVT.ZIP, /download/list.asp?id=29 /download/list.asp?id=32 CH372EVT.ZIP里是做设备的,里面有相关的例子 CH375EVT.ZIP是做主机的例子和375的并口的电路等等!
我是按照二楼说的做的,也不知道到低出问题是在哪个环节发生的,
到底是什么地方出现了错误?硬件上面的问题你可以去用测试命令来测试你的硬件上面是否有问题
硬件上面的问题你可以去用测试命令来测试你的硬件上面是否有问题,运行check_exist 得不到返回值!
用示波器得到发送数据正常!但无返回的数据!
你读数据端口的时候返回数据是什么?既然测试命令不能通过说明你的硬件或者时序上有问题!可以把你的程序贴出来!
我也有同样的问题 用示波器查看WR RD A0等都 正常 而且 测试数据也已经发送到375的并口 但是 返回值始终都是0xff CS 引脚始终接地 用复位的程序复位 我用的是MSP430F149
具体硬件电路在附件中!UploadImages/200842420121882.rar
#include #include "CH375_Comm_define.h"
void Delay10us(unsigned int dtime); void InitOsc(void); void CH375_Init(void); void CH375_SendCMD1(unsigned char Command); void CH375_SetVIDPID(void); unsigned char CH375_SendCMD2(unsigned char Command,unsigned char Parameter); unsigned char WatchPoint; void main(void) { WDTCTL = WDTPW + WDTHOLD; InitOsc(); //CH375_SetVIDPID(); CH375_Init(); while(1); } void CH375_Init(void) { //首先初始化端口 CH375_DIR = 0xFF; //按位进行或运算 CH375_WR_HI; //WR无效 CH375_WR_DIR |= CH375_WR; CH375_RD_HI; //RD无效 CH375_RD_DIR |= CH375_RD; CH375_A0_HI; //A0=1命令 CH375_A0_DIR |= CH375_A0; //第一部分硬件复位 CH375_SendCMD1(0x05); Delay10us(3500); //延时40ms //第二部分设置VID和PID //CH375_SetVIDPID(); //第三部分设置USB工作模式 WatchPoint = CH375_SendCMD2(0x06,0x11); _NOP(); //Add BreakPoint here } //发送单字节命令 void CH375_SendCMD1(unsigned char Command) { P6DIR = 0xFF; CH375_OUT = Command; //发送数据 CH375_A0_HI; //A0=1命令 CH375_WR_LO; //WR有效 _NOP();_NOP();_NOP(); CH375_WR_HI; //WR无效 // CH375_CS_HI; //CS无效 } //发送带有返回的单字节命令 unsigned char CH375_SendCMD2(unsigned char Command,unsigned char Parameter) { unsigned char result; //当WR为低电平而A0为高电平时,D7-DO上的数据被作为命令码写入CH375。 CH375_DIR = 0xff; CH375_OUT = Command; //发送指令数据 CH375_A0_HI; //A0=1命令 CH375_WR_LO; //WR有效 _NOP(); _NOP(); CH375_WR_HI; //WR无效 //当WR以及AO都为低电平时,D7-DO上的数据被写入CH375; CH375_A0_LO; //A0=0命令 CH375_WR_LO; //WR有效 CH375_OUT = Parameter; //发送数据 _NOP();_NOP();_NOP(); CH375_WR_HI; //WR无效 //Delay10us(5); //当RD及AO都为低电平时,CH375中的数据通过D7-DO输出; P6DIR = 0x00; CH375_A0_LO; CH375_RD_LO; //RD有效 //在这里通过示波器观察到375的所有IO输出1 即0XFF _NOP();_NOP();_NOP(); result = P6IN; // CH375_RD_HI; //RD无效 //CH375_DIR = 0xFF; return result; }
void InitOsc(void) { //MCLK=SMLCLK=4MHz,ACLK=32768 unsigned char i,j; //设置系统时钟 BCSCTL1 = 0x00; //启动XT2晶振,ACLK为XT1(32KHz) BCSCTL2 = 0x88; //MCLK为XT2不分频;SMCLK为XT2,4MHz j=0; while(1) { IFG1 &= ~OFIFG; //清OSCFault标志 for (i=0xFF;i>0;--i); //延时等待 if ((IFG1 & OFIFG)!=0) { BCSCTL1 = 0x00; //启动XT2晶振,ACLK为XT1(32KHz) BCSCTL2 = 0X88; //MCLK为XT2不分频,SMCLK为XT2不分频 j++; //如果检测到振荡器失效,则计数 if (j>10) //如果计数值超过10次,则认为是硬件问题 ; //OSCFault(); } else { for (i=0xFF;i>0;--i); //等待振荡器达到足够的幅度 IFG1 &= ~OFIFG; //清OSCFault标志 IE1 |= OFIE + ACCVIE; //振荡器故障,FLASH非法访问中断允许 break; } } }
void Delay10us(unsigned int dtime) { unsigned int i,j; for(j=0;j for(i=0;i<((MCLK/500)-3);i++); } }
//设置VID和PID void CH375_SetVIDPID(void) { unsigned char itemp; CH375_DIR = 0xFF; CH375_OUT = 0x12; //CH375_CS_LO; //CS有效 CH375_A0_HI; //A0=1命令 CH375_WR_LO; //WR有效 _NOP();_NOP();_NOP(); CH375_WR_HI; //WR无效 _NOP();_NOP();_NOP(); itemp = (unsigned char)(CH375_VID&0xff); //VID低字节 CH375_OUT = 0x48;//itemp; CH375_A0_LO; //A0=0数据 CH375_WR_LO; //WR有效 _NOP();_NOP();_NOP(); CH375_WR_HI; //WR无效 _NOP();_NOP();_NOP(); itemp = (unsigned char)((CH375_VID>>8)&0xff); //VID高字节 CH375_OUT = 0x43;//itemp; CH375_A0_LO; //A0=0数据 CH375_WR_LO; //WR有效 _NOP();_NOP();_NOP(); CH375_WR_HI; //WR无效 _NOP();_NOP();_NOP(); itemp = (unsigned char)(CH375_PID&0xff); //PID低字节 CH375_OUT = 0x37;//itemp; CH375_A0_LO; //A0=0数据 CH375_WR_LO; //WR有效 _NOP();_NOP();_NOP(); CH375_WR_HI; //WR无效 _NOP();_NOP();_NOP(); itemp = (unsigned char)((CH375_PID>>8)&0xff); //PID高字节 CH375_OUT = 0x55;//itemp; CH375_A0_LO; //A0=0数据 CH375_WR_LO; //WR有效 _NOP();_NOP();_NOP(); CH375_WR_HI; //WR无效 // CH375_CS_HI; //CS无效 _NOP();_NOP();_NOP(); } 这个 就是我的程序 大家帮忙看看时序有没有什么问题
没有贵公司的技术人员回复吗?
你的并口电路有问题:TXD引脚未通过1KΩ左右的下拉电阻接地或者直接接地,CH375未工作在并口方式下 建议你对照CH375DS1.PDF中并口连接方式,确认你的电路是否正确。
"TXD引脚未通过1KΩ左右的下拉电阻接地或者直接接地",,,TXD引脚已经直接接地!没有没接地呀!我是按CH375DS1.PDF中并口连接方式
如图;
375正常工作后硬件上有以下特征: (1)晶振起振,12MHz (2)25脚为低电平,26脚为高电平 以上正常后,再发送测试命令,如果不成功,则需要检查硬件连线和操作时序