6.1 概述
事件管理器将数字事件从一个实体(例如外设)传输到另一个实体(例如,另一个外设、DMA 或 CPU)。事件管理器通过一组定义的事件发布者(发生器)和订阅者(接收器)实现事件传输,这些事件发布者和订阅者通过包含静态路由和可编程路由组合的事件结构进行互连。
事件管理器传输的事件包括:
• 作为中断请求 (IRQ) 传输到 CPU 的外设事件
– 示例:RTC 中断会发送到 CPU
• 作为 DMA 触发器传输到 DMA 的外设事件
– 示例:传输到 DMA、请求 DMA 传输的 UART 数据接收触发器
• 传输到另一个外设以直接触发硬件中操作的外设事件
– 示例:TIMx 计时器外设将周期性事件发布到 ADC 订阅者端口,ADC 使用该事件触发采样开始
除了提供事件传输介质外,如果事件需要更改器件的电源和/或时钟配置以正确处理事件,则事件管理器还会与电源管理和时钟单元 (PMCU) 连接。例如,如果外设生成针对 DMA 的事件,并且器件处于 STOP 或 STANDBY 工作模式(禁用 DMA),则事件管理器将与 PMCU 握手以暂停低功耗工作模式状态,并会启用 DMA,以便可以处理 DMA 传输。事件管理器配置取决于器件,因为不同的器件支持不同的外设。请参阅器件特定的数据表以了解特定于器件的事件实现。
6.2 基本操作
事件管理器通过事件结构将事件发布者连接到事件订阅者。
6.2.1 事件发布者
事件发布者是事件结构上所传播事件的来源。外设包含用于通过发布端口 FPUB_x 将 CPU 中断、DMA 触发和通
用事件发布到事件结构的事件发布者。通过 INT_EVENTx 寄存器组配置发布者行为。
6.2.2 事件订阅者
事件订阅者包括在处理器、DMA 和某些外设中(请参阅节 6.2.4)。事件订阅者通过订阅端口 FSUB_x 来订阅事
件。事件订阅者使模块能够订阅由事件发布者发布到事件结构的事件,并对这些事件执行预定义操作。
6.2.3 事件结构路由
通过事件结构的路由有三种不同类型,用于将发布者连接到订阅者,这三种类型分别是:静态事件路由、DMA 事件路由和通用事件路由
6.2.4 事件路由映射
每种外设类型的事件功能如图 6-5 所示。UART、SPI 和 I2C 等外设生成静态路由到 CPU 的 CPU IRQ 事件,它们还生成静态路由到 DMA 的 DMA 触发事件。GPIO 和 ADC 等外设也会生成 CPU IRQ 事件,但它们还支持生成和接收通过一个通用通道进行路由的事件。例如,通过使用通用事件通道,可以通过将 GPIO FPUB_x 和 ADC FSUB_0 连接到同一通用事件通道,直接从 GPIO 事件启动 ADC 转换。
6.2.5 事件传播延迟
通用路由通道在发布实体和订阅实体之间实现了四路硬件握手。此握手需要四个 ULPCLK 周期才能完成:
1. 发布者向订阅者发出请求
2. 订阅者向发布者确认
3. 发布者向订阅者发出的请求无效
4. 订阅者向发布者确认无效
如果发布外设发送两个请求,并且第一个请求尚未清除握手,则第二个请求将被丢弃。
|