【经验】EFR32FG23无线SoC芯片使用IADC的single interrupt方式读取芯片引脚AD值的方法

2023-03-02 世强
无线SoC芯片,EFR32FG23,SILICON LABS 无线SoC芯片,EFR32FG23,SILICON LABS 无线SoC芯片,EFR32FG23,SILICON LABS 无线SoC芯片,EFR32FG23,SILICON LABS

本文以SILICON LABS EFR32FG23无线SoC芯片的rail_soc_simple_trx工程为例,介绍EFR32FG23芯片使用IADC的single interrupt方式读取芯片引脚AD值的方法。


1、在rail_soc_simple_trx工程中双击打开rail_soc_simple_trx.slcp文件,点击SOFTWARE COMPONENTS,在搜索栏输入iadc,点击搜索到的IADC组件,点击Install。

2、在工程中添加如下头文件:

#include "em_cmu.h"

#include "em_iadc.h"

#include "app_log.h"

3、在工程中添加IADC CLK和IADC输入引脚的定义代码,本文使用10MHz的ADC CLK,使用PA5来采集AD数据。

// Set CLK_ADC to 10 MHz

#define CLK_SRC_ADC_FREQ        20000000  // CLK_SRC_ADC

#define CLK_ADC_FREQ            10000000  // CLK_ADC - 10 MHz max in normal mode


#define IADC_INPUT_0_PORT_PIN     iadcPosInputPortAPin5;


#define IADC_INPUT_0_BUS          ABUSALLOC

#define IADC_INPUT_0_BUSALLOC     GPIO_ABUSALLOC_AODD0_ADC0

4、在工程中添加两个变量,用来存放IADC采样数据和最终的电压数据。

// Raw IADC conversion result

static volatile IADC_Result_t sample;


// Result converted to volts

static volatile double singleResult;

5、在工程中添加IADC的初始化代码。

void initIADC(void)

{

  // Declare initialization structures

  IADC_Init_t init = IADC_INIT_DEFAULT;

  IADC_AllConfigs_t initAllConfigs = IADC_ALLCONFIGS_DEFAULT;

  IADC_InitSingle_t initSingle = IADC_INITSINGLE_DEFAULT;


  // Single input structure

  IADC_SingleInput_t singleInput = IADC_SINGLEINPUT_DEFAULT;


  /*

   * Enable IADC0 and GPIO register clock.

   *

   * Note: On EFR32xG21 devices, CMU_ClockEnable() calls have no effect

   * as clocks are enabled/disabled on-demand in response to peripheral

   * requests.  Deleting such lines is safe on xG21 devices and will

   * reduce provide a small reduction in code size.

   */

  CMU_ClockEnable(cmuClock_IADC0, true);

  CMU_ClockEnable(cmuClock_GPIO, true);


  // Use the FSRC0 as the IADC clock so it can run in EM2

  CMU_ClockSelectSet(cmuClock_IADCCLK, cmuSelect_FSRCO);


  // Set the prescaler needed for the intended IADC clock frequency

  init.srcClkPrescale = IADC_calcSrcClkPrescale(IADC0, CLK_SRC_ADC_FREQ, 0);


  // Shutdown between conversions to reduce current

  init.warmup = iadcWarmupNormal;


  /*

   * Configuration 0 is used by both scan and single conversions by

   * default.  Use unbuffered AVDD as reference and specify the

   * AVDD supply voltage in mV.

   *

   * Resolution is not configurable directly but is based on the

   * selected oversampling ratio (osrHighSpeed), which defaults to

   * 2x and generates 12-bit results.

   */

  initAllConfigs.configs[0].reference = iadcCfgReferenceVddx;

  initAllConfigs.configs[0].vRef = 3300;

  initAllConfigs.configs[0].osrHighSpeed = iadcCfgOsrHighSpeed2x;


  /*

   * CLK_SRC_ADC must be prescaled by some value greater than 1 to

   * derive the intended CLK_ADC frequency.

   *

   * Based on the default 2x oversampling rate (OSRHS)...

   *

   * conversion time = ((4 * OSRHS) + 2) / fCLK_ADC

   *

   * ...which results in a maximum sampling rate of 833 ksps with the

   * 2-clock input multiplexer switching time is included.

   */

  initAllConfigs.configs[0].adcClkPrescale = IADC_calcAdcClkPrescale(IADC0,

                                                                     CLK_ADC_FREQ,

                                                                     0,

                                                                     iadcCfgModeNormal,

                                                                     init.srcClkPrescale);


  /*

   * Specify the input channel.  When negInput = iadcNegInputGnd, the

   * conversion is single-ended.

   */

  singleInput.posInput   = IADC_INPUT_0_PORT_PIN;

  singleInput.negInput   = iadcNegInputGnd;


  // Allocate the analog bus for ADC0 inputs

  GPIO->IADC_INPUT_0_BUS |= IADC_INPUT_0_BUSALLOC;


  // Initialize IADC

  IADC_init(IADC0, &init, &initAllConfigs);


  // Initialize a single-channel conversion

  IADC_initSingle(IADC0, &initSingle, &singleInput);


  // Clear any previous interrupt flags

  IADC_clearInt(IADC0, _IADC_IF_MASK);


  // Enable single-channel done interrupts

  IADC_enableInt(IADC0, IADC_IEN_SINGLEDONE);


  // Enable IADC interrupts

  NVIC_ClearPendingIRQ(IADC_IRQn);

  NVIC_EnableIRQ(IADC_IRQn);

}

6、在工程中添加IADC的中断处理函数,在处理函数中打印最终的电压数据。

void IADC_IRQHandler(void)

{

  // Read a result from the FIFO

  sample = IADC_pullSingleFifoResult(IADC0);


  /*

   * Calculate the voltage converted as follows:

   *

   * For single-ended conversions, the result can range from 0 to

   * +Vref, i.e., for Vref = AVDD = 3.30 V, 0xFFF represents the

   * full scale value of 3.30 V.

   */

  singleResult = sample.data * 3.3 / 0xFFF;

  app_log_info("IADC Result: %.2f\n", singleResult);


  /*

   * Clear the single conversion complete interrupt.  Reading FIFO

   * results does not do this automatically.

   */

  IADC_clearInt(IADC0, IADC_IF_SINGLEDONE);

}

7、在main()函数中添加initIADC();来初始化IADC。

8、在工程中合适的位置调用IADC_command(IADC0,iadcCmdStartSingle);来读取AD值。

9、本文在测试时使用稳压电源给EFR32FG23芯片的PA5引脚供2.5 V的电压。

10、EFR32FG23芯片通过IADC读取到电压为2.48~2.49V之间,使用IADC成功读取到芯片引脚的AD值。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 1

本文由潮汕小菜提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。

评论

   |   

提交评论

全部评论(1

  • LeoXie Lv6. 高级专家 2024-09-13
    不错
没有更多评论了

相关推荐

【经验】使用频谱仪测试无线模块EFR32FG23的发射功率和频偏的方法

本文使用Silicon Labs无线SoC芯片EFR32FG23的BRD4265B无线模块作为测试对象,介绍如何使用Simplicity Studio 5软件配置railtest工程,并使用频谱仪测试EFR32FG23模块的发射功率和频偏的方法。

设计经验    发布时间 : 2022-03-02

【经验】基于Silicon Labs无线SoC芯片MG24开发套件的Matter入门指导文章汇总

本文主要介绍基于Silicon Labs MG24开发套件的Matter入门指导文章汇总。

设计经验    发布时间 : 2023-06-30

【经验】使用Si4463或者Si4438无线收发芯片来解析其他无线设备通信速率的方法

本文使用EFR32FG23无线SoC芯片来模拟老产品,通过按键来触发EFR32FG23芯片发送无线数据包,然后使用Si4438芯片来捉取波形,并介绍使用Si4438无线收发芯片来解析其他无线设备通信速率的方法。

设计经验    发布时间 : 2023-04-19

SiWx917 Wi-Fi 6蓝牙低功耗无线SoC,助力智能手表功耗和安全性能提升

SiWx917是Silicon Labs推出的一款支持Wi-Fi 6、蓝牙LE 5.4 和低功耗特性的无线SoC(系统级芯片),专为物联网(IoT)和可穿戴设备设计。这款芯片不仅拥有强大的计算能力和先进的无线连接功能,还具有低功耗和小尺寸的优势,为智能手表市场带来了全新的技术突破。

应用方案    发布时间 : 2024-10-23

【经验】使用Simplicity Commander工具读写EFR32无线SoC芯片EUI和install code方法

本文以Silicon Labs EFR32FG23 Sub-G无线SoC芯片为例,介绍如何读写EFR32无线SoC芯片的EUI和install code的方法。

设计经验    发布时间 : 2023-04-21

如何用EFR32FG23无线SoC芯片读取平均RSSI?

本文以Silicon Labs的EFR32FG23无线SoC芯片的rail_soc_simple_trx工程为例,介绍EFR32FG23芯片读取某个信道的平均RSSI的方法。

设计经验    发布时间 : 2024-03-07

【经验】使用串口来升级EFR32FG23无线SoC芯片固件的方法

本文主要介绍如何使用BootLoader——NCP UART XMODEM工程实现使用串口升级Silicon Labs EFR32FG23无线SoC芯片固件的方法。

设计经验    发布时间 : 2022-09-01

【经验】配置迈斯威志WizPro200EFM烧录器实现脱机烧录无线SoC芯片EFR32MG21固件的方法

Silicon Labs的EFR32MG21无线SoC芯片,主要用于ZigBee和Matter设备。本文主要介绍如何配置迈斯威志WizPro200EFM烧录器,实现脱机烧录EFR32MG21无线SoC芯片固件的方法。

设计经验    发布时间 : 2023-01-21

EFR32FG23无线SoC芯片读取数据包实时RSSI值的方法

本文以Silicon Labs的EFR32FG23无线SoC芯片的rail_soc_simple_trx工程为例,介绍EFR32FG23芯片读取数据包的实时RSSI值的方法。

设计经验    发布时间 : 2024-03-07

EFR32无线通信模块AN002——BootLoader(standalone)

Silicon Labs的EFR32系列无线SoC芯片提供了Gecko Bootloader支持设备更新应用程序,Gecko Bootloader分两种模式,一种模式称为standalone bootloader,另一种模式称为application bootloader。本文指导大家配置Standalone Bootloader工程,并对应用程序更新。

设计经验    发布时间 : 2018-06-26

【经验】如何使用RAILTEST程序测试无线SoC芯片EFR32MG的蓝牙性能?

使用过Silicon Labs无线SoC芯片EFR32MG的Zigbee功能的工程师多数已经习惯使用Railtest软件对Zigbee性能做测试,而在Railtest软件下也可以对BLE性能做测试。本文将介绍具体的设置步骤与注意事项。

设计经验    发布时间 : 2020-09-26

【经验】EFR32FG23无线SoC使用I2C读写MSA311传感器寄存器的方法

本文以 Silicon Labs 的 EFR32FG23 无线SoC芯片的 rail_soc_simple_trx 工程为例,介绍如何使用EFR32FG23 芯片 I²C外设来读写敏芯微 MSA311三轴加速度传感器寄存器的方法。

设计经验    发布时间 : 2023-06-29

【经验】使用Simplicity Commander工具对无线SoC芯片EFR32FG23执行recover的方法

在使用芯科科技EFR32FG23时,有时一些错误的操作会导致芯片烧录一次固件之后就不能重新烧录,或无法识别到芯片等问题,需要对芯片执行recover。本文主要介绍使用Simplicity Commander工具对EFR32FG23执行recover的方法。

设计经验    发布时间 : 2022-01-15

【经验】解析创建EFR32FG23芯片Long Preamble Duty Cycle低功耗接收工程的方法

有些无线产品使用电池供电,要求待机功耗很低,但是又需要能够实时接收到其他设备发来的数据,这时候就需要使用到无线芯片的低功耗接收功能。本文使用Simplicity Studio v5软件,主要介绍如何创建EFR32FG23无线SoC芯片Long Preamble Duty Cycle低功耗接收工程的方法。

设计经验    发布时间 : 2022-05-29

【经验】无线SoC芯片EFR32MG21程序中MFG_SECURITY_CONFIG参数的设置与功能

在无线SoC芯片EFR32MG21的ZigBee默认Z3Light程序运行时我们可以通过keys print这个CLI命令打印NWK key与TC Link Key等密钥参数,打印的效果如下,那我们是否可以隐藏这些密钥无法打印呢?

设计经验    发布时间 : 2023-05-26

展开更多

电子商城

查看更多

品牌:SILICON LABS

品类:Wireless SoC

价格:¥14.7732

现货: 23,750

品牌:磐启微电子

品类:无线SOC芯片

价格:

现货: 0

品牌:SILICON LABS

品类:Wireless Gecko SoC

价格:¥8.1764

现货: 104,128

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥12.9143

现货: 95,058

品牌:SILICON LABS

品类:Mighty Gecko Multi-Protocol Wireless SoC

价格:¥27.0929

现货: 90,767

品牌:SILICON LABS

品类:Wireless SoC

价格:¥31.7756

现货: 88,300

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.9026

现货: 83,205

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.5305

现货: 80,817

品牌:SILICON LABS

品类:Wireless SoC

价格:¥35.3989

现货: 77,507

品牌:SILICON LABS

品类:8位MCU

价格:¥5.8534

现货: 73,120

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:SILICON LABS

品类:Switch Hall Effect Magnetic Position Sensor

价格:¥2.2924

现货:126,000

品牌:SILICON LABS

品类:Light Sensor

价格:¥20.3400

现货:28,003

品牌:SILICON LABS

品类:8位MCU

价格:¥4.9000

现货:12,000

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥10.1700

现货:10,000

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.7900

现货:3,451

品牌:SILICON LABS

品类:Wireless SoC

价格:¥15.1400

现货:1,455

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥11.1200

现货:1,201

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥16.8500

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥56.0000

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥5.1900

现货:396

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

物联网天线方案设计/虚拟天线芯片方案设计

Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。

最小起订量: 2500 提交需求>

EDA芯片设计软件免费使用

世强深圳实验室提供Robei EDA软件免费使用服务,与VCS、NC-Verilog、Modelsim等EDA工具无缝衔接,将IC设计高度抽象化,并精简到三个基本元素:模块、引脚、连接线,自动生成代码。点击预约,支持到场/视频直播使用,资深专家全程指导。

实验室地址: 深圳 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面