HF-TMC9660 Driver
Hardware Agnostic C++ Driver for the TMC9660
Loading...
Searching...
No Matches
tmc9660_adc.hpp
Go to the documentation of this file.
1#pragma once
2#include <cstdint>
3
12namespace TMC9660 {
13namespace ADC {
14
16
45struct SRC_CONFIG {
46 static constexpr uint8_t ADDRESS = 0x01;
47
49 enum class Mux2Detour : uint8_t {
50 NO_CHANGE = 0,
51 DETOUR = 1
52 };
53
55 enum class MuxConfig : uint8_t {
56 OFF = 0,
57 FIRST = 1,
58 SECOND = 2,
59 THIRD = 3
60 };
61
62 union {
63 uint32_t value;
64 struct {
65 // ADC3
67 uint32_t : 1;
71 // ADC2
73 uint32_t ADC2_MUX3_DIS : 1;
77 // ADC1
79 uint32_t : 1;
83 // ADC0
85 uint32_t ADC0_MUX3_DIS : 1;
90 };
91};
92
94
105struct SETUP {
106 static constexpr uint8_t ADDRESS = 0x02;
107
109 enum class ADCShiftSample : uint8_t {
110 SHIFT_500NS = 0,
111 SHIFT_600NS = 1,
112 SHIFT_700NS = 2,
113 SHIFT_800NS = 3,
114 SHIFT_900NS = 4,
115 SHIFT_1000NS = 5,
116 SHIFT_1100NS = 6,
117 SHIFT_1200NS = 7,
118 SHIFT_1300NS = 8,
119 SHIFT_1400NS = 9,
120 SHIFT_1500NS = 10,
121 SHIFT_1600NS = 11,
122 SHIFT_1700NS = 12,
123 SHIFT_1800NS = 13,
124 SHIFT_1900NS = 14,
125 SHIFT_2000NS = 15
126 };
127
128 union {
129 uint32_t value;
130 struct {
131 uint32_t : 16;
133 uint32_t : 12;
135 };
136};
137
139
162 static constexpr uint8_t ADDRESS = 0x05;
163
164 union {
165 uint32_t value;
166 struct {
167 uint32_t RDY_ADC_0 : 1;
168 uint32_t RDY_ADC_1 : 1;
169 uint32_t RDY_ADC_2 : 1;
170 uint32_t RDY_ADC_3 : 1;
171 uint32_t : 4;
172 uint32_t ADC0_WTCHDG_FAIL : 1;
173 uint32_t ADC1_WTCHDG_FAIL : 1;
174 uint32_t ADC2_WTCHDG_FAIL : 1;
175 uint32_t ADC3_WTCHDG_FAIL : 1;
176 uint32_t ADC0_MUXSEQ_FAIL : 1;
177 uint32_t ADC1_MUXSEQ_FAIL : 1;
178 uint32_t ADC2_MUXSEQ_FAIL : 1;
179 uint32_t ADC3_MUXSEQ_FAIL : 1;
180 uint32_t : 16;
182 };
183};
184
186
207struct CSA_SETUP {
208 static constexpr uint8_t ADDRESS = 0x07;
209
211 enum class CSAFilterLength : uint8_t {
212 OFF = 0,
213 LENGTH_2 = 1,
214 LENGTH_4 = 2,
215 LENGTH_8 = 3
216 };
217
219 enum class CSAFilterBW : uint8_t {
220 BW_0U55 = 0,
221 BW_0U75 = 1,
222 BW_1U00 = 2,
223 BW_1U35 = 3
224 };
225
227 enum class CSAGain : uint8_t {
228 X5 = 0,
229 X10 = 1,
230 X20 = 2,
231 X40 = 3
232 };
233
234 union {
235 uint32_t value;
236 struct {
237 uint32_t CSA0_EN : 1;
238 uint32_t CSA1_EN : 1;
239 uint32_t CSA2_EN : 1;
240 uint32_t CSA3_EN : 1;
242 uint32_t CSA012_BYPASS : 1;
243 uint32_t : 1;
245 uint32_t CSA3_BYPASS : 1;
246 uint32_t : 1;
249 uint32_t : 0;
251 uint32_t : 12;
253 };
254};
255
256} // namespace ADC
257} // namespace TMC9660
Definition tmc9660_adc.hpp:12
Current Sense Amplifier (CSA) Setup Register (Address 0x007, Block 1).
Definition tmc9660_adc.hpp:207
CSAFilterLength CSA_AZ_FLTLNGTH_EXP
Filter length exponent for AZ values.
Definition tmc9660_adc.hpp:250
CSAFilterBW CSA3_FILT
BW filter for CSA3.
Definition tmc9660_adc.hpp:248
uint32_t CSA3_BYPASS
Bypass for CSA3.
Definition tmc9660_adc.hpp:245
CSAFilterBW
CSA bandwidth filter settings.
Definition tmc9660_adc.hpp:219
CSAGain
CSA gain settings.
Definition tmc9660_adc.hpp:227
CSAFilterLength
CSA AZ filter length exponent.
Definition tmc9660_adc.hpp:211
CSAFilterBW CSA012_FILT
BW filter for CSA0...2.
Definition tmc9660_adc.hpp:247
uint32_t CSA1_EN
CSA1 enable.
Definition tmc9660_adc.hpp:238
uint32_t value
Definition tmc9660_adc.hpp:235
static constexpr uint8_t ADDRESS
Register address (Block 1)
Definition tmc9660_adc.hpp:208
CSAGain CSA3_GAIN
Gain for CSA3.
Definition tmc9660_adc.hpp:244
uint32_t CSA0_EN
CSA0 enable.
Definition tmc9660_adc.hpp:237
CSAGain CSA012_GAIN
Gain for CSA0...2.
Definition tmc9660_adc.hpp:241
uint32_t CSA012_BYPASS
Bypass for CSA0...2.
Definition tmc9660_adc.hpp:242
struct TMC9660::ADC::CSA_SETUP::@9::@11 bits
uint32_t CSA3_EN
CSA3 enable.
Definition tmc9660_adc.hpp:240
uint32_t CSA2_EN
CSA2 enable.
Definition tmc9660_adc.hpp:239
ADC Setup Register (Address 0x002, Block 1).
Definition tmc9660_adc.hpp:105
uint32_t value
Definition tmc9660_adc.hpp:129
ADCShiftSample
ADC sample time shift options.
Definition tmc9660_adc.hpp:109
struct TMC9660::ADC::SETUP::@3::@5 bits
static constexpr uint8_t ADDRESS
Register address (Block 1)
Definition tmc9660_adc.hpp:106
ADCShiftSample ADC_SHIFT_SAMPLE
ADC sample time shift.
Definition tmc9660_adc.hpp:132
ADC Sources Configuration Register (Address 0x001, Block 1).
Definition tmc9660_adc.hpp:45
MuxConfig ADC2_MUX1_CFG
Definition tmc9660_adc.hpp:75
MuxConfig ADC2_MUX2_CFG
Definition tmc9660_adc.hpp:74
Mux2Detour ADC0_MUX2_DETOUR
Definition tmc9660_adc.hpp:84
MuxConfig ADC1_MUX1_CFG
Definition tmc9660_adc.hpp:81
MuxConfig ADC0_MUX2_CFG
Definition tmc9660_adc.hpp:86
MuxConfig ADC1_MUX2_CFG
Definition tmc9660_adc.hpp:80
Mux2Detour ADC2_MUX2_DETOUR
Definition tmc9660_adc.hpp:72
uint32_t ADC2_MUX3_DIS
Definition tmc9660_adc.hpp:73
Mux2Detour
MUX detour configuration.
Definition tmc9660_adc.hpp:49
@ NO_CHANGE
No changes to the measurement sequence.
@ DETOUR
Skip MUX2 measurement for a second MUX1 measurement.
MuxConfig ADC2_MUX0_CFG
Definition tmc9660_adc.hpp:76
MuxConfig ADC3_MUX0_CFG
Definition tmc9660_adc.hpp:70
MuxConfig ADC0_MUX1_CFG
Definition tmc9660_adc.hpp:87
struct TMC9660::ADC::SRC_CONFIG::@0::@2 bits
Mux2Detour ADC3_MUX2_DETOUR
Definition tmc9660_adc.hpp:66
Mux2Detour ADC1_MUX2_DETOUR
Definition tmc9660_adc.hpp:78
MuxConfig ADC3_MUX1_CFG
Definition tmc9660_adc.hpp:69
uint32_t value
Definition tmc9660_adc.hpp:63
MuxConfig ADC0_MUX0_CFG
Definition tmc9660_adc.hpp:88
MuxConfig
MUX configuration options.
Definition tmc9660_adc.hpp:55
@ SECOND
Sample MUX input second after trigger.
@ FIRST
Sample MUX input first after trigger.
@ THIRD
Sample MUX input third after trigger.
MuxConfig ADC3_MUX2_CFG
Definition tmc9660_adc.hpp:68
static constexpr uint8_t ADDRESS
Register address (Block 1)
Definition tmc9660_adc.hpp:46
MuxConfig ADC1_MUX0_CFG
Definition tmc9660_adc.hpp:82
uint32_t ADC0_MUX3_DIS
Definition tmc9660_adc.hpp:85
ADC Status Flags Register (Address 0x005, Block 1).
Definition tmc9660_adc.hpp:161
uint32_t RDY_ADC_2
ADC2 ready.
Definition tmc9660_adc.hpp:169
uint32_t ADC3_WTCHDG_FAIL
ADC3 watchdog fail.
Definition tmc9660_adc.hpp:175
struct TMC9660::ADC::STATUS_FLAGS::@6::@8 bits
uint32_t ADC2_WTCHDG_FAIL
ADC2 watchdog fail.
Definition tmc9660_adc.hpp:174
uint32_t ADC2_MUXSEQ_FAIL
ADC2 sequence configuration error.
Definition tmc9660_adc.hpp:178
uint32_t ADC3_MUXSEQ_FAIL
ADC3 sequence configuration error.
Definition tmc9660_adc.hpp:179
uint32_t RDY_ADC_3
ADC3 ready.
Definition tmc9660_adc.hpp:170
uint32_t ADC0_WTCHDG_FAIL
ADC0 watchdog fail.
Definition tmc9660_adc.hpp:172
uint32_t ADC0_MUXSEQ_FAIL
ADC0 sequence configuration error.
Definition tmc9660_adc.hpp:176
uint32_t RDY_ADC_0
ADC0 ready.
Definition tmc9660_adc.hpp:167
uint32_t RDY_ADC_1
ADC1 ready.
Definition tmc9660_adc.hpp:168
static constexpr uint8_t ADDRESS
Register address (Block 1)
Definition tmc9660_adc.hpp:162
uint32_t ADC1_WTCHDG_FAIL
ADC1 watchdog fail.
Definition tmc9660_adc.hpp:173
uint32_t value
Definition tmc9660_adc.hpp:165
uint32_t ADC1_MUXSEQ_FAIL
ADC1 sequence configuration error.
Definition tmc9660_adc.hpp:177