日志档案

发表于 2007-3-30 14:19:06

11

标签: 自制U盘  

89S52加USBD12模拟的一个U盘(源码+原理图+实物照片)

这是一个用89S52加PDIUSBD12模拟的一个U盘,里面涉及到USB接口,USB大容量存储设备,FAT16文件系统等内容。插入电脑后,可显示移动磁盘盘符及一个文本文件。

       需要说明一下的是,这个包中的原理图,IDE接口部分、74HC573、以及RS232串口等部分,是作为这个实验板的一部分。在这个模拟U盘的程序中,是没有用到的。在下一个“移动硬盘”的例子中,就用到了IDE接口跟74HC573了。至于RS232,那时笔者在调试程序时用的。如果您不需要通过串口调试程序,RS232部分可以不管它。

 

相关评论: http://computer00.21ic.org/user1/2198/archives/2006/9858.html

 

U盘源代码包下载:rar

 

原理图:

注意:图中串口电平转换部分的C8和C10接反了,C11负端应接VDD。D12的SUSPEND(12脚)应该接地。USB接头处的D+和D-应该分别串联22欧姆的匹配电阻。由于图得比较匆忙,所以没留意。

 

点击看大图

 

 

点击看大图

点击看大图

点击看大图

点击看大图

系统分类: 单片机   |   用户分类: 圈圈作品   |   来源: 原创   |   【推荐给朋友】

    阅读(1789)    回复(3)  

投一票您将和博主都有获奖机会!

  • computer00

    2007-8-25 11:18:05

    发现程序的一个BUG,有些朋友提到枚举不正常,可能是下面这个函数的问题,替换它再试试.

    /***************************设置地址***************************************/
    void set_usb_address(void)
    {
    usb_flags.flags.set_addr=1;
    set_usb_addr(Control_Data.DeviceRequest.wValue);
    while(select_endpoint(1)&0x01);
    write_endpoint_buff(1,0,0);
    while(select_endpoint(1)&0x01);
    usb_flags.flags.usb_endp0_in=0;
    usb_flags.flags.setup_packet_out=0;
    }
    /******************************************************************************/

  • xscn

    2007-11-21 17:44:54

    你好,找你的样子做了以后,向U盘写的数据寸到哪里了,是存到USB12里了么?

  • computer00

    2007-11-22 0:52:24

    数据...数据都被扔拉...如果你要做真正的U盘,那么还需要将这些数据写入到对应的扇区中去。