急!求助!ch375usb存儲設(shè)備初始化

ch375,發(fā)送初始化usb設(shè)備的命令,讀取到的中斷是0x15,幫忙看看是不是命令使用的有問題,代碼附上,任務(wù)緊急,希望大家?guī)拖旅?/p>


/*****************************************

?*函數(shù)名? disk_init

?*函數(shù)功能 初始化usb存儲設(shè)備

?*參數(shù)? 文件描述符

?*返回值

?****************************************/

void disk_init(int *fd)

{

?cmd = CMD_DISK_INIT;

?ioctl(*fd,WRITE_CMD_CH375,&cmd);

?delay(2);

?cmd = CMD_GET_STATUS;

?ioctl(*fd,WRITE_CMD_CH375,&cmd);

?delay(2);

?ioctl(*fd,READ_DATA_CH375,&data);

?printf("data=%#x\n",data);

?if(data == USB_INT_DISCONNECT)

?{

? printf("usb設(shè)備已斷開\n");

?}

?else if(data == USB_INT_DISK_ERR||data==USB_INT_BUF_OVER)

?{

? printf("usb存儲設(shè)備不被支持\n");

?}

?else if(data == USB_INT_SUCCESS)

?{

? printf("USB存儲設(shè)備初始化成功\n");

?}

?else

?{

? printf("未知錯誤\n");

?}

?return;


}



您好,在進行U盤的初始化操作前要先檢測是否有設(shè)備連接,當(dāng)有設(shè)備連接并產(chǎn)生USB_INT_CONNECT(0X15)中斷之后,再進行初始化等操作即可


設(shè)備檢查了,已經(jīng)連接,返回的是0x15

/*************************************

?*函數(shù)名 disk_connect_state

?*函數(shù)功能檢測usb設(shè)備連接狀態(tài)

?*參數(shù)文件描述符

?*返回值

?*************************************/

void? disk_connect_state(int *fd)

{

cmd = CMD_TEST_CONNECT;

ioctl(*fd,WRITE_CMD_CH375,&cmd);

delay(2000);

data = 0;

ioctl(*fd,READ_DATA_CH375,&data);

printf("data =%#x\n",data);

if(data ==USB_INT_CONNECT)

{

//printf("data =%#x\n",data);

printf("檢測到usb設(shè)備連接\n");

memset(&data,0,sizeof(data));

//auto_setup(fd);

//break;

}

else if(data == USB_INT_DISCONNECT)

{

printf("檢測到usb設(shè)備斷開\n");

}

else

printf("未知錯誤\n");

return;


}



檢測到設(shè)備后需要一個延時(可以設(shè)置250ms)等待U盤進入工作狀態(tài),然后對U盤進行初始化操作。

初始化操作中使用CMD_GET_STATUS命令最好不要直接讀取狀態(tài),等待有中斷再讀取狀態(tài)。


圖片1.png

怎么判斷是有中斷,現(xiàn)在加了延時,但是每次讀取到的固定是這些數(shù)循環(huán)


通過查詢INT#引腳的電平判斷,當(dāng)電平為低時,表示有中斷發(fā)生。

您可以參考http://m.findthetime.net/bbs/thread-65122-1.html這個帖子里面的第11個例程,提供了CH375操作U盤的的一些代碼


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

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