EDN首页   博客首页 用户登陆  |  注册

日志档案

发表于 2007/3/30 14:27:05

9

标签: IDE转USB  

AT89S52跟PDIUSBD12搭的IDE→USB转接板(原理图+源代码+实物图片)

现在已经实现了主要功能:可以读取文件和复制文件。不支持格式化硬盘功能。
不过速度比较慢,我从本地硬盘复制文件到移动硬盘里去,速度只有50KBytes/S,
因为单片机速度不快,内存又少,USB1.1的速度也不快。另外,代码写得不够好。

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

 

源代码包:rar

 

点击看大图

原理图:

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

点击看大图

 

 

 

点击看大图

点击看大图

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

阅读(5782)  |  评论(12)  |  收藏(0)  |  举报  

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

最新评论

  • computer00

    2009/6/29 15:04:02

    我没用过AT89S53,你还是买个AT89S52吧.

  • wenhmei

    2009/6/27 23:55:14

    怎样进ISP程序啊,那位大哥有的,发给我啊,wenhmei1988@163.com

  • wenhmei

    2009/6/25 20:04:43

    ATA89S52可以用ATA89S53来代替吧,不知道怎样进入ISP下载程序啊,谁有ATA89S53 ISP下载程序啊,

  • computer00

    2009/6/22 15:51:47

    都要连电源和地的,原理图上省略了,默认是连的。

  • wenhmei

    2009/6/21 15:33:12

    74H573和ATA89S52都没电源和地啊,ATA89S52第40只脚为VCC,20脚为GND,74H573,10脚为GND,20脚为VCC都没画出。

  • computer00

    2009/3/25 1:15:24

    密码请看压缩包的注释。

  • Athena_min

    2009/3/23 16:55:47

    没有密码解压不了

  • computer00

    2007/12/16 16:38:30

    注意那个跳线设置,使用硬盘时,要拔掉串口的那两个跳线冒。

    另外,你的硬盘要自己接电源。还要设置为主盘模式。

    分区是可以支持多个的。

    再不行的话,可能是硬盘跟我的程序不兼容了,这个需要再调试下程序。

    另外,我的程序中还有些bug,过段时间我会再弄一个程序上来,你到时再试试行不行了。

  • 于振南

    2007/12/15 23:18:55

    OO你好,我买了你的EDN USB开发板,我作USB->IDE实验怎么不成功呢,其它实验都成功的,可以检测到硬件,设备管理器里也有“oo的IDE-USB”,但是看不到盘符。这是什么原因呢?

    我的硬盘有好几个分区,和这个有关系吗?是不是你那个程序只能支持一个分区呢?

    谢谢!!!!

  • computer00

    2007/11/11 17:17:36

    那个PS2口跟USB无关的。我只是装在上面以前做键盘玩用的,现在不要了。

  • commandoccz

    2007/11/4 19:58:33

    请问你上面的PS2口是怎么实现的啊,D12好像不支持PS2吧

  • computer00

    2007/8/25 11:17:38

    发现程序的一个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;
    }
    /******************************************************************************/