搜索
bottom↓
楼主: bozai

发布我的小作品--U盘(实际是USB SD卡读卡器) ATmega168+PDIUSBD12+SD (内含GCC源码

[复制链接]

出0入0汤圆

 楼主| 发表于 2007-12-23 18:07:20 | 显示全部楼层
恭喜 【93楼】 soulmate

出0入0汤圆

发表于 2007-12-23 23:18:28 | 显示全部楼层
顶一下
楼主强啊

出0入0汤圆

发表于 2007-12-24 00:23:31 | 显示全部楼层
哇靠,LZ 万能板 高手哦。

出0入0汤圆

 楼主| 发表于 2007-12-24 00:25:57 | 显示全部楼层
不怕你笑话至今没做过pcb, 所以我做的东西都是万能板,d12的脚还算少的了,间距也不算小。(当然除了买的板子了)

出0入0汤圆

发表于 2008-1-30 12:33:53 | 显示全部楼层
顶起来

出0入0汤圆

发表于 2008-1-30 13:10:23 | 显示全部楼层
lz焊接水平挺厉害的!

出0入0汤圆

发表于 2008-1-30 15:09:31 | 显示全部楼层
的确不错。。但是我不欣赏这个作风。。
有这么多时间焊接还不如直接做个PCB。。

当然能力让人佩服。。

出0入0汤圆

 楼主| 发表于 2008-1-30 18:12:56 | 显示全部楼层
to 【107楼】 our_avr
    小东西也没必要做板了,另外这个我一天也就焊完了,做板有这么快吗?

谢谢!

出0入0汤圆

发表于 2008-1-30 23:00:22 | 显示全部楼层
做板应该2小时之内完成吧
不错,楼主有USB设计参考资料贴上来学习吧

出0入0汤圆

 楼主| 发表于 2008-1-30 23:15:07 | 显示全部楼层
怎么会这么快,除非自己有设备做。不过那个代价也不小啊。
usb的资料可以搜索computer00发的资料。

出0入0汤圆

发表于 2008-1-31 01:32:20 | 显示全部楼层
楼主强悍,拿漆包线来焊贴片的,我怎么就没想到那!

出0入0汤圆

发表于 2008-1-31 10:27:49 | 显示全部楼层
好东西 过年了这个时候 D12不好买

出0入0汤圆

发表于 2008-2-1 09:31:18 | 显示全部楼层
好东西,学习了

出0入0汤圆

发表于 2008-2-2 09:58:08 | 显示全部楼层
好东西,下下来学学

出0入0汤圆

发表于 2008-3-14 20:47:40 | 显示全部楼层
学习、、谢谢!

出0入0汤圆

发表于 2008-3-14 22:53:03 | 显示全部楼层
“帅”就一个字!

出0入0汤圆

发表于 2008-3-20 22:36:03 | 显示全部楼层
拜一下楼主的焊工功底,太牛了!尤其是MCU的焊接……五体投地中!
正好要找个GCC版本的读SD卡的参考资料,不胜感激中!

出0入0汤圆

发表于 2008-3-21 01:24:43 | 显示全部楼层
牛!佩服楼主!

出0入0汤圆

发表于 2008-3-31 21:29:27 | 显示全部楼层
请问LZ,D12的12脚是空闲状态脚 悬空不行吗?

出0入0汤圆

 楼主| 发表于 2008-3-31 22:33:34 | 显示全部楼层
to
【119楼】 lancewood
看看手册可不可以,如果可以就可以

出0入0汤圆

发表于 2008-4-1 10:46:55 | 显示全部楼层
看了官方文档对于12脚的介绍不多,管脚说明是这样说的 “SUSPEND 12 I,OD4 Device is in Suspend state.” 我的理解是当12脚为高电平时,芯片进入挂起状态,所以要使它工作就要接地?不过我看了其他的一些资料,有人是悬空的,有人是接地的,也有人是接电源的,汗死,不知怎了。第一次用D12,硬件达起来了,怎么个操作流程,望各位指导啊。

出0入0汤圆

发表于 2008-4-1 10:48:34 | 显示全部楼层
楼主挺猛!这焊接技术真厉害!

出0入0汤圆

发表于 2008-4-11 06:53:32 | 显示全部楼层
制作您这作品,要写主机驱动程序吗?

出0入0汤圆

 楼主| 发表于 2008-4-11 18:44:22 | 显示全部楼层
如果是window95/98系统,需要你上网找一个usb masstorage的驱动装上才能用

出0入0汤圆

发表于 2008-4-11 19:54:44 | 显示全部楼层
焊工太***强了!!

出0入0汤圆

发表于 2008-4-11 21:44:00 | 显示全部楼层
谢谢波仔指点!
望您不吝赐教!

出0入0汤圆

发表于 2008-4-11 21:52:46 | 显示全部楼层
很羡慕波哥绑架芯片的本事

出0入0汤圆

发表于 2008-4-12 21:21:25 | 显示全部楼层
请bozai解答,谢谢:

仿制了你的作品,不过用的Atmega8 (8M) 和11脚的miniSD卡
ICC 编译的!
连影都没有,不成功呢!
是晶振小了,还是别的需要注意,还有程序还有别的地方需要改吗??
是不是D12_Test1程序出了问题@?

出0入0汤圆

发表于 2008-4-14 16:57:41 | 显示全部楼层
哈哈,楼主好手艺~~~~~

出0入0汤圆

 楼主| 发表于 2008-4-14 17:52:40 | 显示全部楼层
谢谢 圈圈 和各位捧场

当时做的时候也曾参考 圈圈 blog上的大作呢。 在此表示感谢。


to 128楼】 fanshiqiang
   程序是可以用的, 请检查线路。

出0入0汤圆

发表于 2008-4-14 19:30:42 | 显示全部楼层
楼主,强啊,我正在做M16扩展SD卡存储器,用SPI通讯,那个卡座怎么焊到万用板上啊?还有楼主有没联系方法,想跟你学学经验!谢谢

出0入0汤圆

发表于 2008-4-14 21:37:52 | 显示全部楼层
呵呵,圈圈当时做的那个也是手工做了个小转接板,有些时日了……不过没楼主的精致拉~~~

出0入0汤圆

发表于 2008-4-14 21:48:42 | 显示全部楼层
LZ,为什么焊接线中,有些线特别粗,如果都是0.12的漆包线,可以吗?有没有什么其它考虑?

出0入0汤圆

发表于 2008-4-15 07:04:56 | 显示全部楼层
焊工超强

出0入0汤圆

发表于 2008-4-18 09:33:51 | 显示全部楼层
请问PDIUSBD12的芯片ID怎么得到?谢谢!

出0入0汤圆

发表于 2008-4-18 17:03:19 | 显示全部楼层
D12的ID读取可以参考这个例程:
http://group.ednchina.com/93/6842.aspx

出0入0汤圆

发表于 2008-5-8 11:23:57 | 显示全部楼层
汗一个 焊工是在是 。。。。

出0入0汤圆

发表于 2008-5-8 15:16:00 | 显示全部楼层
……

出0入0汤圆

发表于 2008-5-8 20:06:56 | 显示全部楼层
牛人。。。谢谢提供的资料!

出0入0汤圆

发表于 2008-6-3 21:20:00 | 显示全部楼层
有一个地方不是很明白,请指教

//读一个扇区                //read one sector
uint8 MMC_SD_ReadSingleBlock(uint32 sector, uint8* buffer)
{
        uint8 r1;
        uint16 i;
        uint8 retry=0;

        do
        {
                r1 = MMC_SD_SendCommand(17, sector<<9);//读命令        //read command
                retry++;
                if(retry>10) return 1;//超时退出                //time out
        } while(r1 != 0x00);       


        SPI_CS_Assert();
        //等数据的开始        //wait to start recieve data
        while(SPI_WriteByte(0xff) != 0xfe);//if(retry++ > 50){SPI_CS_Deassert();return 1;}

        for(i=0; i<512; i++)//读512个数据        //read 512 bytes
        {
                *buffer++ = SPI_WriteByte(0xff);
        }

        SPI_WriteByte(0xff);//伪crc
        SPI_WriteByte(0xff);
       
        SPI_CS_Deassert();

        return 0;
}

*buffer++ = SPI_WriteByte(0xff);是否应该为*buffer++ = SPI_ReadByte(0xff)

后面的SPI_WriteByte(0xff)也改为SPI_ReadByte(0xff)?

想不太明白这个地方,请bozai指教,谢谢

出0入0汤圆

发表于 2008-6-3 21:34:35 | 显示全部楼层
楼主厉害。服了。

出0入0汤圆

 楼主| 发表于 2008-6-5 20:24:51 | 显示全部楼层
to 【140楼】 efaneda
    spi是一个移位寄存器的结构,发送同时也在接收, 所有收就是发,发就是收。 何必再去区分用哪个呢。

出0入46汤圆

发表于 2008-6-7 19:47:48 | 显示全部楼层
好东西啊!

出0入0汤圆

发表于 2008-6-13 23:10:51 | 显示全部楼层
请教一个问题,怎样才能在电脑上显示这个读卡器的盘符呢?就是象U盘那样,可以直接对其操作。谢谢!

出0入0汤圆

发表于 2008-6-13 23:54:12 | 显示全部楼层
实现 bulk only协议就可以显示盘符

出0入0汤圆

发表于 2008-6-20 12:04:26 | 显示全部楼层
楼主就是强啊,牛!!!

出0入0汤圆

发表于 2008-6-22 21:50:51 | 显示全部楼层
我请教大家一个关于U盘速度的问题
我在做U盘存储控制器的开发,采用的arm9+linux开发Usb主控器,
在应用程序层面,我将串口接收的数据使用write+fsync写入U盘(sandisk),(底层采用bulkonly协议)
但是经过测试发现,一般来说每次存200字节的数据只需几ms,但是有时会出现将近200ms的问题(出现在csw阶段),
检测USB总线的信号 发现主要是由于这段时间,U盘没有准备好接受(发送)数据因此一直回nak,而我这边的hc在一直重发令牌包所致。也就是说,U盘数据接收和存储时间比较长,导致不能及时回复状态信息(csw阶段)。
因此,我判断是当每次写入200字节并且是强制写入U盘的时候,U盘写入速度不稳定(测试:每次存200字节共存储1亿字节会出现300多次超过150ms的现象),
但是当我以每次写入1024字节时,U盘写入速度会相对稳定许多(测试:每次存1024字节共存储1亿字节会出现2-3次超过150ms的现象)。
我之所以每收到一组数据就存储一次是为了在断电时丢失最少的数据,因为应用环境不容许我缓冲一整页的数据然后再存储。可是我如果不以1024字节存储的话,会出现写入速度不稳定的情况,有时存储几百字节需要最长200ms(大部分时候还正常,几ms),由于我的存储控制器采用的是串行的方式(收数->存数)这样的话若串口以115200bps收数的话仍有可能丢2k的数。
我现在有三个具体问题请您帮着分析
1 大家认为近200ms的时间是怎么产生的,有何种可能,因为从flash的datasheet上看,虽然是按block擦按page写(因此写入一定数据需要先读出block数据再写入),但无论如何也不至于数百毫秒吧,是不是问题不仅仅是flash读写的问题,和U盘上的软件的编写或者控制芯片有关吗
2为什么我以1024的倍数就稳定了许多,我查的资料发现nandflash的页大小一般两种,512字节和2k字节,有1024字节1page的吗(sandisk U盘)
3 nandflash上随机定位是不是比较慢,这会不会就是我这个速度不稳定的原因呢
请大家帮着分析一下,不胜感激

出0入0汤圆

发表于 2008-6-26 11:15:02 | 显示全部楼层
d12晶振一定要6m么
还有d12的 3.3vout 为什么要接外部vcc
我搭了板子插上去一点反应都没有 -_ -,

出0入0汤圆

发表于 2008-6-26 16:46:14 | 显示全部楼层
菜鸟记号学习

出0入0汤圆

发表于 2008-7-3 17:16:50 | 显示全部楼层
不错

出0入0汤圆

发表于 2008-7-4 01:37:07 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-7-4 12:17:56 | 显示全部楼层
牛人 啊

出0入0汤圆

发表于 2008-7-4 20:15:50 | 显示全部楼层
楼主的焊接技术是在太牛了,贴片全部引线出来。

出0入0汤圆

发表于 2008-7-10 21:34:31 | 显示全部楼层
楼主太强了,这样也可以焊,学习了!

出0入0汤圆

发表于 2008-7-13 12:05:04 | 显示全部楼层
不错,学习一下。。。。。。

出0入0汤圆

发表于 2008-7-16 09:21:29 | 显示全部楼层
实在是强啊。

出0入0汤圆

发表于 2008-7-17 23:08:31 | 显示全部楼层

出0入0汤圆

发表于 2008-10-8 19:31:30 | 显示全部楼层

出0入0汤圆

发表于 2008-10-8 19:58:59 | 显示全部楼层
不是一般的强

出0入0汤圆

发表于 2008-10-8 20:41:47 | 显示全部楼层
牛哇,贴片也能这样做!

出0入0汤圆

发表于 2008-10-8 22:47:07 | 显示全部楼层
佩服佩服&nbsp;&nbsp;我会我也做一个玩玩...

出0入0汤圆

发表于 2008-10-9 10:49:30 | 显示全部楼层
焊功了得!厉害!

出0入0汤圆

发表于 2008-10-9 12:57:50 | 显示全部楼层
我也mark一下

出0入0汤圆

发表于 2008-10-9 14:01:01 | 显示全部楼层
楼主的手动让人拜服!!
强人!

出0入0汤圆

发表于 2008-10-23 19:12:19 | 显示全部楼层
mark低先,近来可能有机会做这个

出0入0汤圆

发表于 2008-10-23 21:02:17 | 显示全部楼层
谢谢楼主!&nbsp;
支持中,学习下

出0入0汤圆

发表于 2008-10-23 21:24:41 | 显示全部楼层
mark&nbsp;顶

出0入0汤圆

发表于 2008-10-28 15:04:40 | 显示全部楼层
PDIUSBD12能用来做USB转串口吗? 如果能是不是需要上位机程序?

出0入0汤圆

发表于 2008-10-29 10:30:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-10-29 22:09:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-10-30 01:00:57 | 显示全部楼层
Lz真疯狂

出0入0汤圆

发表于 2008-12-1 14:48:33 | 显示全部楼层
顶,收藏

出0入0汤圆

发表于 2008-12-2 09:52:05 | 显示全部楼层
/***************************************************************/

/*&nbsp;函数名:&nbsp;void&nbsp;D12_Set_Address(U8&nbsp;Addr,U8&nbsp;Enable)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;功能&nbsp;&nbsp;:&nbsp;设置地址/使能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;返回值:&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;参数&nbsp;&nbsp;:&nbsp;Addr&nbsp;Enable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;Addr&nbsp;&nbsp;:&nbsp;地址值0~127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;Enable:&nbsp;使能位&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

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

void&nbsp;D12_Set_Address_Enable(U8&nbsp;Addr,U8&nbsp;Enable)

{



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP4();



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_OUTPUT_MODE();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_OUTPUT&nbsp;=&nbsp;0xd0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_CMD_WR_L();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_CMD_WR_H();



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP7();



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_OUTPUT&nbsp;=&nbsp;Addr|(Enable&lt;&lt;7);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_DAT_WR_L();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_DAT_WR_H();



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP4();

}





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

/*&nbsp;函数名:&nbsp;void&nbsp;D12_Set_Endpoint_Enable(U8&nbsp;Enable)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;功能&nbsp;&nbsp;:&nbsp;设置端点使能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;返回值:&nbsp;无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;参数&nbsp;&nbsp;:&nbsp;Enable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;Enable&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bit0:&nbsp;普通/同步端点使能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/

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

void&nbsp;D12_Set_Endpoint_Enable(U8&nbsp;Enable)

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP4();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_OUTPUT_MODE();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_OUTPUT&nbsp;=&nbsp;0xd8;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_CMD_WR_L();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_CMD_WR_H();



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP7();



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_OUTPUT&nbsp;=&nbsp;Enable;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_DAT_WR_L();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_DAT_WR_H();



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP4();

}

谢谢楼主,麻烦楼主帮忙解释下D12_OUTPUT&nbsp;=&nbsp;0xd8;D12_OUTPUT&nbsp;=&nbsp;0xd0;&nbsp;这其中的0xd0,0xd8是什么意思呀?是命令么?我怎么在协议上找不到呀,刚接触USB&nbsp;,谢谢。

出0入0汤圆

发表于 2008-12-2 11:41:04 | 显示全部楼层
哎,明白了,原来是PDIUSBD12的命令呀

出0入0汤圆

发表于 2008-12-2 15:48:07 | 显示全部楼层
/******************&nbsp;standard&nbsp;device&nbsp;request&nbsp;****************/

U8&nbsp;Get_Status(U8&nbsp;*SetupPacket)

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U8&nbsp;temp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("\nGet&nbsp;Status&nbsp;Request\n");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[2]|SetupPacket[3]|SetupPacket[5]|SetupPacket[7])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[6]!=2)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]==0x80)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[4])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[0]&nbsp;=&nbsp;USB_Remote_Wake?1:0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[1]&nbsp;=&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]==0x81)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[4])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[0]&nbsp;=&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[1]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]==0x82)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=D12_Select_Endpoint((SetupPacket[4]*2)|((SetupPacket[4]&0x80)?1:0));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[1]&nbsp;=&nbsp;(temp&2)?1:0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[0]&nbsp;=&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_Write_Endpoint(1,&nbsp;SetupPacket,&nbsp;2);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

}

麻烦大哥们帮忙解释一下这段的功能是什么呀?看者象是判断标准请求状态的判断,但是这在资料的什么部分呀?我怎么在协议上找不到呀,例如if(SetupPacket[0]==0x80),{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[4])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[0]&nbsp;=&nbsp;USB_Remote_Wake?1:0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[1]&nbsp;=&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

就是像0x80这些数据在什么地方呀?

出0入0汤圆

 楼主| 发表于 2008-12-2 16:58:29 | 显示全部楼层
这里应该有个bug,具体也忘了。&nbsp;很长时间没碰了。&nbsp;你看usb的资料吧,上面应该有的。standard&nbsp;request部分属于usb的不属于mass&nbsp;storage

出0入0汤圆

发表于 2008-12-3 08:30:47 | 显示全部楼层
谢谢楼主&nbsp;bozai,向你学习

出0入0汤圆

发表于 2008-12-4 16:16:06 | 显示全部楼层
我按照协议看了看,有些地方还是有点糊涂,麻烦高手指点下,谢谢,看我下面理解的对否?

&nbsp;Get_Status(U8&nbsp;*SetupPacket)

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U8&nbsp;temp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("\nGet&nbsp;Status&nbsp;Request\n");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[2]|SetupPacket[3]|SetupPacket[5]|SetupPacket[7])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//请求错误,&nbsp;这句不太明白,请楼主帮忙解释下好么?怎么判断的呀?

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收到setup&nbsp;packet,八个字节,但是我怎么看不出上面的逻辑关系,看者上面的好象有问题呀?

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[6]!=2)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;////请求错误,&nbsp;这句不太明白,请楼主帮忙解释下好么?

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]==0x80)&nbsp;&nbsp;//if&nbsp;the&nbsp;first&nbsp;&nbsp;packet&nbsp;is&nbsp;0x80,&nbsp;&nbsp;which&nbsp;indicate&nbsp;the&nbsp;bRequest&nbsp;is&nbsp;the

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//GET_STATUS&nbsp;and&nbsp;the&nbsp;recipent&nbsp;is&nbsp;the&nbsp;epuipment&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[4])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if&nbsp;the&nbsp;&nbsp;windex&nbsp;&nbsp;is&nbsp;not&nbsp;the&nbsp;value&nbsp;that&nbsp;in&nbsp;the&nbsp;tab&nbsp;,then&nbsp;the&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//answer&nbsp;of&nbsp;the&nbsp;epuipment&nbsp;&nbsp;is&nbsp;not&nbsp;define&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[0]&nbsp;=&nbsp;USB_Remote_Wake?1:0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//对设备的请求处理并配置包信息

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[1]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]==0x81)//if&nbsp;the&nbsp;first&nbsp;&nbsp;packet&nbsp;is&nbsp;0x81,&nbsp;which&nbsp;indicate&nbsp;the&nbsp;bRequest&nbsp;is&nbsp;the

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//GET_STATUS&nbsp;and&nbsp;the&nbsp;recipent&nbsp;is&nbsp;the&nbsp;interface&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[4])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//请求错误

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[0]&nbsp;=&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[1]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//发向接口的请求处理

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]==0x82)&nbsp;&nbsp;//if&nbsp;the&nbsp;first&nbsp;&nbsp;packet&nbsp;is&nbsp;0x82,&nbsp;which&nbsp;indicate&nbsp;the&nbsp;bRequest&nbsp;is&nbsp;the

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//GET_STATUS&nbsp;and&nbsp;the&nbsp;recipent&nbsp;is&nbsp;the&nbsp;endpoint&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=D12_Select_Endpoint((SetupPacket[4]*2)|((SetupPacket[4]&0x80)?1:0));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[1]&nbsp;=&nbsp;(temp&2)?1:0;&nbsp;&nbsp;&nbsp;&nbsp;//麻烦楼主帮忙解释下这句好么?

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupPacket[0]&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//端点的请求处理

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//请求错误



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_Write_Endpoint(1,&nbsp;SetupPacket,&nbsp;2);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//向端点写配置信息

}



本贴被 haihai 编辑过,最后修改时间:2008-12-04,16:22:43.

出0入0汤圆

发表于 2008-12-4 22:15:48 | 显示全部楼层
sd卡发送写指令后,在发送数据时可以被中断打断吗?打断后中断返回,继续发送要写的数据,还能实现数据的写入吗?发送指令时可以被外部中断打断吗?急需请教,谢谢,请各位大虾帮帮忙啊!!!&nbsp;&nbsp;

出0入0汤圆

发表于 2008-12-16 16:32:48 | 显示全部楼层
U8&nbsp;Clear_Feature(U8&nbsp;*SetupPacket)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//The&nbsp;features&nbsp;of&nbsp;the&nbsp;clear

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//printf("\nClear&nbsp;Feature&nbsp;Request\n");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]&0x80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//If&nbsp;the&nbsp;first&nbsp;packet,s&nbsp;meassage&nbsp;&&nbsp;0x80&nbsp;&nbsp;that&nbsp;instruction&nbsp;the&nbsp;device&nbsp;&nbsp;is&nbsp;the&nbsp;status&nbsp;which&nbsp;the&nbsp;configuration&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[3]|SetupPacket[5]|SetupPacket[6]|SetupPacket[7])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]&0x1f)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((SetupPacket[0]&0x1f)!=2)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_Set_Endpoint_Status((SetupPacket[4]*2)|((SetupPacket[4]&0x80)?1:0),0);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[4])

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USB_Remote_Wake&nbsp;=&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_Write_Endpoint(1,&nbsp;SetupPacket,&nbsp;0);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;

}

这个CLEAR_FEATURE函数的

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SetupPacket[0]&0x1f)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((SetupPacket[0]&0x1f)!=2)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D12_Set_Endpoint_Status((SetupPacket[4]*2)|((SetupPacket[4]&0x80)?1:0),0);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

这部分怎么理解呀?我怎么看标准设备请求这部分资料中没有0x1f呀?麻烦高手解释一下,谢谢。

出0入0汤圆

发表于 2009-1-15 10:39:14 | 显示全部楼层
真牛,不用作PCB直接用万能板做成这样,我很佩服!!

出0入0汤圆

发表于 2009-4-18 09:33:54 | 显示全部楼层
过牛掉啊楼主!

出0入0汤圆

发表于 2009-4-18 10:55:05 | 显示全部楼层
很不错,收藏了

出0入0汤圆

发表于 2009-4-18 12:10:02 | 显示全部楼层
成本大概多少钱

出0入0汤圆

发表于 2009-4-18 13:36:45 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-4-18 16:23:04 | 显示全部楼层
接下来就是做这个东东,刚好用得着。

出0入0汤圆

发表于 2009-4-18 22:41:47 | 显示全部楼层

出0入0汤圆

发表于 2009-4-18 22:52:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-18 23:22:24 | 显示全部楼层
终于找到了!!!收下!!!

出0入0汤圆

发表于 2009-5-12 09:56:38 | 显示全部楼层
章其波:您的作品不错!我是无锡一家公司的总工程师,想与您交谈一次,能给我发个电子邮件吗?
老吴(xn150201@163.com)

出0入0汤圆

发表于 2009-6-6 09:19:56 | 显示全部楼层
请问,你的SD卡,口上的电压是4V,会不会将SD卡烧坏啊??

出0入0汤圆

发表于 2009-6-6 09:50:26 | 显示全部楼层
学习中

出0入0汤圆

发表于 2009-6-13 02:29:17 | 显示全部楼层
真tm好,呵呵,学习,楼主强人

出0入0汤圆

发表于 2009-7-20 08:43:30 | 显示全部楼层
usb读卡器,批发2.8元

出0入0汤圆

发表于 2009-7-30 18:06:00 | 显示全部楼层
强人,收藏了!

出0入0汤圆

发表于 2009-7-31 09:07:44 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-8-20 22:15:35 | 显示全部楼层
bozai 章其波
你好!
最近想玩玩USB
不知道哪款芯片比较好?PDIUSBD12?CH375?或者别的?

望给个建议

出0入0汤圆

发表于 2009-8-20 22:22:38 | 显示全部楼层
很精致

出0入0汤圆

发表于 2009-8-21 08:28:34 | 显示全部楼层
bozai 章其波
你好!
最近想玩玩USB
不知道哪款芯片比较好?PDIUSBD12?CH375?或者别的?

望给个建议

出0入0汤圆

 楼主| 发表于 2009-8-21 08:40:47 | 显示全部楼层
带USB的MCU,速度要快些,性价比也好。 像STM32,91SAM7S之类的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-12 21:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表