SimpleFOClibrary 2.4.0
Loading...
Searching...
No Matches
current_sense/hardware_specific/silabs/efr32_mcu.h
Go to the documentation of this file.
1#ifndef EFR32_CURRENTSENSE_MCU_H
2#define EFR32_CURRENTSENSE_MCU_H
3
4#include "../../hardware_api.h"
5
6#if defined(ARDUINO_ARCH_SILABS)
7#include <em_iadc.h>
8#include <em_timer.h>
9#include <FreeRTOS.h>
10#include <semphr.h>
11
12#ifndef SILABS_DEFAULT_ADC_PERPHERAL
13#define SILABS_DEFAULT_ADC_PERPHERAL IADC0
14#endif
15
16#ifndef SILABS_ADC_VREF
17#define SILABS_ADC_VREF 3300
18#endif
19
20#ifndef SILABS_ADC_PRS_CHANNEL
21#define SILABS_ADC_PRS_CHANNEL 1
22#endif
23
24#ifndef SILABS_MAX_ANALOG
25#define SILABS_MAX_ANALOG 3
26#endif
27
28typedef enum {
29 CS_INLINE,
30 CS_LO_SIDE,
31 CS_HI_SIDE,
32} EFR32CurrentSenseMode;
33
34typedef struct {
35 uint8_t port;
36 uint8_t pin;
37} EFR32AdcInstance;
38
39typedef struct {
40 int pins[SILABS_MAX_ANALOG];
41 float adc_voltage_conv;
42 EFR32AdcInstance inst[SILABS_MAX_ANALOG];
43 uint8_t firstIndex;
44 uint8_t noAdcChannels;
45 volatile bool dataReady;
46 uint32_t id;
47 uint32_t buffer[SILABS_MAX_ANALOG];
48 uint32_t vRef;
49 unsigned int dmaChannel;
50 unsigned int prsChannel;
51 EFR32CurrentSenseMode mode;
52 IADC_TypeDef *adc;
53 LDMA_Descriptor_t descriptor;
54} EFR32CurrentSenseParams;
55
56#endif
57
58#endif
return raw_adc *GenericCurrentSenseParams *cs_params adc_voltage_conv