usb通信学习心得(1)

本文是作者在学习USB通信时的心得体会,主要聚焦于USB枚举过程的理解。通过C51单片机与D12芯片的例子,详细描述了USB设备插入电脑后的步骤,包括INT_N引脚变化、挂起状态、地址0的收发数据、设备描述符的获取以及配置信息的交换。这个过程对于USB设备被电脑识别至关重要。
摘要由CSDN通过智能技术生成

         作为一个初学者,我也是最近两周多才接触usb通信的,在usb通信协议中最难理解的可能就是usb枚举过程。虽然网上也有这usb枚举过程的详细说明,

http://www.cnblogs.com/shangdawei/archive/2012/11/01/2749619.html,但是没有结合具体的程序或函数进行分析,对初学者来说还是比较难懂的。尤其是usb枚举过程时间有限,一旦超过规定时间,电脑将识别不到usb设备,因此调试usb枚举过程非常麻烦,你不可能在IDE中通过单步调试一步步观察上面网页中所述的步骤。如果你在同一个平台直接移植usb固件,当然不用担心这样的问题,因为usb枚举问题可能不会出现。这样你也省去学习usb枚举过程的麻烦,直接搞懂usb读写过程就行了。话虽如此但是我们还是有必要来学习一下它的枚举过程好么!以下是我将430单片机上的usb固件移植到C51上学习体会,usb芯片是D12.

      1).首先在usb设备未插入电脑前,D12芯片INT_N引脚为低电平,C51外部中断标志IE0初始也为0,外部中断引脚丢失中断.

      2). 当usb设备插入电脑,D12芯片将检测到D+和D-两根线的电平变化,INT_N复位拉高,同时D12中断寄存器的将产生新值,C51将读取这个中断寄存器的值 int_sta=Read_InR();   int_sta的值等于SUSPEND,即挂起状态,表示芯片可工作。

      3).D12挂起之后将进入第一次中断,C51转向外部中断服务程序,继续读取最新的中断寄存器的值 int_sta=Read_InR();  这时候 int_sta等于INT_BUSRE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值