用PIC18F14K50对USB功能的实现

2020-02-06 10:33发布

有用过/正在用PIC18F14K50对USB功能的实现的吗?
  好像该IC在USB方面性价比较高,算是比较新的IC,欢迎有用过或正的用的朋友一起讨论,本人刚起步,尤其对PIC只能算是初学者(在ouravr算是借用宝地啦,因为这之前一直用mega)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
33条回答
coolhe
2020-02-06 13:45
通过这段时间的摸索,小结如下:
基础篇:
Q1:高速USB和USB 2.0有区别吗?哪一种说法是正确的?
# 高速USB和USB 2.0是有区别的,区别在于USB 2.0是一种规范,而“高速USB”仅指在USB 2.0规范中数据传输率为480Mbps的那部分,某个设备可以是符合USB 2.0的设备,同时还可以是全速设备或低速设备。
Q2:USB设备与计算机的通信速度有多快?
# USB 2.0支持低速、全速和高速三种速度,分别为1.5Mbps、12Mbps和480Mbps。
Q3: USB规范定义了哪些数据传输机制(Endpoint Transfer Type)?
四种不同的数据传输机制分别为:
# 控制传输(Control)
  USB主机使用控制传输向USB设备发送命令和询问。当枚举USB设备时,控制传输使用端点0(EP0),这样可强制所有USB设备支持EP0而无需考虑支持速度。控制包的最大容量为8、16、32或64字节。低速USB设备中控制传输的包长度必须为8字节,高速USB
设备必须为64字节,而全速USB设备允许8、16、32或64字节(MicroChip官网对此有错误的说法),也就是说控制传输对于最大包长度有固定的要求。最大包长度信息在“设备描述符”中体现,即wMaxPacketSize为“设备描述符”包的Byte7,它反应了该端点对应的Buffer的大小,当通过一个端点进行数据传输而数据的大小超过该端点的最大包长度时,需要将数据分成若干个数据包传输,并且要求除最后一个包外,所有的包长度均等于该最大包长度,也就是说,如果一个端点收到/发送了一个长度小于最大包长度的包,即意味着数据传输结束。但需要注意:Setup包总是8 Bytes的。
# 中断传输(Interrupt)
  中断传输是USB设备向USB主机请求一定轮询速率的方法。在枚举过程中,USB设备向USB主机请求轮询时间。全速设备的最大轮询速率为每毫秒一次,低速设备为每10毫秒一次。低速USB设备的最大数据负载为8字节,全速USB设备为64字节,而高速设备最大数据包为1024字节。这使得全速USB设备的最大吞吐量为64KB/s,低速USB设备为800B/s。确认中断传输可保证数据的传送。如果传输包接收失败,则会重新发送。中断传输是单向传输,但这里的单向传输并不是说只支持一个方向的传输,而是指在某个端点上该传输仅支持一个方向,或输入,或输出,如果需要在两个方向上进行某种单向传输,需要占用两个端点,可分别配置成不同的方向。
# 批量传输(Bulk)
  批量传输是设备传输大量数据的方法,但是不能保证会及时发送。在总线安排传输时,批量传输的优先级最低。当其他传输完成后,余下的带宽复位后将分配给批量传输。与中断传输一样,确认批量传输可保证数据的传送。只有全速和高速设备支持批量传输。对于全速USB设备的端点而言,最大的包容量可为8、16、32或64字节长度。对于高速USB设备的端点而言,最大的包容量可高达512字节长度。
# 同步传输(Isochronous)
  同步传输保证了传输速率。全速同步传输每帧可发送1023字节的数据。同步传输无需确认。因此,同步包有可能并未送达。同步传输的典型应用为音频/视频流,其中最重要的是以丢失包为代价保持视频和音频的进行。全速USB设备的最大传输率为1023Kbps。
Note:HID设备只支持控制传输和中断传输方式。

一周热门 更多>