對(duì)CH376S進(jìn)行復(fù)寫測(cè)試,主要是為了驗(yàn)證讀寫函數(shù)是否正常使用,測(cè)試發(fā)現(xiàn)寫入CHECK_EXIST命令以后再寫入數(shù)據(jù)0xaa,然后進(jìn)行讀取,讀到的數(shù)據(jù)還是0xaa.測(cè)試失敗。命令的返回值應(yīng)該是寫入值的按位取反才對(duì),也就是讀到的數(shù)據(jù)應(yīng)該是0x55。請(qǐng)問(wèn)這可能是什么原因造成的??
? ? xWriteCH376Cmd(CHECK_EXIST);? ? ? ? ??//發(fā)送命令
? ? xWriteCH376Data(0xaa);? ? ? ? ??//寫入數(shù)據(jù)0xaa
? ? temp = xReadCH376Data();? ? ? ? ??//讀取寫入數(shù)據(jù)取反結(jié)果,即0xaa取反應(yīng)為0x55
? ? if(temp == 0x55) printf("測(cè)試工作狀態(tài):成功\n");//打印測(cè)試結(jié)果
? ? else printf("測(cè)試工作狀態(tài):失敗%d\n",temp);
你用的是什么通訊接口?發(fā)送命令的時(shí)序?qū)Σ粚?duì)?一般命令執(zhí)行時(shí)間是1.5us,等待1.5us再讀數(shù)據(jù)看看。
并口進(jìn)行通信,我的時(shí)鐘頻率是160M
void xWriteCH376Cmd(unsigned char command)
{
? ? //A0
? ? PIO_USB_A0=1;
? ? //DB DIR output
? ? PIO_USB_DB_DIR=0xff;
? ? PIO_USB_DB=command;
? ? delay();
? ? PIO_USB_CS=0;
? ? PIO_USB_WR=0;
? ? delay();
? ? PIO_USB_WR=1;
? ? PIO_USB_CS=1;
}
/*?
?* === ?FUNCTION ?========================================================
?* ? ? ? ? Name: ?delay
?* ?Description: ?
?* =======================================================================
?*/
void delay(void)
{
? ? int i;
? ? for(i=0;i<100;i++);
}
/*?
?* === ?FUNCTION ?========================================================
?* ? ? ? ? Name: ?xWriteCH376Data
?* ?Description: ?
?* =======================================================================
?*/
void xWriteCH376Data(unsigned char data)
{
? ?//A0
? ?PIO_USB_A0=0;
? ?//DB DIR output
? ?PIO_USB_DB_DIR=0xff;
? ?PIO_USB_DB=data; ??
? ?delay();
? ?PIO_USB_CS=0;
? ?PIO_USB_WR=0;
? ?delay();
? ?PIO_USB_WR=1;
? ?PIO_USB_CS=1;
}
/*?
?* === ?FUNCTION ?========================================================
?* ? ? ? ? Name: ?xReadCH376Data
?* ?Description: ?
?* =======================================================================
?*/
unsigned char xReadCH376Data(void)
{
? ? unsigned char data=0;
? ? ?//A0
? ? PIO_USB_A0=0;
? ??
? ? //DB DIR output
? ? PIO_USB_DB_DIR=0;
? ? PIO_USB_CS=0;
? ? PIO_USB_RD=0;
? ? delay();
? ? data=PIO_USB_DB;
? ? delay();
? ? PIO_USB_RD=1;
? ? PIO_USB_CS=1;
? ? return data;
}
讀寫函數(shù)如下
你的讀寫函數(shù)開(kāi)頭最好初始化一下,例如加上CS=1,RD=1,WR=1;另外你把時(shí)鐘速度放慢一點(diǎn)事實(shí),我之前說(shuō)過(guò)一條命令響應(yīng)時(shí)間至少1.5us,這個(gè)你要保證。