| 
			 
					阅读:4645回复: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)  | 
	|
					
						最新喜欢: | 
	
| 
			 沙发# 
								发布于: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源代码哪里可以下载!能给我发一份吗?
 
							非常感谢!  | 
	|