LPC1768的USB驱动(三)----LPC1768的USB模块

发布者:Xingfu6666最新更新时间:2018-06-27 来源: eefocus关键字:LPC1768  USB驱动  USB模块 手机看文章 扫描二维码
随时随地手机看文章

(图一)USB设备控制器框图

模块简介:

AHB:主要用于高性能模块(CPU、DMA和DSP等)间的连接;
USB ATX:USB 设备控制器内置的模拟收发器,用来收发USB总线上的D+和D-信号;
SIE(SERIAL INTERFACE ENGINE),负责处理USB协议,完全使用硬件来处理以提升速度。使用寄存器命令控制功能;
EP_RAM:为endpoint保留的、FIFO形式的SRAM,相当于缓冲区,其大小由使用的端点数、端点的最大包大小和是否使用双缓冲区决定;

EP_RAM access control:有三种方式可以访问EP_RAM:CPU通过寄存器、SIE和DMA引擎, EP_RAM access control用来控制对EP_RAM的访问;
DMA engine and bus master interface:这部分负责在AHB上的RAM和EP_RAM缓冲区间收发数据;
Register interface:CPU和USB模块间通讯的接口;
SoftConnect:通过控D+和3.3V之间的1.5kΩ的上拉电阻来控制USB和主机之间的连接;

GoodLink:用来连接指示的借口,控制外部的一个LED指示灯,当设备成功枚举和配置好之后,LED灯会亮;USB设备如果挂起,LED灯会灭。

USB的端点:

(1)端点是一款设备上主机和设备间通信的末端(LPC1768上有32个端点),每个端点有独立的端点号、带宽需求、该端点的传输类型、最大包大小等。
(2)控制端点:即端点0,默认的控制端点。主机端使用这个控制端点来初始化和操作设备,获取设备的配置信息和状态。控制端点一开始就可以被访问,其它端点只有等设备配置好之后才能使用。


(图二)LPC1768中的32个USB端点

从图中可以看到共有32个物理端点,但被划分为16个逻辑端点。

DMA传输方式:

DMA: Direct Memory Access,即不经过CPU而直接从内存存取数据交换的模式,可以在很大程度上减轻CPU的负担。
在LPC1768中,CPU和DMA控制器共享USB Device Communication Area(UDCA)的内存,该内存的首地址存储在USBUDCAH寄存器中。

(图三)描述了UDCA和USBUDCAH寄存器、DMA描述符的关系


(图四)这个图描述了DMA描述符的具体意义

DMA 引擎 DD 描述符结构体:

/*********************************************************************************************************
  DMA 引擎 DD 描述符结构体
*********************************************************************************************************/
typedef struct non_iso_dd_tag {
    UINT32 next_dd_addr;                                                /*  下一个DD地址                */
    UINT32 control;                                                     /*  DD控制字                    */
    UINT32 start_addr;                                                  /*  DMA 缓冲区起始地址          */
    UINT32 status;                                                      /*  DMA 引擎状态                */
} DD_DESCRIPTOR;


typedef struct __tagUsbStruct __CTRL_USB;                               /*  USB数据收发控制结构体类型   */


USB相关的外部引脚:


USB_CONNECT:在软件控制下输出外部1.5kΩ的转化信号
USB_UP_LED:当设备配置好后,该引脚输出低电平;未配置好时输出高电平


关键字:LPC1768  USB驱动  USB模块 引用地址:LPC1768的USB驱动(三)----LPC1768的USB模块

上一篇:lpc1768的网络通讯
下一篇:NXP-LPC1768起步之开发环境搭建与GPIO

推荐阅读最新更新时间:2024-03-16 16:07

LPC1768之外部中断
/************************************************************************************* * main.c: the main file * NXP -- LPC1768 * * * Author : light * Date : 2012-4-22 * * Email : lightwu@hotmail.com ************************************************************************************
[单片机]
LPC1768之时钟
一锁相环和CPU时钟。 CPU时钟=锁相环0输出/CPU时钟配置寄存器的预分频值即:Fcpu=Fcco/CCLKCFG+1。锁相环可以把外部时钟倍频到较高频率,PLL0输出频率是: Fcco = (2xMxFin)/N; M=MSEL0+1,N=NSEL0+1。MSEL0和NSEL0分别是PLL0CFG_Val 的低字和高字。N值得取值范围是1~32,而M的取值是在较高的振荡器频率下(超过1MHz)允许范围是6~512。 得到PLL0输出值之后,在经过CPU时钟配置寄存器就可以得到CPU时钟。 在这个system_lpc17xx.c文件中,修改#define PLL0CFG_Val 0x00050063的宏定义值就可以了
[单片机]
stc-isp单片机下载软件与STC-USB驱动安装说明(教程)
WindowsXP安装方法 打开 V6.79 版(或者更新的版本)的 STC-ISP 下载软件,下载软件会自动将驱动文件复制到 相关的系统目录 插入 USB 设备,系统找到设备后自动弹出如下对话框,选择其中的“否,暂时不”项 在下面的对话框中选择“自动安装软件(推荐)”项 在弹出的下列对话框中,选择“仍然继续”按钮 接下系统会自动安装驱动,如下图 出现下面的的对话框表示驱动安装完成 此时,之前打开的 STC-ISP 下载软件中的串口号列表会自动选择所插入的 USB 设备,并显示 设备名称为“STC USB Writer (USB1)” ,如下图: ? Windows7(32位)安装方法
[单片机]
stc-isp单片机下载软件与STC-<font color='red'>USB驱动</font>安装说明(教程)
基于μCLinux的USB驱动程序实现
  0 引 言   μClinux是针对嵌入式控制领域的操作系统,它继承了Linux内核的绝大部分特性,专为没有内存管理单元MMU的嵌入式微处理器而设计。它内核小,效率高,源代码开放,包含了完整的TCP/IP网络协议。ADSP-BF533是ADI公司Blackfin系列的高速数字信号处理器芯片。 Blackfin系列是ADI与Intel联合开发的体现高性能体系结构的首款第四代DSP产品,16位定点DSP内核,新型指令结构,支持C/C++编程,主频达600 MHz,内核电压1.2 V,具有动态电源管理能力,功耗低,扩展能力强,被广泛应用于各种信号处理。   这里使用基于Blackfin ADSP-BF533微处理器的μCli
[嵌入式]
LPC1768之看门狗
[单片机]
<font color='red'>LPC1768</font>之看门狗
LPC1768里的SPI驱动示例——基于SST25VF016B
这里有个坑,我的路虎开发板原理图上是AT45DB161这样的芯片,实际上丝印却是SST25VF016B,这两个器件都是存储设备,但是它们不是pin对pin的,这里大家需要注意下!!! /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : spi_flash.h * Author : MCD Application Team * Version : V2.0.3 * Date : 09/22/2008 * Description : Header
[单片机]
STM32L0开发笔记4: 解决使用--CPP11编译USB驱动报错问题
项目希望使用C++语言进行程序设计,在Keil中使用C++语言的方法,我已经在 在Keil中使用C++进行程序设计 进行介绍过,不过对于STM32CubeMX生成的STM32L0XX相关文件进行编译时,提示如下图所示的错误。 仔细分析可以看出,所有的错误都集中在usbd_conf.c文件,定位错误的具体语句,如下所示。 USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev) { HAL_StatusTypeDef hal_status = HAL_OK; USBD_StatusTypeDef usb_status = USBD_OK; hal
[单片机]
USB自定义HID设备实现-LPC1768
首先在之前鼠标的基础上修改设备描述符 #include usbdesc.h //usb标准设备描述符 const U8 USB_DeviceDescriptor = { USB_DEVICE_DESC_SIZE, //bLength字段。设备描述符的长度为18(0x12)字节 USB_DEVICE_DESCRIPTOR_TYPE, //bDescriptorType字段。设备描述符的编号为0x01 WBVAL(0x0110), //bcdUSB字段。这里设置版本为USB1.1,即0x0110。 0x00, //bDeviceClass字
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved