编辑: 645135144 | 2019-07-31 |
cypress.com 文档编码:002-11590 版本*A
1 AN90799 PSoC?
4 中断 作者:Rajiv Badiger 相关项目:代码示例 相关器件系列:所有 PSoC
4 器件 软件版本:PSoC Creator? 3.3. 或更高版本 如果需要本应用笔记的最新版本,请访问 http://www.cypress.com/AN90799. AN90799 介绍了 PSoC
4 中的中断架构以及它在 PSoC Creator?中的配置.本文档作为开发基于中断的项目的向导. 本应用笔记还说明了中断相关的高级概念, 比如:延迟、向量选择、中断代码优化以及调试技术. 目录
1 简介
1 2 PSoC 中断架构.2 2.1 中断源.2 2.2 电平及边沿触发中断
4 3 PSoC Creator 的中断支持
5 3.1 中断组件配置
5 3.2 中断优先级配置.7 3.3 中断 API 函数.8
4 写入一个中断服务子程序(ISR)10 4.1 使用自动生成的 ISR.11 4.2 创建自定义 ISR.12
5 代码示例
13 6 调试提示
13 7 高级中断主题.15 7.1 异常事件
15 7.2 中断延迟
15 7.3 优化中断代码
16 7.4 带有内置中断的组件
16 7.5 强制中断向量编号.16 7.6 Systick 定时器.18 7.7 中断嵌套
19 8 总结
19 A 附录 A C PSoC
4 中的中断源和向量编码.20 文档修订记录.22 全球销售和设计支持.23 产品.23 PSoC ? 解决方案.23
1 简介 中断是嵌入式应用的重要组成部分.它们使 CPU 不必连续轮询某个特定事件的发生情况.它仅在该事件发生时通知 CPU.在片上系统(SoC)的架构(如PSoC)中,经常使用中断向 CPU 报告片上外设的状态. 如何使用本文档 该文件先对 PSoC
4 中断结构进行了介绍.如果您想了解 PSoC Creator IDE 的中断支持的内容,请跳到 PSoC Creator 的中断支持一节.对于中断代码示例,请参考代码示例.如果您正在调试中断项目,请转到调试提示部分,该 部分提供了一些用于发现和解决中断问题的提示.高级中断主题部分提供了与中断相关的高级主题内容. 本应用笔记假定您已经熟悉了 PSoC 器件和 PSoC Creator 集成开发环境(IDE).如果您尚未了解 PSoC,可通过 AN79953 PSoC 入门应用笔记并参考 PSoC Creator 主页来获取相关信息. PSoC ?
4 中断 www.cypress.com 文档编码:002-11590 版本*A
2 2 PSoC 中断架构 图1显示了 PSoC
4 的中断架构的简化框图: 图1. PSoC
4 中断架构 有32 个中断线 C 从IRQ[0]到IRQ[31] C 每线有四个优先级:从0到3.每个中断线被分配了一个中断向量地址.接收 到一个中断请求后,CPU 会跳转到该地址,并会在这里执行一个特殊函数,即中断服务子程序(ISR). 中断信号由嵌套向量中断控制器(NVIC)接收.某个中断信号有效时,NVIC 通过中断请求信号将中断向量地址发送给 处理器内核.作为回答,处理器内核在进入和离开 ISR 时都将发送一个确认信号.NVIC 负责启用/禁用用户配置所指 定的中断.发生多个中断请求时,它会按中断优先级高低进行处理,支持嵌套中断,能够暂停一个优先级低的 ISR 转 而执行一个优先级高的中断. 唤醒中断控制器(WIC)模块支持使用中断将器件从低功耗模式唤醒.低功耗模式包括:睡眠模式、深度睡眠模式和休 眠模式.当NVIC、处理器内核和其他外围设备掉电时,WIC 模块仍保持有效.当触发了某个中断时,WIC 将激活电源 管理系统,这样会恢复 NVIC、处理器内核以及其他外设.这时 NVIC 将接管并发送向量地址到处理器内核,以执行 ISR.在PSoC
4 器件中存在几种源,它们均能够唤醒器件.例如,图1显示了 IRQ[0]和IRQ[1]都被路由到了 WIC 和NVIC.这些是来自 GPIO 的中断线路. PSoC
4 具有以下中断特性: ? 可配置中断向量地址:发生中断时,CPU 可以直接跳转并执行任何 ISR 代码,这样可缩短延迟. ? 灵活的中断源:在传统的微控制器中,中断源是固定连接到各个中断线的.在PSoC 中,您可灵活选择每条中断 信号线的中断源.这种灵活的架构允许配置任何数字信号作为中断源使用. 2.1 中断源 PSoC
4 中断源分两种类型: 1. 固定功能的中断源:这些是片上外设的一些预定义中断源. 2. 通用数字模块(UDB)中断源(在PSoC
4200、PSoC 42x7_BLE、 PSoC 4200M 和PSoC 4200L 中可用): UDB 是不同数字功能(如定时器、PWM、UART、SPI 等)的基本构建模块.它包括可编程逻辑(PLD)、数据 路径和灵活的路由.与功能固定的中断源相比,某个 UDB 生成的所有数字信号都能触发一个中断.信号通过一个 被称为数字系统互连(DSI)的结构路由到中断控制器.请参见 PSoC
4 技术参考手册,了解更多信息. PSoC ?
4 中断 www.cypress.com 文档编码:002-11590 版本*A
3 表1显示了各个中断源.除非另有说明,否则表中提及的中断源可用于所有 PSoC 4.有关每个中断源的详细信息, 请参考表
1 中列出的 PSoC Creator 组件数据手册.附录 A 依据器件给出了中断源的完整列表. 表1. PSoC
4 中断源 中断源 详细说明 GPIO 每个端口包含
8 个引脚.每个引脚可以产生一个中断,但是端口中的所有引脚共用了一个向量地址. 必须由固件区分引起中断的引脚. PSoC
4 会在 GPIO 信号的上升沿、下降沿或双边沿上触发中断.该中断可将器件从睡眠、深度睡眠和 休眠模式唤醒. 低功耗比较器 (LPCOMP)(1) 与GPIO 相似,某个中断能够在比较器输出信号的上升沿、下降沿或双边沿上被触发.LPCOMP 也能 够将器件从睡眠、深度睡眠和休眠模式唤醒. WDT 看门狗定时器(WDT)是一个定时器,它可以复位器件或生成一个中断.PSoC
4000 具有一个
16 位 的自由运行 WDT,而其他 PSoC
4 系列则有两个
16 位的 WDT 和一个
32 位的 WDT.WDT 可将器件 从睡眠和深度睡眠模式唤醒. SCB PSoC
4 具有多达
4 个串行通信模块(SCB),它们可被配置为 I
2 C、SPI 或UART. I
2 C 以下事件会生成一个中断:仲裁失败、从设备地址匹配、启动/停止检测、总线错误、字节 /字传输完成、TX FIFO 不满、TX/RX FIFO 为空、RX FIFO 非空、RX FIFO 溢出以及 RX FIFO 已满.从设备的地址匹配事件可将器件从睡眠和深度睡眠模式唤醒. SPI 下列事件会生成一个中断:传输完成、闲置、TX FIFO 不满、TX/RX FIFO 为空、字节/字 传输完成、RX FIFO 非空、尝试写已满的 RX FIFO 以及 RX FIFO 已满. UART 下列事件会生成一个中断:传输完成、UART TX 接收到 SmartCard 模式的 NACK、 UART 在LIN 或SmartCard 模式下仲裁丢失、帧错误、奇偶校验错误、LIN 波特率检测 完成以及 LIN 成功中断检测. 系统性能控制器 (SPC) SPC 模块控制着闪存写操作.当闪存写操作完成时,它会触发一个中断. SYSTICK SysTick 是ARM ? Cortex ? -M0 处理器中内置的
24 位定时器.实时操作系统(RTOS)通常将其作为一 个触发定时器使用.另外它也可作为一个通用定时器使用.请查看 Systick 定时器章节,了解更多信 息. 电源管理程序(1) 当器件供电电压下降到某个阀值以下时,该模块会生成一个低压检测(LVD)中断. SAR ADC(1) 当发生转换结束、数据溢出、扫描冲突、数据饱和以及数据超出范围等事件时,逐次逼近寄存器的模 数转换器(SAR ADC)会生成中断. CapSense(CSD) 传感器扫完成描过程时,用于触摸应用的 CSD 会生成一个中断. 定时器/计数器/脉宽 调制器(TCPWM) 可将 TCPWM 模块配置作为
16 位定时器、计数器或 PWM 使用.它可以在发生终端计数、输入捕获信 号或某个 比较结果为真 事件时生成中断. 控制器区域网络 (CAN) PSoC 4200M 和PSoC 4200L 器件具有两个 CAN 模块,这两个模块能够在发生接收到信息、发送信息 以及各种错误事件时生成中断.请参见 CAN 中技术参考手册章节,了解更多信息. 直接储存器访问 (DMA) PSoC 4100M/4200M 和PSoC 4200L 具有 DMA 用于在外设之间传输数据.数据传输完成时会生成 中断. 通用数字模块(UDB) 通过 UDB 实现的定时器、PWM、计数器、UART ........