基于AVR单片机的ISP1362OTG设计

最新更新时间:2012-03-29来源: 互联网关键字:AVR  单片机  ISP1362OTG 手机看文章 扫描二维码
随时随地手机看文章

0 引言

  本文采用的设计方案是基于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主从机间的数据交换,性能可以满足设备间的数据传输要求,同时又能很好地控制成本,具有一定的实用价值。

关键字:AVR  单片机  ISP1362OTG 编辑:神话 引用地址:基于AVR单片机的ISP1362OTG设计

上一篇:S3C825A型单片机结构及软件设计
下一篇:掉电保护及保护方法

推荐阅读最新更新时间:2023-10-12 20:38

基于单片机的低频数字相位测量仪的设计
   频率是信号的重要参数之一,如何获得这一准确数据已经在信息领域显得越来越重要了[1,2]。相位测量在信号提取、检测、处理等方面有着重要的应用[3]。本设计采用89C52单片机和可编程逻辑器件(CPLD)为核心,利用单片机进行数据处理并显示结果,软件采用汇编语言实现,构成低频信号频率相位测量仪。? 1 系统工作原理   本设计以89C52单片机和可编程逻辑器件(CPLD)为核心,构成低频信号频率相位测量仪。该仪器具有移相、频率和相位测量2大功能。移相电路由移相网络和信号放大电路组成,对固定频率信号(100 Hz,1 kHz,10 kHz)可满足-45~+45的相移要求;频率、相位测量电路由阻抗变换电路、整形电路、分频
[单片机]
51单片机-串口-串口发送显示
1. 视频 bilibili视频地址: https://www.bilibili.com/video/av92932152 51单片机-串口-串口发送显示 2. 文件 文件下载链接: https://download.csdn.net/download/weixin_43130546/12203484 3. 串口 PCON电源管理寄存器 SCON串口控制寄存器 模式&波特率(宋雪松P183) SCON主要用模式1,的波特率 对应的,要用定时器T1&T2的模式2 TH1 = TL1 = 256 - 晶振值/12/2/16/波特率 (256是TL1的溢出值,12指12个时钟周期,16是硬件因素) S
[单片机]
AVR单片机4位数码管计数C程序
AVR单片机4位数码管计数,从0000-5000一直循环。位选端接在PC的低4位,而段选端接在PA口。程序如下: #include iom16v.h //头文件 #include macros.h //头文件 #define uchar unsigned char//宏定义 #define uint unsigned int//宏定义 uchar i;//定义变量 uint num;//定义计数变量 #pragma data:code//数组存放位置 const table ={ 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,
[单片机]
基于MCS-51单片机的三个存储空间及划分解析
1.前言 MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。 MCS-51单片机在物理结构上有四个存储空间 1、片内程序存储器(片内ROM) 2、片外程序存储器(片外ROM) 3、片内数据存储器(片内RAM) 4、片外数据存储器(片外RAM) 在逻辑上(即从用户的角度上)MCS-51单片机有三个存储空间 1、片内外统一编址的64K的程序存储器(ROM)地址空间(MOVC) 2、256B的片内数据存储器(片内RAM)的地址空间(MOV) 3、以及64K片外数据存储器(片外RAM)的地址空间(MOVX) 注:在访问三个不同的逻辑空间时,应采用不同形式的指令以产生不同的存储器空间的选通信号。 2.存储空间划分
[单片机]
8051单片机(STC89C52)以轮询方式实现串口通信(51接收数据后发送回PC端)
#include STC89C5xRC.H int main() { char buf; TMOD = 0x21; //设定timer1的工作模式 SCON = 0x50; //设置串行通信格式 TH1 = 0xE6; //设定timer1的初始值 TL1 = 0xE6; TR1 = 1; //开启timer1 while(1) { if(RI == 1) { //如果收到数据 buf = SBUF; RI = 0; SBUF = buf;//将收到的数据发回去 while(TI == 0); //等待数据发送完毕 TI = 0;
[单片机]
8051<font color='red'>单片机</font>(STC89C52)以轮询方式实现串口通信(51接收数据后发送回PC端)
51单片机教程:单片机数据传递类指令
单片机数据传递类指令 (3)以直接地址为目的操作数的指令 MOV direct,A 例: MOV 20H,A MOV direct,Rn MOV 20H,R1 MOV direct1,direct2 MOV 20H,30H MOV direct,@Ri MOV 20H,@R1 MOV direct,#data MOV 20H,#34H (4)以间接地址为目的操作数的指令 MOV @Ri,A 例:MOV @R0,A MOV @Ri,direct MOV @R1,20H MOV @Ri,#data MOV @R0,#34H (5)十六位数的传递指令 MOV DPT
[单片机]
51<font color='red'>单片机</font>教程:<font color='red'>单片机</font>数据传递类指令
51单片机定时器产生方波
使用单片机定时器在P1.0口产生200Hz方波程序 #include reg52.h void main() { P1^0 = 0; // 清P0口 ///////// TMOD = 0x00; // T0使用定时模式,工作模式0,无门控位 TH0 = 0x60; // 为T0填入初值,定时时间5ms TL0 = 0x78; TR0 = 1; // 启动T0 ET0 = 1; // 允许定时器0中断 EA = 1; // CPU开放中断 while(1); //
[单片机]
STC89C52单片机的UART串行通信设计
对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。 1、初步认识 一位一位的发送出去的,要发送 8 次才能发送完一个字节。 STC89C52有两个引脚是专门用来做 UART串行通信的,一个是 P3.0一个是 P3.1,它们还分别有另外的名字叫做 RXD和TXD,由它们组成的通信接口就叫做串行接口,简称串口。 波特率:发送二进制数据位的速率,习惯上用 baud 表示;即我们发送一位二进制数据的持续时间=1/baud。 通信过程:在UART 通信的时候,一个字节是 8 位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位 0 表示起始位,然后发送 8
[单片机]
STC89C52<font color='red'>单片机</font>的UART串行通信设计
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved