TMS320F2812總線控制CH375,請(qǐng)求指導(dǎo)。

我使用GPIO控制,成功,現(xiàn)在想用XINTF總線控制,使用數(shù)據(jù)線D0~07連接CH375的D0~D7.使用XNMI,連接CH375中斷,使用XZCS0AND1,作為CH375片選,XWE連接CH375的WR#,XRD連接CH375的RD#,A0由一個(gè)IO口控制,但是,始終沒(méi)有辦法初始化成功,測(cè)試通不過(guò),程序如下:#include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File #include "DSP281x_Gpio.h" #include "CH375INC.H"

#define CH375_A0 GpioDataRegs.GPADAT.bit.GPIOA9

#define USBDevice 0x02 #define USBBuffer_MaxLen 64 extern unsigned char USBBuffer[64]; //USB接收數(shù)據(jù)緩沖區(qū) extern unsigned char USBRecFlag; //USB unsigned char USBData_Len=0; //USB數(shù)據(jù)包長(zhǎng)度 extern unsigned int * TFT_ADD1; /****************************************************/ //函數(shù)描述: 短延遲 //寫入?yún)?shù): Delaynum,延遲時(shí)間:不詳 //返回參數(shù): 無(wú) //描述: 延時(shí) /****************************************************/ void SDelay(unsigned int DelayNum) { while(DelayNum--); } /****************************************************/ //函數(shù)描述:CH375處于無(wú)效狀態(tài) //寫入?yún)?shù):無(wú) //返回參數(shù):無(wú) //描述: 讀、寫無(wú)效 /****************************************************/ void CH375Disable() { //add // CH375_A0=0; // * TFT_ADD1=0x00; // CH375_CS=0; // CH375_Read=1; // CH375_Write=1;

} /****************************************************/ //函數(shù)描述:CH375初始化 //寫入?yún)?shù):無(wú) //返回參數(shù):無(wú) //描述: 初始化順序:硬件復(fù)位,自測(cè)試(循環(huán)),寫模式,開中斷 /****************************************************/ void CH375Ini() { unsigned char i; // CH375Disable(); //CH375無(wú)效 CH375_WriteCmd(CMD_RESET_ALL) ; //寫入復(fù)位命令 for(i=0;i<150;i++) { SDelay(4500); //延時(shí)>30MS } while(!CH375SelfTest()) //測(cè)試CH375 { } CH375Write_Mode(USBDevice); //設(shè)置USB驅(qū)動(dòng)模式,為設(shè)備模式(0x02)

} /****************************************************/ //函數(shù)描述:CH375自動(dòng)檢測(cè) //寫入?yún)?shù):無(wú) //返回參數(shù):無(wú) //描述: // 測(cè)試數(shù)據(jù): 0XAA, // 返回?cái)?shù)值:0 自測(cè)試失敗 // 1 自測(cè)試成功 /****************************************************/ unsigned char CH375SelfTest() { unsigned char DataTest; CH375_WriteCmd(CMD_CHECK_EXIST); //寫入測(cè)試命令 SDelay(2000); //延時(shí) CH375_WriteData(0xAA); //寫入測(cè)試數(shù)據(jù) DataTest=CH375_ReadData(); //讀出測(cè)試返回?cái)?shù)據(jù) if(DataTest == 0x55) //判斷測(cè)試返回?cái)?shù)據(jù), { return 1; } else { return 0; } } /****************************************************/ //函數(shù)描述:CH375寫命令函數(shù) //寫入?yún)?shù):命令控制字 //返回參數(shù):無(wú) //描述: /****************************************************/ void CH375_WriteCmd(unsigned char CH375Command) {

CH375_A0 = 1; //A0為1的時(shí)候,寫入命令,A0為0的時(shí)候,寫入數(shù)據(jù) * TFT_ADD1=CH375Command & 0xFF; * TFT_ADD1=CH375Command & 0xFF; * TFT_ADD1=CH375Command & 0xFF; SDelay(2000);

} /****************************************************/ //函數(shù)描述:CH375寫數(shù)據(jù) //寫入?yún)?shù):數(shù)據(jù) //返回參數(shù):無(wú) //描述: // 2009.07.27 : V2.0: 從子程序中去除CH375Disable(),在連續(xù)寫數(shù)據(jù)過(guò)程中不能將CS變高,移到寫完整個(gè)數(shù)據(jù)塊后在Disable /****************************************************/ void CH375_WriteData(unsigned char CH375Data) {

CH375_A0 = 0; //A0為1的時(shí)候,寫入命令,A0為0的時(shí)候,寫入數(shù)據(jù) * TFT_ADD1=CH375Data & 0x00FF; * TFT_ADD1=CH375Data & 0x00FF; * TFT_ADD1=CH375Data & 0x00FF; SDelay(2000);

} /****************************************************/ //函數(shù)描述:CH375讀數(shù)據(jù) //寫入?yún)?shù):無(wú) //返回參數(shù):讀出數(shù)據(jù) //描述: //2009.07.27 , V2.0 :在子程序中去出了CH375Disable()函數(shù) // 原因:在批量數(shù)據(jù)讀取時(shí),CS線不能變低。將這部分功能移動(dòng)到了數(shù)據(jù)讀取完后再進(jìn)行Disable /****************************************************/ unsigned char CH375_ReadData() { unsigned char USBData;

CH375_A0 = 0; //A0為1的時(shí)候,讀出中斷標(biāo)志,A0為0的時(shí)候,讀出數(shù)據(jù) USBData = * TFT_ADD1 & 0x00FF; USBData = * TFT_ADD1 & 0x00FF; USBData = * TFT_ADD1 & 0x00FF; SDelay(2000);

return USBData; } /****************************************************/ //函數(shù)描述:CH375寫模式 //寫入?yún)?shù):模式數(shù)據(jù) //返回參數(shù):無(wú) //描述: // 寫完命令自測(cè)試 /****************************************************/ void CH375Write_Mode(unsigned char CH375Mode) { //add CH375_WriteCmd(CMD_SET_USB_MODE); SDelay(20); CH375_WriteData(CH375Mode); while(CH375_ReadData()!=CMD_RET_SUCCESS) { } //UartTrans("USB Set Mode OK!\n",17); CH375Disable(); } /****************************************************/ //函數(shù)描述:CH375緩沖區(qū)復(fù)位 //寫入?yún)?shù):無(wú) //返回參數(shù):無(wú) //描述: // 長(zhǎng)度清零、緩沖區(qū)清零 /****************************************************/ void USBReset() { unsigned char Count_Temp; for(Count_Temp=0;Count_Temp { USBBuffer[Count_Temp]=0xAF; } USBData_Len = 0; } /****************************************************/ //函數(shù)描述:CH375發(fā)送數(shù)據(jù) //寫入?yún)?shù):數(shù)據(jù)以及數(shù)據(jù)包的長(zhǎng)度 //返回參數(shù):無(wú) //描述: // /****************************************************/ void USBSend_Data(unsigned char *USBSendBuffer,unsigned char SendBuffer_Len) { //add unsigned char Count_Temp; CH375_WriteCmd(CMD_WR_USB_DATA7); //向CH375的端點(diǎn)輸出緩沖區(qū)或者端點(diǎn)2的上傳緩沖區(qū)寫入數(shù)據(jù)塊 CH375_WriteData(SendBuffer_Len); //向CH375寫入數(shù)據(jù)塊長(zhǎng)度 for(Count_Temp=0;Count_Temp { CH375_WriteData(*(USBSendBuffer+Count_Temp)); //寫入數(shù)據(jù) } CH375Disable(); } /****************************************************/ //函數(shù)描述:CH375中斷 //寫入?yún)?shù):無(wú) //返回參數(shù):無(wú) //描述: // 中斷源:INT0 // 緩沖區(qū):USBBuffer[] // 長(zhǎng)度 :USBData_Len ,Maxlen=64 /****************************************************/ void USBint() {

unsigned char USBStatus; unsigned char Count_Temp; SDelay(200); CH375_WriteCmd(CMD_GET_STATUS); //發(fā)送得到CH375狀態(tài)的命令 SDelay(200); USBStatus=CH375_ReadData(); //讀出CH375中斷命令 switch(USBStatus) { case USB_INT_EP1_OUT: /* USB端點(diǎn)1的OUT */ {

} break;

case USB_INT_EP1_IN: /* USB端點(diǎn)1的IN */ CH375_WriteCmd(CMD_UNLOCK_USB); break;

case USB_INT_EP2_OUT: /* USB端點(diǎn)2的OUT */ { CH375_WriteCmd(CMD_RD_USB_DATA); //從當(dāng)前USB中斷的端點(diǎn)緩沖區(qū)中讀取數(shù)據(jù)塊 USBData_Len=CH375_ReadData(); //讀取接收長(zhǎng)度 if(USBData_Len>64) { USBData_Len=64; } for(Count_Temp=0;Count_Temp< USBData_Len;Count_Temp++) //接收數(shù)據(jù)塊 { USBBuffer[Count_Temp]=CH375_ReadData(); } USBRecFlag=1; CH375Disable(); } break;

case USB_INT_EP2_IN: /* USB端點(diǎn)2的IN */ CH375_WriteCmd(CMD_UNLOCK_USB); break;

case USB_INT_USB_SUSPEND: break;

case USB_INT_WAKE_UP: break;

default: break; } } 還請(qǐng)各位大俠給予指導(dǎo)!謝謝!

你用示波器看下時(shí)序上面有沒(méi)有問(wèn)題。


看了。時(shí)序還是有的,方波,很好。應(yīng)該沒(méi)有問(wèn)題。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频