阅读:4438回复:14
51+SL811+移动硬盘的开发(二)BY interrupt
51+SL811+移动硬盘的开发(二)
让单片机找到SL811HS: 做硬件时,建议给片子连48M的有源晶振,笔者使用无源晶振的时候,会产生不稳定的现象,这说明811片子里面的震荡电路不够好。画图的时 候,D+/D-两条线尽量平行,到片子的距离不宜太长。另外,因为某些移动硬盘启动电流比较大,板子的电源应该是1A以上的5V电源,给USB口 供电的VCC可以不串电阻。由于我们对移动硬盘读写的时候对BUFFER要求比较大,需要给单片机扩充XRAM,笔者用的是一片16K的CY62256。 做好板子之后,首先要进行电气检测,然后就插上仿真器,写一个最简单的程序,测试对CY62256读写是否正常,如果没问题,就说明单片机总 线访问OK了。然后测试对SL811HS的读写,写一个数据到SL811HS的BUFFER区,再读出来看是否正确,如果没问题,就可以进行下一步了。 让SL811HS找到USB设备: 首先要设置相应的寄存器,使SL811HS产生帧同步信号,告诉SL811HS从设备是高速设备,控制它在什么情况下产生中断,设完之后对芯片进行软 复位。具体过程不再详述。 在程序的主循环中读取SL811HS的状态寄存器(0DH),查询其(Device Detect/Resume)位,若改位为1,说明有USB设备插/拔动作,到底是设备 插入还是拔出?这就要由系统自己记住了。 通过SL811HS向从机发送数据: 将要发送的的数据写到SL811HS的一块连续BUFFER区。 向SL811HS的(0x01)寄存器写入要传送数据在BUFFER中的起始地址信息。 向SL811HS的(0x02)寄存器写入要传送数据的长度信息。 向SL811HS的(0x03)寄存器写入PID、设备的 Endpoint信息。 向SL811HS的(0x04)寄存器写入设备的Address信息。 清空SL811HS的中断状态寄存器。 向SL811HS的(0x04)寄存器设定开始传送的命令(注意data0/data1之间的轮转)。 读中断状态寄存器,若受到ACK(确认信息),表示此帧传送完毕。 通过SL811HS向从机发送数据的Ping-Pong方式的实现: 若有大量的数据(如以512字节为最小单位的扇区写操作)需要传送,就要考虑到Ping-pong 传送。其具体过程为:1.向BUFFER中同时写入两个 帧,2.发出第一个帧,3.等待确认信息,4.受到确认信息后发出第二个帧,在第一个帧的位置上填充第三个帧,同时开始等待确认信息。如此循 环。Ping-Pong方式利用等待的时隙填充BUFFER.可以极大的提高系统的性能,再不改变其他条件的情况下,提高速度。可以把它上升为一种方 法论。 通过SL811HS向从机接收数据: 向SL811HS的(0x01)寄存器写入要传送数据在BUFFER中的起始地址信息。 向SL811HS的(0x02)寄存器写入要传送数据的长度信息。 向SL811HS的(0x03)寄存器写入PID、设备的 Endpoint信息。 向SL811HS的(0x04)寄存器写入设备的Address信息。 向SL811HS的(0x04)寄存器设定开始传送的命令(注意data0/data1之间的轮转)。 读中断状态寄存器,若受到ACK(确认信息),表示此帧传送完毕。 从BUFFER相应地址中读取刚刚收到的数据。 通过SL811HS向从机发送数据的Ping-Pong方式的实现: 1.发出读第一帧数据的命令,2.收到确认信息后发出读第二个帧的命令,然后读第一帧的数据,进入等待确认信息状态,3,收到确认信息后再进 入2. 让SL811HS和USB设备握手: a:设备端点 一个端点是一个可唯一识别的USB设备的Portion,它是主机与设备间通信流的一个结束点。一系列相互独立的端点在一起构成了 USB逻辑设备。每个逻辑设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点 号。这个端点号是在设备设计时被给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两者不可得兼。 b:0端点: 所有USB设备都需要实现一个缺省的控制方法。这种方法将端点0作为输入端点,同时也将端点0作为输出端点。USB系统用这个缺省方 法初始化及一般地使用逻辑设备(即设置此设备)。缺省控制通道支持了对控制的传送,一旦设备接上,并加电,且又收到一个总线复位命令, 端点0就是可访问的了。 USB设备枚举的过程,可以参照USB1.1协议中的相关章节。同时借助BUS HOUND,BUS HOUND 在这个时候非常有效,可以把一个U盘插入到PC机,用BUS HOUND 抓下通信的详细过程。最开始的阶段的数据纪录的就是比较标准的USB设备枚举过程。 (TO BE COUNTINUED) |
|
最新喜欢:ww7002 |
沙发#
发布于:2004-04-21 11:24
好样的,顶一个!
|
|
板凳#
发布于:2004-04-21 14:00
支持!!
|
|
地板#
发布于:2004-04-26 11:30
to interrupt
您好! 我公司最近需要有一外挂附属产品---优盘替代软驱(720K),用优盘替代原来的软驱(720K)or ( 1.44M)。要求该产品用单片机开发,并能与其他单片机产品通讯。如您公司能开发此产品,请速与我公司联系。 Tel:0512-55662703 苏军民 |
|
地下室#
发布于:2004-04-26 11:46
支持!
还有哪位有sl811hs的固件编程资料呀?拜托提供一下 不胜感激!!! |
|
5楼#
发布于:2004-04-27 10:05
To sujmsujm:
你给我发邮件就行了,在网络上公开电话姓名不好。把帖子删了吧。 |
|
6楼#
发布于:2004-04-27 10:06
我的email:xuxili1@msn.com
|
|
7楼#
发布于:2004-04-27 11:17
好东东!
|
|
8楼#
发布于:2004-04-27 12:14
期待下文!!!
|
|
|
9楼#
发布于:2004-04-27 12:43
我真佩服你啊
|
|
|
10楼#
发布于:2004-07-02 13:00
thanks
|
|
11楼#
发布于:2004-07-04 03:19
好
|
|
12楼#
发布于:2004-07-04 20:18
hao
|
|
13楼#
发布于:2004-07-23 11:22
好贴子,哪位牛人能提供811的固件编程资料,谢谢
aquablue@vip.sina.com |
|
14楼#
发布于:2005-05-13 17:47
你说的CYPRESS的SL811源代码哪里可以下载!能给我发一份吗?
非常感谢! |
|