完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ch375,发送初始化usb设备的命令,读取到的中断是0x15,帮忙看看是不是命令使用的有问题,代码附上,任务紧急,希望大家帮下忙
/***************************************** *函数名 disk_init *函数功能 初始化usb存储设备 *参数 文件描述符 *返回值 ****************************************/ 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=%#xn",data); if(data == USB_INT_DISCONNECT) { printf("usb设备已断开n"); } else if(data == USB_INT_DISK_ERR||data==USB_INT_BUF_OVER) { printf("usb存储设备不被支持n"); } else if(data == USB_INT_SUCCESS) { printf("USB存储设备初始化成功n"); } else { printf("未知错误n"); } return; } |
|
相关推荐
4个回答
|
|
您好,在进行U盘的初始化操作前要先检测是否有设备连接,当有设备连接并产生USB_INT_CONNECT(0X15)中断之后,再进行初始化等操作即可
|
|
|
|
设备检查了,已经连接,返回的是0x15
/************************************* *函数名 disk_connect_state *函数功能检测usb设备连接状态 *参数文件描述符 *返回值 *************************************/ 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 =%#xn",data); if(data ==USB_INT_CONNECT) { //printf("data =%#xn",data); printf("检测到usb设备连接n"); memset(&data,0,sizeof(data)); //auto_setup(fd); //break; } else if(data == USB_INT_DISCONNECT) { printf("检测到usb设备断开n"); } else printf("未知错误n"); return; } |
|
|
|
|
|
|
|
通过查询INT#引脚的电平判断,当电平为低时,表示有中断发生。
您可以参考http://www.wch.cn/bbs/thread-65122-1.html这个帖子里面的第11个例程,提供了CH375操作U盘的的一些代码 |
|
|
|
只有小组成员才能发言,加入小组>>
596 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2946 浏览 2 评论
2439 浏览 1 评论
931浏览 2评论
729浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
449浏览 1评论
583浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
859浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-1 13:01 , Processed in 0.894686 second(s), Total 50, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号