本文由DeepSeek生成,在此做记录。
在 Nordic 半导体芯片(如 nRF 系列)的上下文中,DPPI(Distributed Programmable Peripheral Interconnect) 和 PPI(Programmable Peripheral Interconnect) 是两种硬件事件-任务路由机制,用于实现外设间的直接交互,减少 CPU 干预。以下是两者的核心区别:
1. 功能与架构
PPI
- 固定通道:PPI 使用预定义的通道(如 16 或 32 个通道),每个通道需手动配置事件源和任务目标。
- 静态绑定:事件与任务的绑定需通过代码显式设置,例如通过
nrf_ppi_channel_endpoint_setup
函数将无线电事件与定时器任务关联。 - 应用场景:适用于简单的硬件自动化,如超时控制或事件触发任务(如定时器捕获或无线电启停)。
DPPI
- 动态通道分配:DPPI 支持动态分配通道资源,允许更灵活的事件-任务映射,减少通道数量限制。
- 广播模式:单个事件可同时触发多个任务,通过“订阅-发布”机制实现多外设协同工作。
- 应用场景:适用于复杂系统,如多协议无线通信(蓝牙 + Thread)或需多外设联动的低功耗场景。
2. 配置方式
PPI
需手动配置通道的 事件源(Event) 和 任务目标(Task),例如:
1
2
3
4
5
6nrf_ppi_channel_endpoint_setup(
NRF_PPI,
HAL_RADIO_RECV_TIMEOUT_CANCEL_PPI,
(uint32_t)&NRF_RADIO->EVENTS_ADDRESS,
(uint32_t)&EVENT_TIMER->TASKS_CAPTURE[1]
);此处将无线电的地址匹配事件绑定到定时器的捕获任务。
DPPI
通过 订阅列表(Subscribe List) 和 发布列表(Publish List) 动态管理事件与任务的关联,例如:
1
nrf_dppi_subscribe_enable(NRF_DPPIC, EVENT_CHANNEL, TASK_GROUP);
允许一个事件触发多个任务组,减少代码冗余。
3. 性能与资源占用
PPI
- 低延迟:硬件直接路由,无 CPU 干预,适用于实时性要求高的场景。
- 资源受限:通道数量固定,需避免通道冲突(如多个外设竞争同一通道)。
DPPI
- 高扩展性:支持动态通道分配和广播机制,适合多任务并发场景。
- 低功耗优化:通过事件广播减少重复配置,降低功耗(如传感器数据批量处理)。
4. 典型应用对比
场景 | PPI 适用性 | DPPI 适用性 |
---|---|---|
单事件触发单任务 | ✅(如超时关闭无线电) | ✅(但资源利用率低) |
多事件触发多任务 | ❌(需多个通道) | ✅(动态订阅) |
低功耗传感器数据采集 | ❌(需频繁配置通道) | ✅(广播模式省电) |
多协议无线通信同步 | ❌(通道资源不足) | ✅(灵活路由) |
总结
- PPI:适合简单、固定的硬件自动化需求,配置直接但扩展性有限。
- DPPI:针对复杂系统设计,提供动态资源分配和多任务协同能力,是 Nordic 新一代芯片(如 nRF53 系列)的核心特性。
如需进一步了解具体芯片的实现细节,可参考 Nordic 官方文档(如《nRF5 SDK》或《nRF Connect SDK》)。