USB协议要点

1、每个端点号对应两个端点地址,每个端点地址对应一个管道。

2、USB主设备枚举是首先检测从设备的描述信息,解析出要使用的管道号以便后续设置

USB主模式

1、在枚举设备获取描述符时,USB指示灯才会亮,也就是只有 TD 传输时才会亮。

使用LPC1788官方例程

1、查看端口号是否是否一致,若不一致,需要重新配置引脚服用、LPC_USB->StCtrl等参数。

2、配置5V供电引脚、指示灯引脚,时钟部分不需要做修改。

3、特别注意的是,和USB相关的变量地址要在 0x20000000 到 0x20008000 范围中。

例程中使用 __attribute__ ((section("USB_RAM")))  实现这点,此时需要在LINK 选项中的SCT文件中添加

RW_IRAM2 0x20000000 0x00008000  {
   *.o (USB_RAM)
  }

USB_RAM就是申请到制定范围内的节,每次定义变量时,在后面加上__attribute__ ((section("USB_RAM"))) 就可以使变量地址在这片区域中。

4、U盘多次拔插不能识别可能是缓冲区没有释放的原因,官方程序中有相关的处理函数,并且再次连接是要重新枚举。

USB从模式

1、从模式的官方例程没有给出完整源码,

extern const  USBD_HW_API_T hw_api;
extern const  USBD_CORE_API_T core_api;
extern const  USBD_CDC_API_T cdc_api;

这三个变量的定义和初始化部分没有,直接把 extern 去掉会内存溢出,进 HardFault_Handler ,

所以直接使用 usbd_177x_8x_lib 这个库。

2、根据硬件修改 Board_USBD_Init 函数。

3、从机模式也出现了无法热拔插的情况,

调试过程中并未发现和连接相关的变量,按常理应该是检测到新连接,运行初始化函数。于是利用 P1.22 脚来检测 USB 电源是否存在,以判断连接状况。

在 while 中加入

if (!Chip_GPIO_GetPinState(LPC_GPIO, 1, 22))
{
printf("device disconncted \n\r");
while (!Chip_GPIO_GetPinState(LPC_GPIO, 1, 22));

ret = USBD_API->hw->Init(&g_hUsb, &desc, &usb_param);

ret = vcom_init(g_hUsb, &desc, &usb_param);
if (ret == LPC_OK) 
{
printf("vcom init ok \n\r");
USBD_API->hw->Connect(g_hUsb, 1);
}
}

这样重新连接后运行两个初始化函数,该设备就能再次被 PC 枚举,支持热拔插。

奇怪的是电脑枚举设备时,设备应该在中断中返回描述信息,和硬件初始化似乎没什么关系,现在没有源码,初始化到底做了什么也不清楚,猜想可能和主模式一样,

程序在某个地方释放了与描述符相关的缓存,所以要在初始化中重新申请。

4、由于使用CDC例程,PC端的驱动选择了 JLink CDC UART Port ,好像是 WINDOWS 自带的,或者装 JLINK 驱动的时候自动安装的,目前使用未发现问题。

LPC1788 USB调试相关推荐

  1. usb调试模式已打开,adb devices显示List of devices attached 解决办法!纽维K333一键ROOT,获取ROOT权限!...

    usb调试模式已打开,adb devices显示老显示List of devices attached .刚开始以为USB线问题,跟朋友借了一根,未果. 更换其他的机子测试就可以显示设备,但是这部纽维 ...

  2. vivo Y93s的USB调试模式在哪里,打开vivo Y93sUSB调试模式的步骤

    每次我们使用安卓手机通过数据线连接到电脑的时候,如果手机没有开启usb调试模式,电脑则不能够成功识别我们的手机,部分工具也不能够正常使用,遇到这个情况我们需要找解决方法将手机的usb调试模式开启,以下 ...

  3. OPPO R9s在哪里开启Usb调试模式的完美步骤

    就在我们使用pc通过数据线连接到安卓手机的时候,如果手机没有开启Usb调试模式,pc则没办法成功读到我们的手机,如果遇到此情况我们需要找处理方法将手机的Usb调试模式开启,如下内容我们记录一下OPPO ...

  4. (最简单)小米MIX 2S的usb调试模式在哪里开启的流程

    每次我们使用安卓手机接通pc的时候,或者使用的有些工具比如我们团队营销小组每次使用的工具引号精灵,之前的老版本就需要开启usb开发者调试模式下使用,现每次新版本不需要了,如果手机没有开启usb开发者调 ...

  5. vivo Y81s的usb调试模式在哪里,打开vivo Y81susb调试模式的流程

    每次我们使用安卓手机通过数据线链上Pc的时候,如果手机没有开启USB调试模式,Pc则没能够成功识别我们的手机,部分应用软件也没能够正常使用,遇到这个情况我们需要想办法将手机的USB调试模式打开,本文我 ...

  6. Appium 移动端自动化 - Android SDK连接安卓手机,adb连接一加8手机USB调试实例演示,连接一加8手机不显示USB调试选项问题排查

    Android SDK 连接安卓手机过程演示 第一章:一加8手机连接过程 ① 启用开发者模式 ③ 开发者选项启用 USB 调试 ③ 手机连接 USB 调试 ④ 手机连接不显示 USB 调试选项问题排查 ...

  7. android oppo调试模式,OPPO A59 开启USB调试模式

    我们要将OPPO A59与电脑进行连接,就必须要打开OPPO A59系统的调试模式,不同的系统版本打开调试模式的方法有所不同,在这里我们就谈谈OPPO A59各种系统版本打开USB调试模式的方法. 1 ...

  8. (简单)华为荣耀4A SCL-TL00的usb调试模式在哪里打开的方法

    当我们使用Pc通过数据线连接上安卓手机的时候,如果手机没有开启USB开发者调试模式,Pc则没法成功检测到我们的手机,在一些情况下,我们使用的一些功能较好的应用软件比如之前我们使用的一个应用软件引号精灵 ...

  9. Android 5.0 Usb调试拦截分析及修改

    当我们调试安卓机器时,第一次插上usb线,会弹出一个授权的对话框,(前提是打开了usb调试功能)点击确认,才会允许调试. 如果我们想机器默认就可以调试该怎么做呢? 如果我们想动态拦截,需要用户输入帐号 ...

  10. android 4.0.4 usb调试,安卓手机4.0怎么打开usb调试?图文详解附视频

    安卓手机更新换代的太快,系统每次升级多少会有点不同 总会有那么点不适应,就连如何调试USB都不知道怎么设置了? 下面就来就讲讲目前主流品牌手机4.0手机USB调试. 大部分Android设备打开&qu ...

最新文章

  1. java.io.IOException: No space left on device
  2. LINUX挂接移动硬盘
  3. thinkphp加锁抢购商品
  4. 利用AutoHotkey实现Vim和Excel的数据传递
  5. pfSense Book下载
  6. Node — 第六天(前后端分离)及(身份验证)
  7. Linux下WPS自主设置快捷键,电脑wps的word怎么自主设定快捷键
  8. 窥探Swift之别样的枚举类型
  9. 编译安装的mysql如何更改文件路径
  10. jquery学习笔记之选择器
  11. ASP.Net在web.config中设置上传文件的大小方法
  12. 软件体系结构 复习题
  13. Word2013中如何去掉页眉横线
  14. 后分布式时代: 多数派读写的「少数派」实现
  15. 【认证/测试】产品的IP等级防水/防尘解析以及测试方法
  16. 通过Debugx5在电脑端调试微信页面
  17. Python - 实现渐变色的RGB计算
  18. Word安全警告 宏已被禁用解决
  19. 小米集团2023校招芯片设计笔试
  20. 电影购票系统接口篇【全栈开发】

热门文章

  1. Http方式下载文件
  2. WGS84,GCJ-02,BD-09坐标系间的经纬度坐标转换
  3. series选取值_midas界面单元参数取值说明
  4. 为什么是“深度”学习而不是宽度?
  5. 如何使用Git SVN工具 -- TortoiseGit(小乌龟)将本地项目上传至GitEE?【超详细教程】
  6. C++获取NTP服务器上的网络时间
  7. matlab符号运算变量替换成小数时避免出现分数的小技巧
  8. windows必备软件系列
  9. charles 的安装和手机配置 (我用的win7系统 ,和 iphone8 的配置)
  10. 如何用Python批量打印PDF文档、Word文档、Excel表格、图片呢?