新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于AVR单片机的ISP1362OTG设计

基于AVR单片机的ISP1362OTG设计

作者: 时间:2010-12-21 来源:网络 收藏

系统流程图

  实现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的初始化。微处理器是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主从机间的数据交换,性能可以满足设备间的数据传输要求,同时又能很好地控制成本,具有一定的实用价值。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭