USB工作原理简述

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/228153

1.工作原理简述:

在一个USB系统中,必须有一个主机,和一个或多个从机。本系统中需要把电能,电压,电流,有功功率,无功功率等数据写到U盘里,所以系统是主机,U盘是从机。LPC24xx,LPC17xx里有USB设备,主机,OTG控制器。我们采用其中主机控制器,寄存器定义遵循OHCI规范。

主机必须要做的工作:

       检测USB设备是否联机

       检测USB设备的速度

       挂起和唤醒USB设备

       枚举设备

       错误和复位功能

       能自动设置USB总线复位

       实现控制,快传输模式

USB组织定义了海量存储设备类(Mass Storage Class)的规范,这个类规范包括四个独立的子类规范,即:

       USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport

       USBMass Storage Class Bulk-Only Transport

       USB Mass Storage Class ATA Command Block

       USB Mass Storage Class UFI Command Specification。

U盘使用Bulk- Only传输规范,使用Bulk端点传送数据/命令/状态,使用

UFI命令规范对其进行操作。

U盘采用文件系统来组织文件。在U盘中常用的是FAT16和FAT32,下面是这个文件系统的对比:

FAT16:

优点:兼容性最好,某些数码设备可能对FAT32和NTFS格式的存储卡支持不太好,因此只能使用FAT16;

缺点:最大仅支持2GB分区,空间浪费大;

备注:赶紧看看您的U盘是不是FAT格式,如果是就改用FAT32吧;

FAT32:

优点:兼容性好;

缺点:单个文件不能超过4GB,不支持512MB以下容量的U盘;

备注:如果U盘容量达8GB以上,发现4GB文件拷不进去的话,可以考虑换用NTFS或ExFAT格式了。

目前主流U盘已经有1G,2G,4G,8G,所以综合上面的分析,我们选用FAT32文件系统。

2.原理框图

USB工作原理简述


3.需要的IO资源分析

USB_D+1正向差分信号

USB_D-1反向差分信号

4.FLASH空间和RAM空间预算

RAM空间根据需要传输到U盘的数据大小确定

5.模块的工作电压,工作电流(是否需要隔离)

需要5V的工作电流,电流不超过100mA,不需要隔离


为了实现一个**无需驱动即可工作USB2CAN 设计**,需要确保该设备在连接到主机时能被操作系统自动识别并支持,通常这意味着使用的是标准的 USB 接口协议,例如 USB CDC(Communication Device Class)或 HID(Human Interface Device)类设备。 ### 硬件设计要点 USB2CAN 转换器通常由以下主要模块组成: 1. **USB 控制器模块**:负责与主机进行 USB 通信,可选用集成 USB 收发器的微控制器(如 STM32F1、F0、L4 系列),这些芯片支持 USB CDC 模式,可被操作系统识别为虚拟串口设备。 2. **CAN 控制器模块**:用于处理 CAN 协议,可选用集成 CAN 控制器的 MCU,或者外置 CAN 控制器芯片(如 MCP2515)。 3. **CAN 收发器模块**:将 CAN 控制器的逻辑电平转换为 CAN 总线的差分信号,常用芯片如 MCP2551 或 TJA1050。 ### 无需驱动的设计方法 - 使用 **USB CDC 类设备**:通过 USB CDC 模拟串口,操作系统(如 Windows、Linux、macOS)会自动识别为串口设备,无需额外安装驱动。 - 使用 **USB HID 类设备**:HID 类设备通常用于键盘、鼠标等设备,也被广泛支持,适合低速 CAN 数据传输。 - 在 MCU 中实现标准 USB 描述符,确保设备枚举时被识别为标准类设备。 ### 示例原理图结构 以下为基于 STM32F0 的 USB2CAN 原理图结构简述: ```plaintext USB Type-C 接口 | v STM32F070 (USB CDC + CAN) | +---- CAN Controller (内置) | +---- CAN Transceiver (MCP2551 或 TJA1050) | CAN_H / CAN_L 输出 ``` - USB 接口采用 Type-C 或 Type-A 接口。 - STM32F070 作为主控芯片,集成 USB 和 CAN 控制器[^1]。 - CAN 收发器芯片用于将控制器的 CAN_RX 和 CAN_TX 转换为 CAN 总线差分信号。 ### 示例 USB CDC 初始化代码(STM32 HAL) ```c // 初始化 USB CDC 虚拟串口 void MX_USB_DEVICE_Init(void) { hpcd_USB_FS.Instance = USB; hpcd_USB_FS.Init.dev_endpoints = 8; hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; hpcd_USB_FS.Init.phy_itface = PCD_PHY_EMBEDDED; hpcd_USB_FS.Init.low_power_enable = DISABLE; HAL_PCD_Init(&hpcd_USB_FS); HAL_PCDEx_SetRxFiFo(&hpcd_USB_FS, 0x80); HAL_PCDEx_SetTxFiFo(&hpcd_USB_FS, 0, 0x40); HAL_PCD_Start(&hpcd_USB_FS); } ``` - 上述代码初始化了 STM32 的 USB 模块,并将其配置为 CDC 类设备,操作系统将自动识别为串口设备[^1]。 ### 设计文档建议内容 1. **硬件框图**:展示 USB 接口、MCU、CAN 控制器、CAN 收发器之间的连接关系。 2. **USB 描述符配置**:包括设备描述符、接口描述符、端点描述符等,确保设备被识别为 CDC 或 HID 类设备。 3. **CAN 协议处理逻辑**:说明 CAN 帧的收发流程,以及如何通过 USB 接口传递 CAN 数据。 4. **电源设计**:包括 USB 供电、稳压电路、CAN 收发器供电等。 5. **PCB 布局建议**:提供关于 USB 信号完整性、CAN 总线布线的建议。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值