编辑: 笔墨随风 | 2013-04-16 |
0 通知编译器在地址 0x0003 上查找 ISR.同样,INT5 的ISR 如下: void ISR_EXTR5 (void) interrupt
11 { // The code to execute within the ISR;
}
6 固件 本应用笔记所提供的相关项目说明了如何使能和处理这些中断.编写固件,从而使它根据 USB 特定中断执行数据回送 操作.批量端点根据端点中断、In-Bulk-NAK 中断和 Ping NAK 中断分别将 EP1OUT-EP1IN、EP2OUT-EP6IN 和EP4OUT-EP8IN 移出回送操作配对.对于外部中断,固件切换 DVK LED 和端口 C 引脚的频率是引脚上中断请求频率 的一半. 本应用笔记中的相关项目使用 Bulkloop 操作演示了上述所有 USB 特定中断的工作原理.Bulkloop 是一种数据回送操作, 它使用 EZ-USB FX2LP 端点上的 Bulk OUT 和Bulk IN 进行传输.在Bulk OUT 传输期间,主机将数据发送到 OUT 端点(如果它为空) 上.固件将 OUT 端点中的数据复制到空的 IN 端点内,然后提交给 IN 端点缓冲区内.在Bulk IN 传输 期间,主机从已提交的 IN 端点上读取数据.总之,Bulkloop 操作从主机读取数据并将读到的数据发送回主机. IN-OUT 端点对为 Bulkloop 操作提供数据回送路径.在该示例项目中,Bulkloop 操作具有三种数据路径 (如图
2 所示), 因此意味着固件具有三对 IN-OUT 端点.数据流根据 USB 特定中断通过这些路径发生.通过路径
1 进行的数据传输取 决于端点中断.与此相似,通过路径
2 和路径
3 进行的数据传输则分别取决于 In-Bulk-NAK 和Ping NAK 中断.环回操 作包括以下步骤. 1. 激活 OUT 端点 2. 将OUT 中的数据复制到 IN 端点上 3. 提交 IN 端点中的数据 4. 重新激活 OUT 端点 注意: ? 激活 OUT 端点意味着为串行接口引擎 (SIE) 提供缓冲区空间,用于接收主机中的数据. ? 通过提交 IN 端点,主机可以对 FIFO 缓冲区进行访问以读取端点中的数据. 图2. 外部中断 EZ-USB? FX2LP?中的中断处理 www.cypress.com Document No. 001-98027 Rev. *B
6 在所有 USB 中断服务子程序 (ISR) 中,清除单独 USB 中断请求锁存器前,需要先清除主 USB 中断.该要求非常重要. 这是因为清除单独的 USB 中断后,所有挂起的 USB 中断会立即尝试生成另一个主 USB 中断.如果没有提前清除主 USB IRQ 位,挂起的中断将被丢失.典型的 USB ISR 结构如下所示: USB interrupt_ISR { ;
FIRST clear the USB (INT2) interrupt request ;
Clear the USB interrupt request ;
Service the interrupt here } 在该框架上构建的相关项目被作为 CY3684 套件的一部分.汇编........