CH372A问题???

使用CH372A芯片,使用USB总线供电。设置好内置固件模式后,返回数值不对,一般为0XFFH,有时为其他值。发现不了硬件。有时能发现确不能被识别。请问斑竹这是什么问题?PCB设计时未按参考图设计,设计图我以上传,请斑竹看看,是不是硬件方面的问题20079615572151.bmp

在做设置模式之前的话,你就需要做测试命令,看下返回的数据是多少?如果返回的数据是0XFF的话,那么你需要看下你的372的晶振有没有起振?用示波器看的时候,需要你将探头打到*10才可以。并没有看到你的原理图啊!!


刚才图没有传上去,用示波器测试,晶振震荡良好!!读写信号也可以顺利送达!我是在内置固件模式设置好之后测得返回值,这样不对吗?请斑竹赐教!!


你把原理图发上来看看,PCB看不清楚,还有读写的三个子程序!!


使用TI的MSP430+CH372A。程序如下: void USB_WR_CMD(BYTE cmd)//向CH372发送指定的命令 { SET_P7OUT; PutToP7OUT(cmd); _NOP(); _NOP(); USB_CMD_ENABLE; USB_WRITE_ENABLE; _NOP(); USB_WRITE_DISABLE;//上升沿,命令写入 USB_CMD_DISABLE; Delay_ms(1); }

void USB_WR_DATA(BYTE data)//向CH372发送数据 { SET_P7OUT; PutToP7OUT(data); _NOP(); _NOP(); USB_WRITE_ENABLE; _NOP(); USB_WRITE_DISABLE;//上升沿,数据写入 Delay_ms(1); }

BYTE USB_RD_DATA()//从CH372读取数据 { BYTE tmp; SET_P7IN; USB_READ_ENABLE; //下降沿,数据读出 tmp = GetFromP7IN( ); _NOP(); USB_READ_DISABLE; _NOP(); return GetFromP7IN( ); //返回读到的数据 }


void USB_WR_CMD(BYTE cmd)//向CH372发送指定的命令 { SET_P7OUT; PutToP7OUT(cmd); USB_CMD_ENABLE; USB_WRITE_ENABLE; _NOP(); _NOP();//需要50-100NS USB_WRITE_DISABLE;//上升沿,命令写入 USB_CMD_DISABLE; PutToP7OUT(0xff); Delay_US(2); }

void USB_WR_DATA(BYTE data)//向CH372发送数据 { SET_P7OUT; PutToP7OUT(data); USB_CMD_DISABLE; USB_WRITE_ENABLE; _NOP(); _NOP();//50-100NS USB_WRITE_DISABLE;//上升沿,数据写入 PutToP7OUT(0xff); Delay_US(1); }

BYTE USB_RD_DATA()//从CH372读取数据 { BYTE tmp; SET_P7IN; USB_READ_ENABLE;//下降沿,数据读出 tmp = GetFromP7IN( ); _NOP(); _NOP(); USB_READ_DISABLE; SET_P7OUT; return GetFromP7IN( ); //返回读到的数据 } 这个是修改了的程序,你看下在做测试命令的时候,数据以及命令有没有发出来,以及你在读取数据的时候当RD为上升延的时候,372的数据端口的数据是什么样的数据(可以拿示波器去看,在读取数据或者发送数据命令的时候,在检测过程中可以循环不断的发送一个命令获取一个数据,以及循环的读取数据),看下372到底给你返回什么样的数据


感谢hcn的答复,回去试一试! 用示波器测到信号都是24兆的正弦波。


372是12MHz晶振,怎么会是24M,是不是晶振焊错了


晶振没有问题,是时序上出了问题,现在已经解决。谢谢hcn.


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