如果你正在使用NRF5 SDK的ADC功能,相信你一定也会被各种nrf_adc、nrfx_adc、nrfx_saadc、nrf_drv_saadc等一堆adc文件搞晕过。
那么究竟为什么会存在这么多种adc、它们相互之间又是什么关系呢?下面就让我们来捋一捋。
根据Nordicsemi的介绍,nRF5 SDK的目录结构是这样的:
其中和nrf_drv有关的integration目录没有介绍,那我们先看看modules:
里面说Nordic有2套不同的芯片外设驱动程序。SDK14和以前版本的SDK使用nrf_drv
传统的外设驱动程序。而SDK15/16使用了nrfx
新的外设驱动(nrfx驱动在nRF5 SDK和nRF Connect SDK中都有使用)。
看到这里大致理解一些了,原来nrf_drv
开头的文件是老版本SDK的外设驱动,搜了一下文件名发现这些文件都放在没介绍的integration
目录里面:
打开其中的integration/nrfx/legacy/nrf_drv_saadc.h
文件看了一下,发现include了modules/nrfx/drivers/include/nrfx_saadc.h
,也就是新SDK的nrfx
外设驱动。并且老版本的常量和函数名也被define到了nrfx
对应的名字,就是说nrf_drv
只是保留了旧的函数和常量名称,实际调用的是nrfx
驱动。这也是为了以前使用nrf_drv
驱动程序开发的应用可以迁移到nrfx
上面来而不用大量修改代码。为了保持统一,官方example里面还是优先使用nrf_drv
开头的文件。