见链接 http://www.wch.cn/bbs/View.asp?S=149&I=36455
检查CH372和单片机的硬件连接有没有问题,测试命令可不可以正常通过,以及模式设置是否成功?
我测了下晶振的波形不正常,频率显示也不对,是什么原因呢,芯片坏了吗?电路图是按照手册上给的划的
波形有什么不对,请详细说明,把频率,峰峰值简单说一下。理论上来说,要么不振,要振频率肯定是正确的,除非晶体坏了。
晶振的问题已经解决,可能是芯片坏掉了,我重新换了个芯片后频率波形显示都正常了,现在的问题就是板子插上电脑后一点反应都没有,CH372驱动预安装成功后(公司网站上提供的CH372DRV.EXE,我采用的芯片为CH372B),插上设备不提示连接硬件。 这个问题一直困扰了我一个星期一直找不到原因,我找了论坛上关于CH372的常见问题并按相关方案进行解决仍不能成功。发送CMD_SET_USB_MODE命令,UD+上电压只有零点几伏。我把我的原理图和CH372初始化代码发一下,希望各位有时间的话能帮忙看看,在此不胜感激。
程序原理图见附件。 UploadImages/20104814533555.rar
void CH375_Init( ) { CS_USB = 0; //片选CH372 A0 = 1; WR = 0; RD = 0; uchar i; /* 设置USB工作模式, 必要操作 */ //CH375_CMD_PORT = CMD_SET_USB_MODE; //需等待20us CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); //Delay2us( ); /* 如果时钟频率低于16MHz则无需该指令延时 */ //CH375_DAT_PORT = 2; /* 02H=已启用的设备方式并且使用内置固件模式 */ CH375_WR_DAT_PORT( 2 );
for ( i=100; i!=0; i-- ) { /* 等待操作成功,通常需要等待10uS-20uS */ if ( CH375_RD_DAT_PORT()==CMD_RET_SUCCESS ) { P12=0; //P12口接LED测试始终不成功 break; } }
/* 下述启用中断,假定CH375连接在INT1 */ IT1 = 0; /*电平触发方式, 置外部信号为低电平触发 */ IE1 = 0; /* 清中断标志 */ EX1 = 1; /* 打开INT1,允许CH375中断 */ PX1 = 1; /*CH375设置优先级*/ }
你先做下测试命令,如果测试命令不过,则可能是硬件有问题或者读写时序有问题。 CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 测试CH375是否正常工作 */ CH375_WR_DAT_PORT( 0x55 ); /* 写入测试数据 */ i = ~ 0x55; /* 返回数据应该是测试数据取反 */ if ( CH375_RD_DAT_PORT( ) != i ) { /* CH375不正常 */ for ( i=80; i!=0; i-- ) { CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* 多次重复发命令,执行硬件复位 */ CH375_RD_DAT_PORT( ); } CH375_WR_CMD_PORT( 0 ); Delay50ms( ); /* 延时50ms */ }
还是不行,已经换过一个芯片了,是不是地址不对?我的单片机的P2.6口接的CH372的片选,下面的地址不知道对不对 unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF0;/* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0;/* CH375数据端口的I/O地址 */
看了电路图,A0是不是接P2.5?那么地址: unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBFFF;/* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0x9FFF;/* CH375数据端口的I/O地址 */
是的,A0是接的P2.5,CS接的P2.6,请问这个片选地址是如何算的?
CH375只占用2根地址线,符合条件的很多,上面只是其中之一 CS=0,A0=1 选中命令口 CS=0,A0=0 选中数据口
换了下地址还是不行
1、总线上是不是有其他器件,地址会不会冲突?把其他器件拿掉试试 2、循环调用CH375_WR_CMD_PORT( 0x55 ),CH375_WR_CMD_PORT( 0xaa )看看372各个引脚的信号是否正确 3、指令周期有没有算过,如果很快的话,那么接口程序中需要加邮件中所说的延时,误差不要过大 4、检查372的晶振是否起振了
有其他器件P2.7口接的,一直没有对其进行操作。 我的芯片型号为CH372B看了下没有0x55和0xaa命令 单片机的晶振为11.0592MHz 检查372的晶振是正常的正弦波12MHz
这是2个随意的无效命令,仅为了能在372的D7-D0上看看信号变化
用这两个命令测试是有信号的
然后该怎么做呢?