打印

stm32 usb 虚拟一个cdrom

[复制链接]
2833|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bluesky_kun|  楼主 | 2013-12-18 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
liuyueboye| | 2015-12-30 14:07 | 只看该作者
你好,在做这部分内容,能否提供一些资料。非常感谢.

使用特权

评论回复
板凳
liuyueboye| | 2015-12-30 14:09 | 只看该作者
你好我的邮箱是liuyueboye@163.com,感谢了。

使用特权

评论回复
地板
qq792368480| | 2016-3-31 11:08 | 只看该作者
我是用SD卡模拟的,修改模拟U盘的工程,const int8_t  STORAGE_Inquirydata[] =
{
        /* LUN 0  SD卡 */
        0x05,                //0x05  CD-ROM
        0x80,               
        0x02,               
        0x02,
        (USBD_STD_INQUIRY_LENGTH - 5),
        0x00,
        0x00,       
        0x00,
        'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
        'm', 'i', 'c', 'r', 'o', 'S', 'D', ' ', /* Product      : 16 Bytes */
        'F', 'l', 'a', 's', 'h', ' ', ' ', ' ',
        '1', '.', '0' ,'0',                     /* Version      : 4 Bytes */
};这样也是枚举成功,在电脑上可以看到CD-ROM就是打不开,网上找了下解决方法,**论坛有个人说还要用Fats文件系统函数result = f_mkfs("0:",1,4096);格式化一下
DRESULT disk_ioctl (
        BYTE pdrv,                /* Physical drive nmuber (0..) */
        BYTE cmd,                /* Control code */
        void *buff                /* Buffer to send/receive control data */
)
{
        DRESULT res;

        switch (pdrv) {
        case FS_SD :
        {
                res = RES_ERROR;
    switch(cmd) {
                        case CTRL_SYNC:      
                                res = RES_OK;
                        break;
                        case GET_SECTOR_COUNT:  
                                *(DWORD *)buff = (DWORD)SDCardInfo.CardCapacity / 512;
                                res = RES_OK;
                                break;
                        case GET_SECTOR_SIZE:  
                                *(DWORD *)buff = 512;
                                res = RES_OK;
                                break;
                        case GET_BLOCK_SIZE:  
                                *(DWORD *)buff = (DWORD)SDCardInfo.CardBlockSize;
                                res = RES_OK;
                        break;
                        case CTRL_POWER:  
                                res = RES_OK;
                                break;
                        case CTRL_LOCK:
                                res = RES_OK;
                                break;
                        case CTRL_EJECT:
                                break;
                        case MMC_GET_TYPE:  
                                break;
                        case MMC_GET_CSD:   
                                break;
                        case MMC_GET_CID:
                                break;
                        case MMC_GET_OCR:   
                                break;
                        case MMC_GET_SDSTAT:
                                break;
                        }
                        return res;
                }
        case FS_NAND :
                res = RES_OK;
                return res;
        }
        return RES_PARERR;
}
试了下,真的可以

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:目前,在一家创业型公司供职。个人对电子比较感兴趣。 对51、STM32、ARM9比较熟悉。 我的淘宝小店前期大部分宝贝是做的代理,这我这您能买到价格优惠同时享受原厂的技术支持。 欢迎光临小店个人店铺:  http://dbembed.taobao.com/   深蓝嵌入式工作室

7

主题

81

帖子

1

粉丝