问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何理解nRF5芯片外设PPI

创作时间:
作者:
@小白创作中心

如何理解nRF5芯片外设PPI

引用
1
来源
1.
https://www.nordicsemi.cn/blog/understand-nrf5-chip-peripheral-ppis/

Nordic Semiconductor的nRF5系列芯片中包含了一个独特的外设——可编程外设互连(PPI,Programmable Peripheral Interconnect)。PPI的设计目的是让CPU处于空闲模式时,外设之间仍能完成通信,从而降低系统功耗。虽然PPI和DMA在外设间通信的功能上有些相似,但它们的工作原理完全不同。

Nordic芯片的独特设计理念

在Nordic芯片中,每个外设都可以看作是一个状态机,具有输入(task)、输出(event)和状态。常见的task包括启动外设、清零寄存器等,而常见的event则包括数据发送完毕、外设关闭等。与传统芯片不同的是,Nordic将每个task和event都设计为独立的32位寄存器,而不是使用单个比特位。这种设计使得每个task和event都有一个独立且唯一的地址,为PPI的实现奠定了基础。

例如,Timer模块的寄存器列表中包含了各种task和event寄存器:

同样,ADC模块的寄存器列表中也包含了各种task和event寄存器:

PPI的工作原理

PPI本身也是一个外设,具有自己的寄存器定义。其主要功能是配置PPI通道,通过这些通道将一个外设的event与另一个外设的task连接起来。当某个外设的event被触发(相关寄存器为1)时,会自动触发连接的外设的task(将相关寄存器置1)。

实际应用对比

以一个简单的例子来说明PPI的优势:假设需要实现定时10ms后启动ADC模块的功能。

传统方式

  1. 初始化Timer模块和ADC模块(CPU工作)
  2. 启动Timer(CPU工作)
  3. 等待Timer中断(CPU不工作)
  4. 10ms到时,进入Timer timeout handler,启动ADC(CPU工作)

PPI方式

  1. 初始化Timer模块、ADC模块和PPI模块,将Timer的timeout event与ADC的start task相连(CPU工作)
  2. 启动Timer(CPU工作)
  3. 等待Timer timeout,10ms到时,PPI自动启动ADC(CPU不工作)

通过对比可以看出,PPI方式减少了CPU的工作时间,降低了系统功耗。此外,由于不需要进入中断处理程序,PPI还提高了系统的实时性。

PPI的高级功能

除了基本的event-task映射,PPI还支持fork机制,允许一个event同时触发两个task。这可以通过将一个event同时连接到一个task及其对应的fork来实现。

实践示例

读者可以参考SDK自带的例子工程:

  • SDK安装目录\examples\peripheral\ppi\pca10040\blank\arm5_no_packs
  • SDK安装目录\examples\peripheral\gpiote\pca10040\blank\arm5_no_packs

下面是一段PPI使用的代码示例,实现了定时时间到后通过PPI自动操作IO口的功能:

err_code = nrf_drv_ppi_init();
APP_ERROR_CHECK(err_code);

err_code = nrf_drv_ppi_channel_alloc(&ppi_channel);
APP_ERROR_CHECK(err_code);

compare_evt_addr = nrf_drv_timer_event_address_get(&timer, NRF_TIMER_EVENT_COMPARE0);
gpiote_task_addr = nrf_drv_gpiote_out_task_addr_get(GPIO_OUTPUT_PIN_NUMBER);

err_code = nrf_drv_ppi_channel_assign(ppi_channel, compare_evt_addr, gpiote_task_addr);
APP_ERROR_CHECK(err_code);

err_code = nrf_drv_ppi_channel_enable(ppi_channel);
APP_ERROR_CHECK(err_code);

通过以上内容,读者可以对Nordic nRF5芯片中的PPI功能有全面的了解,并能够开始在实际项目中应用这一特性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号