USB接口的基础理论知识

USB的重要关键字:
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)
2、帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。
3、上行、下行:设备到主机为上行,主机到设备为下行
下面以一问一答的形式开始学习吧:
问题一:USB的传输线结构是如何的呢?
答案一:一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500MA(可以在编程中设置的,至于硬件的实现机制,就不要管它了)。
问题二:数据是如何在USB传输线里面传送的
答案二:数据在USB线里传送是由低位到高位发送的。
问题三:USB的编码方案?
答案三:USB采用不归零取反来传输数据,当传输线上的差分数据输入0时就取反,输入1时就保持原值,为了确保信号发送的准确性,当在USB总线上发送一个包时,传输设备就要进行位插入***作(即在数据流中每连续6个1后就插入一个0),从而强迫NRZI码发生变化。这个了解就行了,这些是由专门硬件处理的。
问题四:USB的数据格式是怎么样的呢?
答案四:和其他的一样,USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。下面简单介绍一下域、包、事务、传输,请注意他们之间的关系。

Read More …

April 22nd, 2008 | Leave a Comment

LPC2148-UCOS-2.80-移植文件分析之OS_CPU_C_C

今天比较累,先占各座,过两天在完善,下面是周立功公司给的注释

Read More …

April 7th, 2008 | Leave a Comment

LPC2148-UCOS-2.80-移植文件分析之OS_CPU_A_S

继续看OS_CPU_A.S中的代码,其中软件中断函数SoftwareInterrupt在上一节已近分析过了,还
剩两个软件异常中断处理函数OSIntCtxSw和OSStarHighRdy,下面结合原文件继续分析

Read More …

April 6th, 2008 | Leave a Comment

LPC2148-UCOS-2.80-移植文件分析之OS_CPU.H

郁闷,昨天晚上边看移植代码边记下来的笔记不知道怎么回事在保存的时候竟然不见了。。。55
一个晚上工作的结果啊,关键是我是第一次也是正式开始移植的学习之路啊。。真是够倒霉的。
。。。今天在工作之前先把昨天的笔记重新回顾一下,其实后来想想也许是件好事,可以让我今
天在不借助其他的帮助的情况下自己看代码自己跟自己讲一遍,其实很多看起来是倒霉看起来是
灰心的事情把我们的观点换一下那么就是一件好事。。这样的情况发生在我的身上已经挺多次了
。。。。好啦,废话不说,开始补昨天的日记UCOS-II的移植需要提供2,3个文件分别介绍如下:

Read More …

April 6th, 2008 | Leave a Comment

UCOS-II移植ARM的读书笔记 之 一

郁闷,昨天晚上边看移植代码边记下来的笔记不知道怎么回事在保存的时候竟然不见了。。。55
一个晚上工作的结果啊,关键是我是第一次也是正式开始移植的学习之路啊。。真是够倒霉的。
。。。今天在工作之前先把昨天的笔记重新回顾一下,其实后来想想也许是件好事,可以让我今
天在不借助其他的帮助的情况下自己看代码自己跟自己讲一遍,其实很多看起来是倒霉看起来是
灰心的事情把我们的观点换一下那么就是一件好事。。这样的情况发生在我的身上已经挺多次了
。。。。好啦,废话不说,开始补昨天的日记UCOS-II的移植需要提供2,3个文件分别介绍如下:

Read More …

April 6th, 2008 | Leave a Comment

μCOS-II 在ARM处理器上的移植要点

1. 设置OS_CPU.H 中与处理器和编译器相关的代码 /********************************************************************
*
* 与编译器相关的数据类型
*********************************************************************
/
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; //8 位无符号整数
typedef signed char INT8S; //8 位有符号整数
typedef unsigned int INT16U; //16 位无符号整数
typedef signed int INT16S; //16 位有符号整数
typedef unsigned long INT32U; //32 位无符号整数
typedef signed long INT32S; //32 位有符号整数
typedef float FP32; //单精度浮点数
typedef double FP64; //双精度浮点数
typedef unsigned int OS_STK; //堆栈入口宽度为16 位
#define BYTE INT8S //字节型
#define UBYTE INT8U //为了与uC/OS V1.xx.兼容
#define WORD INT16S // … uC/OS-II.
#define UWORD INT16U
#define LONG INT32S
#define ULONG INT32U

Read More …

March 26th, 2008 | Leave a Comment

STARTUP.S: Philips LPC2000 龙啸苍天注释修改版

;/*****************************************************************************/
;/* STARTUP.S: Philips LPC2000 龙啸苍天注释修改版
;/* 修改 内容: 将一些英文的注释根据自己的理解进行修改(水平有限难免有难,还请谅解)
;/*            加入了PINSEL0和PINSEL1的设置
;/* 修改 目的: 便于阅读
;/* 修改 人员: 龙     
;/* 修改 日期: 2008-1-24   
;/*****************************************************************************/

Mode_USR        EQU     0×10   ; 定义用户模式标志代码
Mode_FIQ        EQU     0×11   ; 定义快速中断模式标志代码
Mode_IRQ        EQU     0×12   ; 定义普通中断模式标志代码
Mode_SVC        EQU     0×13   ; 定义管理模式标志代码
Mode_ABT        EQU     0×17   ; 定义中止模式标志代码
Mode_UND        EQU     0×1B   ; 定义未定义模式标志代码
Mode_SYS        EQU     0×1F   ; 定义系统模式(特权模式)标志代码
          ;
I_Bit           EQU     0×80   ; 设置普通中断是否有效
F_Bit           EQU     0×40   ; 设置快速中断是否有效

;// <h> 堆栈大小设置(字节)
;//   <o0> 未定义模式堆栈大小  <0×0-0xFFFFFFFF:8>
;//   <o1> 管理模式堆栈大小   <0×0-0xFFFFFFFF:8>
;//   <o2> 中止模式堆栈大小   <0×0-0xFFFFFFFF:8>
;//   <o3> 快速中断模式堆栈大小  <0×0-0xFFFFFFFF:8>
;//   <o4> 普通中断模式堆栈大小  <0×0-0xFFFFFFFF:8>
;//   <o5> 用户模式堆栈大小   <0×0-0xFFFFFFFF:8>
;// </h>

Read More …

March 19th, 2008 | 1 Comment

解决KEIL MDK ARM开发环境光标位置不准问题的简洁办法

Keil解决光标问题    转贴
Keil 一直难用的原因就是那个光标和中文注释问题,在实难忍受的情况下,百度,终于找到了最佳的解决方案。
通过改字体的方式,起码,在我这是行不通的。

但在 Keil 的Tool.ini中增加如下参数 (ANSI=1) (去掉原来AMSI=1),可以很好的解决这个问题。

[UV2]
ORGANIZATION=”Wuse”
NAME=”Wei”, “Song”
EMAIL=” xxx “        
ANSI=1
BOOK0=UV3\RELEASE_NOTES.HTM(”uVision Release Notes”)

March 10th, 2008 | 5 Comments

Powered by WordPress | Blue Weed by Blog Oh! Blog | Entries (RSS) and Comments (RSS).