打印
[Kinetis]

Kinetis USB模块开发

[复制链接]
893|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
energy1|  楼主 | 2015-3-23 23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

由于前段时间花了大致一个周的时间搞了搞USB设备的驱动(USB主机我还没用起来,因为主机的话涉及到2.0的协议了,短时间弄不好,索性先搞搞USB设备还好),积累了一些开发经验和资料,这里趁着这个六月底开个头,先开篇说说关于Kinetis开发前的需要做哪些准备,嘿嘿...(此分章主要针对初入门的,高手的话直接略过吧,毕竟自己是第一次开发USB,水平和经验有限,怕献丑了,呵呵)

    本系列开发仍以Kinetis K60为例介绍(Kinetis K系列家族目前K40,K60和K70自带USB-OTG模块),此分章一主要先说说从零入手的话需要先做好哪些准备,如果有网友对此感兴趣的话可以跟着来,有好的资料也欢迎下面留言分享,呵呵...下面就不罗嗦了进入正题了:

    首先说说硬件上的准备,即准备好K60系列的开发板或者核心板(把USB接口引出来),对K60这类自带USB硬件模块的片子,构造USB开发系统很简单,只需把USB_DM和USB_DP引出,接到USB接口(或者miniUSB接口)即可,但一般情况下最好这两根线都串接33欧姆的电阻做阻抗匹配防止振荡,而且两个电阻尽量靠近芯片端USB_DM和USB_DP引脚。

    其次就要准备下此次开发所需要的USB相关的技术性资料,下面列举了一些我推荐的书籍和pdf电子版的资料:


相关帖子

沙发
energy1|  楼主 | 2015-3-23 23:38 | 只看该作者

(1)Kinetis官方datasheet是必需的了,refer to USB寄存器部分;

(2)Kinetis官方外设模块开速入手手册Kinetis Peripheral Module Quick Reference.pdf,里面有一部分对USB模块做了讲解,值得一看;

(3)Kinetis官方的universal serial bus介绍,即单独的Kinetis USB模块介绍,这个比较难找,我传到附件里了,可以下载下来一看;

(4)USB 2.0协议,找个中文版的瞅瞅,如果开发USB主机的话需要仔细看看,开发设备的话简单瞅瞅;

(5)王宜怀老师的《嵌入式系统原理与实践——ARM Cortex-M4 Kinetis微控制器》,这本书里面对USB介绍的还是很不错的,我从里面还是受益匪浅的;

(6)《圈圈教你玩USB》,这本书也是我极力推荐的,里面对USB开发讲的很细致,只是可惜圈圈用的是D12的芯片,而我们用的片内USB,不过很多东西是相通的,而且最主要的是书的最后讲的USB PC端驱动程序开发很有用,这个是必须要看看的,极力推荐之;

(7)准备好飞思卡尔的官方例程包,里面有USB DCD和USB Device的例程,我们需要在此基础上改进,完成自己的代码的编写。


使用特权

评论回复
板凳
energy1|  楼主 | 2015-3-23 23:45 | 只看该作者

本USB开发系列既然以开发为主,所以就不罗嗦太多一些最基本的概念了(当然有些概念还是需要提一下的,基础薄弱的博友可以找找相关资料恶补一下),主要内容都以最终的开发为目的,咳咳,觉着还是这样直接了当的好,写起来也过瘾大家看起来也过瘾,嘿嘿,如果中间有疑惑的可以博客里留言,下面就进入主题说说USB开发所需要了解的几个重要的知识点:

    首先浓缩一下USB开发所需要了解的相关概念,USB(即Universal Serial Bus,通用串行总线),是一种外部总线标准,用于规范计算机与外部设备之间的连接和通信,最开始由几个大牛公司(包括英特尔、康柏、IBM和Microsoft等)一块提出来(这里来一个小插曲,当年第一款带USB接口的设备就是苹果公司的iMac电脑,我一直觉着苹果公司貌似就是为超前和创新而生的企业,曾经九一年就曾用第一款商用的ARM芯片生产出了当时业界第一款掌上移动电脑Newton,结果因为太超前而没有市场,现在又以IPhone、IPad和IPod引领者手机、平板和音乐电子领域,不得不佩服一下,而且前几天看了条新闻,从苹果公司走出的员工产出了各种创新型企业反过来跟苹果竞争,怎一个NB了得)。咳咳,说多了,下面继续——USB发展至今已经经历多次版本升级,从USB1.0到USB1.1,再到USB2.0(后来又补充了USB-OTG),到最新的USB3.0,其中USB1.1支持低速(1.5Mbps)和全速(12Mbps)最大输出电流250mA,USB2.0增加了高速(480Mbps)最大输出电流500mA,而USB3.0则达到了5Gbps输出电流900mA(考虑到以后的USB设备供电问题),不过USB通信距离较短,但是不影响它在当今各种电子设备上的如此盛行的应用。


使用特权

评论回复
地板
energy1|  楼主 | 2015-3-23 23:47 | 只看该作者

1.上面说了下USB常识性概念,下面就谈谈重点内容,现在还是广义上的说USB,下一篇会着重实际说说Kinetis 的USB模块。USB拓扑结构如下图所示,塔顶为USB主控制器和根集线器,下面接USB集线器,USB集线器将一个USB口扩展为多个USB口,多个USB口又可以通过集线器扩展出更多的接口,不过USB协议中对集线器的层数有限制,USB1.1规定最多为4层,USB2.0最多为6层,理论上一个USB主控制器最多可接127个设备,下面另一个图为我自己电脑上的8个USB主控制器和8个根集线器:


使用特权

评论回复
5
energy1|  楼主 | 2015-3-23 23:47 | 只看该作者

2.完整的USB数据传输过程为:首先由USB主控制器发出命令和数据,通过根集线器,如果有分支集线器的话则再通过它逐层发给USB目标设备,目标设备对接收到的数据进行处理解析之后,返回一些信息或者数据,然后它再逐层通过集线器上传到USB主控制器,最终USB主控制器将数据交给微处理器处理,至于USB主控制器何时启动一个完整的流程则可以根据需要软件控制,另外需要注意的是所有USB的数据传输都是由主机发起的,从设备负责应答(所以开发USB设备的话稍简单些,开发主机就麻烦了);

3.USB协议中,给USB总线定义了4种状态:SE0、SE1、J、K状态。两根线都被拉低(15k欧姆下拉电阻)时的状态定义为SE0状态;两根数据线都被拉高时定义为SE1状态(该状态是非法状态)。当有设备连接到主机,使D+或者D-被上拉(1.5k欧姆上拉电阻),被上拉的线为高电平而另一根数据线为低电平时,这种状态称为J状态(该状态为空闲状态),包被传送之前和之后,数据线上就是该状态。而K状态是两根数据线上的极性都与J状态相反的状态,主机通过K和J状态测试设备是否支持高速通信;

4.在USB传输中,制定了4种传输类型:批量传输、中断传输、实时传输以及控制传输。批量传输用于传输大量数据,要求传输不能出错,但对时间没有要求,适用于打印机、存储设备等;中断传输总是用于对设备的查询,以确定是否有数据需要传输,因此中断传输的方向总是从USB设备到主机,适用于USB鼠标、键盘等设备;实时传输要求数据以固定速率抵达或在指定时刻抵达,可以容忍偶尔的错误的数据,一般用于麦克风、喇叭等设备;控制传输主要用于传输少量的数据,对传输时间和传输速率没有要求,它是USB传输中最重要的传输,只有正确的执行完控制传输,才能进一步正确的执行其他传输模式。


使用特权

评论回复
6
湖南飞哥| | 2015-3-26 22:32 | 只看该作者
学习了

使用特权

评论回复
7
FSL_TICS_ZJJ| | 2015-4-10 15:31 | 只看该作者
非常感谢你关于Kinetis的经验分享 !

使用特权

评论回复
8
peoplesen| | 2015-4-10 15:37 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

94

主题

422

帖子

10

粉丝