文号
t42568
阅读
29616
回复
11
收藏
8
51调用USB2.0实现高速传输
2012/04/02
IP:广东
转自 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  有修改

USB2.0带宽有480M,而且传输稳定,误码率低。
这是一个最简单的驱动程序,配合CY7C68013芯片,可以大大简化USB操作
目前已经实现了在linux下,调用libusb,进行异步fifo方式传输,大约有12MB/s的带宽

接线:
68013连接USB、晶振,EEPROM不需要接,但是I2C两条线必须上拉。
SLWR(26脚)=时钟线,PB0-7 PD0-7(2-10,12-20脚)=数据线,接到单片机
FIFOADR0、FIFOADR1、SLOE(34,35,37)接3.3V,SLCS悬空

数据发送程序(51):
send_16_bits:
CLR P3.0 ;拉低SLWR
MOV R1,P1 ;送数据到PB0-7
MOV R2,P2 ;送数据到PD0-7
SETB P3.0  ;拉高SLWR
;此时已经发送了2个字节到68013,发送数据超过512字节之后,电脑就能读取到数据了
;68013内部有1024字节的缓存
;SLWR频率不要超过6MHz
RETI

PC端程序:


---windows下也可以调用libusb,记得去掉#define LINUX 和deatch_np函数
---同步模式能用到2.0的全部带宽,以后做了再传
+40
科创币
科学人
2012/04/02
牛!
+200
科创币
ry7740kptv
2012/04/02
很好的方案!
+200
科创币
ehco
2012/04/02
比D12神马的骚多了!赞一个!
+200
科创币
我说要有光
2012/04/02
2.0
+50
科创币
caoyuan9642
2012/04/03
看起来很高级~
+50
科创币
jrcsh
2012/04/03
高质量发帖
+50
科创币
拔刀斋
2012/04/05
USB编程从此易用
+20
科创币
celeron533
2012/04/22
高质量发帖
11
2
warmonkey作者
14年9个月前IP:未同步
382811
1楼
【9127】是 i/n/t/e/r/f/a/c/e
引用
评论
warmonkey作者
14年7个月前IP:未同步
405986
7楼
最好用ARM本身的USB接口加上系统来实现
引用
评论
warmonkey作者
14年7个月前IP:未同步
407143
10楼
回 8楼(okingkoom) 的帖子
libusb直接抓数据块就可以了
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的