1前言
usb(universal serial bus)通用串行总线是在1994年底由康柏、ibm、microsoft等多家 公司联合制订的,但是直到1999年,usb才真正被广泛应用。同时,他也得到了各pc厂商、芯片制造商和pc外设厂商的广泛支持,usb外设在国内外以惊人的速度发展,迄今为止,各种usb的外设已经有数千种。为pc外围设备设计usb接口已成为大势所趋。
随着单片机技术的发展,单片机的功能日益强大,外围电路日益复杂,其有限的管脚也就显 得捉襟见肘。目前采用普通单片机外加usb接口芯片开发usb外设时,usb接口器件大都是采 用并行接口与单片机相连接,这样再加上一些控制信号线,总共需要占用单片机十余个管脚 ,对于一般对传输速度要求不是很高的设备显得有些浪费,特别是对于为产品转型而 进行的usb接口开发,势必会影响原来的电路连接和功能设置。因此,采用一种既能保持较 高的传输速度,又能减少单片机引脚使用的usb接口开发方法很有必要。本文介绍一种 采用philips公司带i2c接口的usb接口芯片pdiusbd11进行usb接口开发的方法,他使用高速通用i2c接口与单片机相连接。
2背景介绍
2.1usb背景介绍
usb是一些pc厂商为解决日益增加的pc外设与有限的主板插槽和端口间的矛盾制定的一种 串行通信标准。他传输速度快,能提供3种传输方式:低速模式(速率为1.5 mb/s);中速模 式(速率为12 mb/s);高速模式(速率为360 mb/s以上)。数据传输可靠,usb设备在发送 数据时支持 数据侦错和纠错功能,增强了数据传输的可靠性。设备安装和配置容易,安装usb设备不必 再打开机箱,增减设备不用关闭计算机,所有usb设备支持热插拔,系统对他进行自动配置 。易于扩展,外设接口之间采用菊花链形式连接通过使用hub扩展可连接多达127个外设。能 够采用总线供电,usb总线提供最大达5 v电压,500 ma电流,可为小型设备供电。使用灵活,usb共有4种传输模式:控制传输(control)、同步传输(synchronization)、中断传输 (interrupt)、批量传输(bulk),以适应不同设备需要。
2.2i2c总线技术介绍
i2c总线技术是philips公司研制出来的串行扩展技术。他是一种简单、双向二线制同步串 行总线,他只需要2根线(串行时钟线scl和串行数据线sda)即可在连接于总线上的器件之 间传送信息。对于并不要求很高的数据传输速度的外设,i2c总线的使用无疑简化了系统 ,增加了硬件构成的灵活性,是一种高效、方便的串行扩展总线。
使用i2c传输数据有2种基本方法。第一种是采用i2c总线标准的单片机或ic器件,其内 部含有i2c接口电路,使用这种方法可直接从接口读写数据。第二种是采用软件程序模拟i2c总线的时序来完成接口功能,使用这种方法可任意从单片机中选取2个i/o口,作为串 行时钟线scl和串行数据线sda,使用灵活。
3pdiusbd11芯片介绍
3.1pdiusbd11芯片特点
pdiusbd11 是一款性价比很高的usb 器件,他通常用作微控制器系统中实现与微控制器进行 通 信的高速通用i2c接口。这种实现usb 接口的标准组件使得设计者可以在各种不同类型微 控制器中选择出最合适的微控制器。这种灵活性减小了开发的时间风险以及费用,通过使用 已 有的结构减少固件上的投资。从而用最快捷的方法实现最经济的usb 外设的解决方案。pd iusbd11适用于电脑监视器、操纵杆、键盘和其他一些使用i2c或smbus结构的器件 。pdiusbd11符合usb 11协议规范、i2c串行接口和smbus协议规范。他完全符合人机接 口设备和监视控制类协议规范。pdiusbd11所具有的低挂起功耗连同lazyclock 输出可以满 足使用acpi,onnow 和usb 电源管理的要求。低的操作功耗可以执行总线供电功能。此外他 还集成了许多特性包括softconnettm,goodlinktm,可编程时钟输出、低频晶振、多重功能 终端和终止寄存器集合。所有这些特性都为系统显著节约了成本,同时使usb 功能在外设上 的应用变得容易。
3.2pdiusbd11内部结构
pdiusbd11芯片的内部结构如图1所示。
模拟收发器收发器接口可通过终端电阻直接与usb电缆相连,他们能以全速(12 mb/s)传送和接收数据。
pll片内集成了12~48 m时钟乘法器pll。这样就可使用低成本的12 m晶振 ,emi也随之降低。pll的工作不需要外部元件。
philips串行接口引擎psiephilips sie实现了全部的usb协议层。完全由 硬件实现而不需要固件的参与。该模块的功能包括:同步模式的识别、并行/串行转换、位 填充/解除填充、crc校验/产生、pid校验/产生、地址识别和握手评估/产生。
存储器管理单元mmu和集成ram当usb接口以12 mb/s的速率传输并且i2c接口以1 mb/s与微控制器相连时,mmu和集成ram被用来处理这种极大的速率差异。这就允许 微控制器以他自己的速率通过i2c接口对usb信息包进行读写。
i2c控制接口这个模块执行必要的i2c接口协议。一个i2c控制器执行简单的编码。一个中断信号,当pdiusbd11需引起注意时,用来向微控制器发出 警告。作为一个控制i2c的器件,pdiusbd11的时钟输入scl由微控制器控制。i2c接口的 传输速率能够达到1 mb/s。
softconnecttm与usb的连接是通过1.5 kω上拉电阻将d+(用于 高速usb器件)置为高实现的。1.5 kω上拉电阻集成在pdiusbd11片内,默认状态下不与vc c相连。连接的建立通过外部/系统微控制器发送命令来实现。这就允许系统微控制器在决定 与usb建立连接之前完成初始化时序。usb总线连接可以重新初始化而不需要拔出电缆。
3.3pdiusbd11芯片的典型应用
pdiusbd11芯片的应用示意图如图2所示。
其外围电路典型连接如图3所示。
vbus是usb的总线电源感知引脚,通过他usb接口控制芯片判断usb设备是否接到了p c机上。外部复位引脚reset上电复位,但pdiusbd11芯片内部提供复位电路,因此可以将他 接到3.3v上,屏蔽其外部复位功能。suspend引脚,他的作用是当usb设备进入挂起模式时,输出 高电平提醒主机,主机可通过拉低该引脚的电压来唤醒usb设备,使用中也可以直接将该引 脚接地,来屏蔽usb设备的挂起功能。int_n引脚与单片机的连接是必不可少的,当 主机需 要与usb设备通信时,该引脚变成低电平,通知usb设备进入中断服务程序,中断请求结束后 他又重新变回高电平。因此他通过上拉电阻接正电源,当空闲时处于高电平状态。
4固件程序设计
单片机与pdiusbd11的通信主要是靠单片机给pdiusbd11发命令和数据来实现的。 pdi usbd11的命令字分为3种:初始化命令字、数据流命令字 和通用命令字。pdiusbd11给出了各种命 令的代码和地址。单片机先给pdiusbd11的命令地址发命令,根据不同命令的要求再 发送或读出不同的数据。
当单片机使用专门的i2c接口与pdiusbd11芯片连接时,可以直接进行输入、输出通信。但 如果只使用2个普通的i/o口连接时,需要用软件模拟i2c接口与pdiusbd11芯片进行通信 ,可将模拟i2c传输部分编成子程序,使用时直接调用即可。具体编程方法可参照i2c总 线规范。
usb单片机控制程序通常由3部分组成:
(1) 初始化单片机和所有的外围电路(包括pdiusbd11芯片);
(2) 主循环部分,其任务是可以中断的;
(3) 中断服务程序,其任务是对时间敏感的,必须马上执行。
4.1初始化程序
在编写初始化程序时需要注意,由于pdiusbd11芯片采用philips的softconnecttm技术设计。与usb的连接通过1.5 kω上拉电阻将d+(用于高速usb器件)置为高实现。1.5kω上拉电阻集成在pdiusbd11片内,默认状态下不与vcc相连。连接的建立通过 单片机发送命令来实现。这就允许系统微控制器在决定与建立usb连接之前完成初始化时序 。usb总线连接可以重新初始化而不需要拔出电缆。所以在固件程序中需要编写芯片初始化 程序,以确保设备能顺利进行usb连接。初始化程序范例如下:
按不同的应用方式(如远程唤醒、挂起功能等),可在set mode的第一个字为pdius bd11芯片设置不同的模式。
4.2中断服务程序
根据usb协议,任何传输都是由主机(host)开始的,单片机作他的前台工作,等待中断。主机首先要发令牌包给usb设备(这里是pdiusbd11),pdiusbd11接收到令牌包后就给单片 机发中断,单片机检测到int_n引脚变成低电平后进入中断服务程序,首先读pdiusbd11的中断寄存器,判断usb令牌包的类型,然后执行相应的操作。因此,usb单片机程序主要就 是中断 服务程序的编写。中断服务程序流程图如图4所示。pdiusbd11芯片可支持4个端点(ep0~3),其中端点0用来对应缺省控制通道并初始化和操纵配置设备,同时提供设备配置信息的 读取和支持控制传输。端点1~3则用于支持块传输和中断传输等。
具体的固件程序内容可参考文献[4],pdiusbd12芯片是philips公司的一款带并口的usb接口芯片,目前应用较广。
4.3测试结果
用pdiusbd11芯片开发的usb接口,数据的传输速率是由单片机的i2c接口速率决定的。经测试其传输速率可达500 kb/s,远高于普通串口的传输速率,保持了usb接口的高速性,能满足一般的非大容量存储设备的需要。
5结语
使用单片机外加usb接口芯片开发usb接口,适用于为现有产品开发usb接口,能尽量避免对 原有电路及程序的修改,降低了开发成本和风险。在对速度要求不太高的情况下,可采用ph ilips公司的usb接口芯片pdiusbd11,他特有的i2c接口设计可以减少与单片机的引脚连接 ,简化外围电路设计。虽然只有2根数据线负责数据的双向传输,但仍保证了较高的传输速 率,能满足一般的对速度要求不太高的设备的需要。
瑞萨电子推出32位RX系列微控制器 将高精度模拟前端集成于MCU单芯片
3D打印画笔的作用介绍
2015年全球物联网市场规模将达3300亿美元
仙童半导体的崛起,晶体管的飞跃
服务器的租用使用环节需要注意哪些方面
I2C接口与单片机之间的通信设计
漏电保护开关频繁跳闸的原因及排除
小米6什么时候上市?小米6最新消息:小米6价格或超3000,传小米6将于4月18号发布
网络爬虫的原理是什么
关于EM算法的九层境界的浅薄介绍,Hinton和Jordan理解的EM算法
胜宏科技去年营业收33亿元!这家上市公司核心秘诀在这里
海柔创新与仙工智能达成战略合作,携手发布全球首款激光SLAM多层料箱机器人
基于3D Xpoint技术的傲腾DC非易失DDR4内存面世:单条容量起步128GB
MRAM正成为存储芯片巨头争夺的新高地
小米将在一年的时间里将小米之家开遍每一个县城
Imagination宣布推出首款多核架构GPU
iPad登顶:更平价的新品持续推出,让苹果获得更多的市场份额
低压差低噪声电压调节器MEQ6310介绍
真的凉了!滴滴顺风车恢复上线遭冷落,身份验真漏洞引争议
欧洲教育科技峰会上DaDa联合创始人沈晓凤展示中国互联网教育