@@ -309,6 +309,14 @@ public:
309
309
%% endif
310
310
};
311
311
312
+ enum class ExternalTriggerPolarity
313
+ {
314
+ NoTriggerDetection = 0x0u,
315
+ RisingEdge = 0x1u,
316
+ FallingEdge = 0x2u,
317
+ RisingAndFallingEdge = 0x3u,
318
+ };
319
+
312
320
enum class Interrupt : uint32_t
313
321
{
314
322
Ready = ADC_IER_ADRDYIE,
@@ -342,6 +350,57 @@ public:
342
350
};
343
351
MODM_FLAGS32(InterruptFlag);
344
352
353
+ /**
354
+ * Enum mapping all events on a external trigger converter.
355
+ * The source mapped to each event varies on controller family,
356
+ * refer to the ADC external trigger section on reference manual
357
+ * of your controller for more information
358
+ */
359
+ enum class RegularConversionExternalTrigger
360
+ {
361
+ Event0 = 0x00u,
362
+ Event1 = 0x01u,
363
+ Event2 = 0x02u,
364
+ Event3 = 0x03u,
365
+ Event4 = 0x04u,
366
+ Event5 = 0x05u,
367
+ Event6 = 0x06u,
368
+ Event7 = 0x07u,
369
+ Event9 = 0x09u,
370
+ Event10 = 0x0Au,
371
+ Event11 = 0x0Bu,
372
+ Event12 = 0x0Cu,
373
+ Event13 = 0x0Du,
374
+ Event14 = 0x0Eu,
375
+ Event15 = 0x0Fu,
376
+ %% if target["family"] in ["g4"]
377
+ Event16 = 0x10u,
378
+ Event17 = 0x11u,
379
+ Event18 = 0x12u,
380
+ Event19 = 0x13u,
381
+ Event20 = 0x14u,
382
+ Event21 = 0x15u,
383
+ Event22 = 0x16u,
384
+ Event23 = 0x17u,
385
+ Event24 = 0x18u,
386
+ Event25 = 0x19u,
387
+ Event26 = 0x1Au,
388
+ Event27 = 0x1Bu,
389
+ Event28 = 0x1Cu,
390
+ Event29 = 0x1Du,
391
+ Event30 = 0x1Eu,
392
+ Event31 = 0x1Fu,
393
+ %% endif
394
+ };
395
+
396
+ enum class OffsetSlot : uint8_t
397
+ {
398
+ Slot0 = 0,
399
+ Slot1 = 1,
400
+ Slot2 = 2,
401
+ Slot3 = 3,
402
+ };
403
+
345
404
public:
346
405
template< class... Signals >
347
406
static void
@@ -499,6 +558,18 @@ public:
499
558
static inline void
500
559
stopConversion();
501
560
561
+ /**
562
+ * enable regular conversions on external trigger.
563
+ *
564
+ * @param externalTriggerPolarity
565
+ * Polarity of the external trigger signal.
566
+ * @param regularConversionExternalTrigger
567
+ * Regular conversion external trigger source.
568
+ */
569
+ static inline void enableRegularConversionExternalTrigger(
570
+ ExternalTriggerPolarity externalTriggerPolarity,
571
+ RegularConversionExternalTrigger regularConversionExternalTrigger);
572
+
502
573
/**
503
574
* @return If the conversion is finished.
504
575
* @pre A conversion should have been started with startConversion()
@@ -539,6 +610,18 @@ public:
539
610
static inline bool
540
611
setInjectedConversionSequenceLength(uint8_t length);
541
612
613
+ /**
614
+ * enable injected conversions on external trigger.
615
+ *
616
+ * @param externalTriggerPolarity
617
+ * Polarity of the external trigger signal.
618
+ * @param regularConversionExternalTrigger
619
+ * Regular conversion external trigger source.
620
+ */
621
+ static inline void enableInjectedConversionExternalTrigger(
622
+ ExternalTriggerPolarity externalTriggerPolarity,
623
+ RegularConversionExternalTrigger regularConversionExternalTrigger);
624
+
542
625
/**
543
626
* @return If the injected conversion sequence is finished.
544
627
* @pre An injected conversion should have been started with startInjectedConversionSequence()
@@ -585,6 +668,25 @@ public:
585
668
}
586
669
}
587
670
671
+ /**
672
+ * @arg slot for the offset register (0..3)
673
+ * @arg channel channel to which the offset is applied
674
+ * @arg offset offset value to be applied to the channel
675
+ */
676
+ static inline bool
677
+ setChannelOffset(OffsetSlot slot, Channel channel, int16_t offset, bool saturate = false, bool enable = true);
678
+
679
+ /**
680
+ * @arg slot for the offset register (0..3)
681
+ * @return offset value applied to the channel
682
+ */
683
+ template<class Gpio>
684
+ static inline bool
685
+ setChannelOffset(OffsetSlot slot, int16_t offset, bool saturate = false, bool enable = true)
686
+ {
687
+ return setChannelOffset(slot, getPinChannel<Gpio>(), offset, saturate, enable);
688
+ }
689
+
588
690
static inline void
589
691
enableInterruptVector(const uint32_t priority, const bool enable = true);
590
692
0 commit comments