5 固件程序设计

固件是设备运行的核心,其主要功能是控制EZ-USB FX2处理驱动程序请求(如请求设备描述符、请求或设置设备状态及设备接口等USB2.0标准请求)、向FPGA发送采集参数、通过EZ-USB FX2缓存数据并实时上传至PC等。

本系统中,即使使用外部逻辑和内置通用可编程接口,在没有CPU的干涉下能够通过4个端点FIFO处理高速带宽数据,固件还需器件初始化、GPIF波形初始化、控制和监测GPIF的动作。

5.1 器件初始化

同件初始化函数为TD_Init(),主要负责对EZ-USB FX2的初始化,在同件开始运行时调用该甬数。其初始化工作主要分为以下步骤:

(1)设置EZ-USB FX2的IFCLK输出频率,将时钟频率设置为内部时钟48 MHz;

(2)设置EZ-USB FX2的EP2为BULK、OUT传输方式,EP6为BULK、IN传输方式,均为4倍缓冲;

(3)复位EP2 FIFO并设置为Auto OUT模式,复位EP6FIFO并设置为Auto IN模式;

(4)调用GpifInit()函数,初始化GPIF所需的寄存器;对EP2OUT、GPIF使用EF标志,对EP6IN,GPIF使用FF标志;

(5)初始化PA2为输出引脚并置为低电平,高电平时点亮LED。

5.2 GPIF波形设计

EZ-USB FX2固件程序可指定某个波形为4个端点中的任意一个工作,GPIF将在接口产生使能信号和握手信号,将数据送入或送出端点FIFO。在本系统中,对 FPGA写命令时则通过FIFO Write实现;读取所采集到的数据时,则通过FI-FO Read实现。波形设计如下:

(1)图3为FIFO Write时序波形,用于向FPGA发送采集控制参数。S0为非活动状态,当WEN#置低时跳入S1状态,S2设为Next FIFO Data,依次将数据写入FPGA的寄存器中。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查