历史上的今天
返回首页

历史上的今天

今天是:2025年02月21日(星期五)

正在发生

2020年02月21日 | 基于AVR单片机的I SP1362OTG设计

2020-02-21 来源:eefocus

简介: 本文设计的USB 0TG主从机系统性能稳定,数据传输效率高。测试表明,此设计能够正确地实现USB 0TG主从机间的数据交换,性能可以满足设备间的数据传输要求,同时又能很好地控制成本,具有一定的实用价值。


0 引言

随着PDA、移动电话、数码相机、打印机等消费类产品的普及,用于这些设备与电脑、或设备与设备之间的高速数据传输技术越来越受到人们的关注。以往以计算机为核心的数据传输结构,非常不利于USB,总线在嵌入式行业的应用,也不适用于野外作业,而OTG技术的推出则可实现在没有PC的情况下,设备与设备之间的数据传输,它拓展了USB技术的应用范围。本文采用的设计方案是基于Philips公司的ISP1362 OTG控制芯片,参照最新的USB OTG技术规范,设计了一种遵循USB协议的主/从机系统。


1 ISP1362芯片的内部结构

Philips公司的ISP1362是一款符合USB 2.0总线协议的接口芯片,内部有3个USB控制器一主机控制器、设备控制器和OTG控制器。其中,主机控制器具备高度优化的USB主机功能;设备控制器则具有多达14个可编程端点,又可以被配置成双缓冲端点进一步提高吞吐量:而OTG控制器主要提供包括监控和转换功能在内的所有OTG控制。ISP1362内部构造如图1所示。

2 USB OTG主/从机系统设计

USB OTG主/从机系统设计包括硬件设计和软件设计两大模块。其中硬件电路主要是USB接口电路板的设计;软件设计包括设备初始化、系统的功能设计、设备驱动程序设计等,下面分别介绍系统软、硬件系统的设计方法。


2.1 系统硬件电路设计

USB OTG主/从机设计的硬件电路如图2所示,图中ATmega 32的PD口和IPA口用于控制ISP1362的时序,PB口和PC口则用于与ISP1362的D[0..15]进行数据交换。ISP1362芯片有Port1和IPort2两个USB接口。Port1是个综合接口,可以配置成downstream、upstream或者是OTG;Port2是作为固定的downstream,主要接一般的USB设备。当ISP1362做主机时,主机内部的寄存器通过检测其相应状态寄存器的值就可以判断是Port1还是Port2接了设备,从而进行相应的处理。


ISP1362的Port1口主/从机功能通过ID、OTGMODE两引脚电平的高低组合来确定。当OTGMODE引脚接低,无论ID电平如何,则芯片的Port1口只能OTG用;如果OTGMODE接高,ID接低,芯片的Port1口作主机使用;OTGMODE接高,ID也接高时,则芯片的Port1口作外设使用。在电路中通过15kΩ的上拉电阻和下拉电阻实现ID、OTGMODE两引脚电平的高低变化。

2.2 系统软件设计

本设计的主机系统是一个软件和硬件的集合体,功能的实现不依赖于任何操作系统,而是通过中断来调度各个任务,使之满足USB通信的要求,因此系统是按照协议规范和特定的时序运行的。


本系统是ISP1362工作于主/从机模式下的应用,按系统硬件电路配置完成接口芯片,然后对其编程,就可以进行USB数据传输。系统工作流程如下:首先进行系统初始化,构建PTD传输描述符,接着总线枚举过程,给外设分配地址,获取外设的基本信息,并判断外设为主机设备或是从机设备,之后驱动相应的主/从机驱动程序运行,数据传送和接收,根据总线的活动情况判断是否挂起。系统流程图如图3所示:

实现ISP1362芯片的软件编程控制,就是对该芯片的CS、RD、WR、A0、A1引脚的控制。本文中CS代表片选,低电平有效;RD代表读信号,低电平有效;WR代表写信号,低电平有效;A0引脚电平的高低不同,分别表示传输的信号代表的是命令信号还是数据信号;A1引脚电平的高低不同,分别表示控制的是外设还是主机。通过上述几个引脚信号的组合,可以实现读写控制ISP1362的不同功能。除此之外,以下的几个引脚对于控制ISP1362也有重大意义:DREQ1引脚代表DMA请求输出,当它高电平有效时,通知IDMA控制器主机正在请求数据传送;DREQ2引脚高电平有效时,通知DMA控制器外设正在请求数据传送;DACK1引脚代表DMA确认输入,低电平有效时表明来自主机的DMA传输请求已经被DMA控制器确认;DACK2引脚低电平有效时表明来自外设的DMA传输请求已经被DMA控制器确认;INT1和INT2引脚连接到外部微处理器的IRQ引脚,使得ISP1362可以根据请求执行中断服务程序。软件设计具体工作流程如下:


(1)系统硬件初始化,包括ATmega32和ISP1362的初始化。AVR微处理器是Atmel公司的8位嵌入式RISC处理器,它具有功耗低、速度快、输出高、开发工具开放、性价比高等优点,它的程序存储器和数据存储器是可以独立访问的哈佛结构,因此代码执行效率非常高。ATmega系列单片机的内部模块还很丰富,可用的资源也很多,本文对ATmega32的初始化,就是要对它的I/O口、定时器、时钟、看门狗等进行相应的设置,使之开始工作。而ISP1362的初始化,就是当ISP1362上电后,主机控制器驱动程序(HCD)必须通过一系列的硬件初始化步骤来配置主机控制器,从而进入可操作状态。首先检测主机控制器是否存在,此步由MCU(单片机)实现,本文通过MCL响HcScratch寄存器内写入某个值,再从该寄存器中读取,将读出值与写入数值进行比较,若相等,则可说明主机控制器存在;反之则出错,无主机控制器存在。


(2)构建PTD描述符。PTD(Phi l ips Transfer Descriptor)为ISP1362主机控制器与外围设备的通信提供了一个传输渠道,要在主机与外设之间进行通讯,首先需要构建一个PTD。PTD具有3种传输类型:控制和批量传输(非周期传输)PTD、中断传输PTD和同步传输PTD。


(3)主机分配地址给设备,获取设备描述符和设备的功能信息。主机通过不断地向外设发送设备请求来获取设备、端点的功能信息。获取USB设备描述符的过程分为三个步骤:a.主机通过设备的默认端点获取设备描述符,为设备分配一个惟一的地址;b.主机读取配置描述符信息、接口描述符信息和端点描述符信息;c.根据设备的相关信息调用相应的事务处理程序。


(4)设备枚举成功之后,主机就可以根据已编写的进程与外设进行USB通信,等待、查询数据的发送和接收。


(5)数据发送或接收完毕之后,根据QueryBus函数查询总线的活动情况,判断设备是否需要挂起。


2.3 设备驱动程序

要实现主机对从机的读写,USB主机必须具有相应的驱动,对各种读写指令进行封装、解释和执行。开发驱动有很多种方法,本文采用直接在USB主机接口驱动上层封装一个USB传输API 函数-USBXfer,应用于实现各种USB传输。


3 结束语

本文设计的USB 0TG主从机系统性能稳定,数据传输效率高。测试表明,此设计能够正确地实现USB 0TG主从机间的数据交换,性能可以满足设备间的数据传输要求,同时又能很好地控制成本,具有一定的实用价值

推荐阅读

史海拾趣

Beckhoff Automation GmbH公司的发展小趣事

在环保日益受到重视的今天,BCD Semi公司积极响应国家环保政策,将环保理念融入公司的生产和经营中。公司采用环保材料和工艺,减少生产过程中的污染排放,提高资源利用效率。同时,BCD Semi还加强了对员工的环保培训和教育,提高员工的环保意识,共同推动公司的可持续发展。

Elytone Electronics Co Ltd公司的发展小趣事

近年来,Elytone公司积极响应国家环保政策,致力于推动绿色发展。他们采用环保材料和清洁能源进行生产,减少了对环境的污染。同时,公司还加强了对废弃物的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,也为行业的可持续发展做出了积极贡献。

EPIGAP公司的发展小趣事

随着全球对环保问题的日益关注,EPIGAP公司也开始注重绿色环保和可持续发展。公司积极采用环保材料和生产工艺,减少生产过程中的污染物排放。同时,EPIGAP还加大了对可再生能源的研发力度,推动公司向绿色、低碳、循环发展的方向迈进。这一战略不仅符合全球环保趋势,也为公司赢得了良好的社会声誉。

H&D Wireless公司的发展小趣事

随着全球化进程的加速,高创也开始了其全球化布局的步伐。除了在以色列和中国设立研发中心外,高创还积极拓展国际市场,与全球多个国家和地区的客户建立了长期合作关系。通过参加国际知名展会如汉诺威工业博览会等,高创不仅展示了其最新技术和产品,还加强了与国际同行的交流与合作,进一步提升了其国际知名度和影响力。

Gravitech公司的发展小趣事

为了不断提升自身的技术创新能力,Comax Industrial Co Ltd公司积极与高校、科研机构等开展产学研合作。通过与这些机构的紧密合作,公司不仅获得了前沿的技术支持,还培养了一批高素质的技术人才。这种合作模式使得公司的技术创新能力得到了显著提升,为公司的长期发展提供了有力的支撑。

Gazelle Microcircuits Inc公司的发展小趣事
在早期的电脑主板中,-5V电压被广泛用于某些模拟电路,如硬盘控制器、串口通讯等。然而,随着技术的进步和元件的更新换代,-5V电压的需求已经大大减少,甚至在一些新的主板设计中已经不再提供-5V输出。尽管如此,在一些老旧的设备或特定应用中,-5V电压仍然可能被需要。

问答坊 | AI 解惑

[资料]基于单片机的四位BCD编码器电路设计

基于单片机的四位BCD编码器电路设计 来源:现代电子技术 作者:刘静波 1 引言 BCD码又称二/十进制码,即二进制编码的十进制码,在设计、测试数字电路硬件过程或是面对带有BCD码接口的集成电路时,常常希望方便、快速地产生BCD码来完成当前的 ...…

查看全部问答>

AD603完整资料!!!

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 我这里有AD603的完整资料,和大家分享~~~~  …

查看全部问答>

一个GEL文件引起的故事

有段时间没上了,发个贴 前段时间做了个280x的板,开始用的是2801,然后改为2806。从2801的板子换成2806的时候,RAM调试的0x9000怎么也不能访问,各方寻经都没得到解决。后来得一哥们提示,看Memory Map里面分配情况,这个时候才发现由于开始使用的 ...…

查看全部问答>

最强的仿真软件PSpice教材说明

即使不认识这软件,也可以看看 相信以后立志做电子的,多的少少也回接触到它,真的很不错。…

查看全部问答>

wince下pppoe解决方法

请问哪位大侠了解wince下pppoe怎么用 为什么添加了PPPOE特征后不好使 连不上网啊??…

查看全部问答>

为什么说学嵌入式开发一定要精通C而不是C++

很多人都说要精通C,却从没有提到过C++。 为什么啊?求过来人指点一下。…

查看全部问答>

TMS320F28335 接几M的晶振合适?

PDF提到是20到35M之间,大家用的时候用多少M,然后PLL到150M啊?…

查看全部问答>

秀一秀TI杯奖品!!!!!!!

今天刚到教务处领到去年参加的TI杯省赛的奖品,PHILIPS 的tablet 7 (8G版本)     东西是不错,不过不是喜欢的类型,不过没办法。…

查看全部问答>

win8系统下如何安装eZ430-RF2500驱动?

RT,win8 系统下插上去后不能自动安装,请教如何手动安装? …

查看全部问答>