使用CH372A芯片,使用USB總線供電。設(shè)置好內(nèi)置固件模式后,返回?cái)?shù)值不對(duì),一般為0XFFH,有時(shí)為其他值。發(fā)現(xiàn)不了硬件。有時(shí)能發(fā)現(xiàn)確不能被識(shí)別。請(qǐng)問斑竹這是什么問題?PCB設(shè)計(jì)時(shí)未按參考圖設(shè)計(jì),設(shè)計(jì)圖我以上傳,請(qǐng)斑竹看看,是不是硬件方面的問題
在做設(shè)置模式之前的話,你就需要做測(cè)試命令,看下返回的數(shù)據(jù)是多少?如果返回的數(shù)據(jù)是0XFF的話,那么你需要看下你的372的晶振有沒有起振?用示波器看的時(shí)候,需要你將探頭打到*10才可以。并沒有看到你的原理圖啊??!
剛才圖沒有傳上去,用示波器測(cè)試,晶振震蕩良好??!讀寫信號(hào)也可以順利送達(dá)!我是在內(nèi)置固件模式設(shè)置好之后測(cè)得返回值,這樣不對(duì)嗎?請(qǐng)斑竹賜教?。?/p>
你把原理圖發(fā)上來看看,PCB看不清楚,還有讀寫的三個(gè)子程序!!
使用TI的MSP430+CH372A。程序如下: void USB_WR_CMD(BYTE cmd)//向CH372發(fā)送指定的命令 { 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發(fā)送數(shù)據(jù) { SET_P7OUT; PutToP7OUT(data); _NOP(); _NOP(); USB_WRITE_ENABLE; _NOP(); USB_WRITE_DISABLE;//上升沿,數(shù)據(jù)寫入 Delay_ms(1); }
BYTE USB_RD_DATA()//從CH372讀取數(shù)據(jù) { BYTE tmp; SET_P7IN; USB_READ_ENABLE; //下降沿,數(shù)據(jù)讀出 tmp = GetFromP7IN( ); _NOP(); USB_READ_DISABLE; _NOP(); return GetFromP7IN( ); //返回讀到的數(shù)據(jù) }
void USB_WR_CMD(BYTE cmd)//向CH372發(fā)送指定的命令 { 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發(fā)送數(shù)據(jù) { SET_P7OUT; PutToP7OUT(data); USB_CMD_DISABLE; USB_WRITE_ENABLE; _NOP(); _NOP();//50-100NS USB_WRITE_DISABLE;//上升沿,數(shù)據(jù)寫入 PutToP7OUT(0xff); Delay_US(1); }
BYTE USB_RD_DATA()//從CH372讀取數(shù)據(jù) { BYTE tmp; SET_P7IN; USB_READ_ENABLE;//下降沿,數(shù)據(jù)讀出 tmp = GetFromP7IN( ); _NOP(); _NOP(); USB_READ_DISABLE; SET_P7OUT; return GetFromP7IN( ); //返回讀到的數(shù)據(jù) } 這個(gè)是修改了的程序,你看下在做測(cè)試命令的時(shí)候,數(shù)據(jù)以及命令有沒有發(fā)出來,以及你在讀取數(shù)據(jù)的時(shí)候當(dāng)RD為上升延的時(shí)候,372的數(shù)據(jù)端口的數(shù)據(jù)是什么樣的數(shù)據(jù)(可以拿示波器去看,在讀取數(shù)據(jù)或者發(fā)送數(shù)據(jù)命令的時(shí)候,在檢測(cè)過程中可以循環(huán)不斷的發(fā)送一個(gè)命令獲取一個(gè)數(shù)據(jù),以及循環(huán)的讀取數(shù)據(jù)),看下372到底給你返回什么樣的數(shù)據(jù)
感謝hcn的答復(fù),回去試一試! 用示波器測(cè)到信號(hào)都是24兆的正弦波。
372是12MHz晶振,怎么會(huì)是24M,是不是晶振焊錯(cuò)了
晶振沒有問題,是時(shí)序上出了問題,現(xiàn)在已經(jīng)解決。謝謝hcn.