50 #ifndef ti_dl_dl_dac12__include 51 #define ti_dl_dl_dac12__include 56 #include <ti/devices/msp/msp.h> 59 #ifdef __MSPM0_HAS_DAC12__ 70 DL_DAC12_OUTPUT_DISABLED = DAC12_CTL1_OPS_NOC0,
72 DL_DAC12_OUTPUT_ENABLED = DAC12_CTL1_OPS_OUT0,
78 DL_DAC12_REPRESENTATION_BINARY = DAC12_CTL0_DFM_BINARY,
80 DL_DAC12_REPRESENTATION_TWOS_COMPLEMENT = DAC12_CTL0_DFM_TWOS_COMP,
81 } DL_DAC12_REPRESENTATION;
86 DL_DAC12_RESOLUTION_12BIT = DAC12_CTL0_RES__12BITS,
88 DL_DAC12_RESOLUTION_8BIT = DAC12_CTL0_RES__8BITS,
89 } DL_DAC12_RESOLUTION;
94 DL_DAC12_AMP_OFF_TRISTATE = DAC12_CTL1_AMPHIZ_HIZ,
96 DL_DAC12_AMP_OFF_0V = DAC12_CTL1_AMPHIZ_PULLDOWN,
98 DL_DAC12_AMP_ON = DAC12_CTL1_AMPEN_ENABLE,
104 DL_DAC12_VREF_SOURCE_VDDA_VEREFN = (DAC12_CTL1_REFSP_VDDA |
105 DAC12_CTL1_REFSN_VEREFN) ,
107 DL_DAC12_VREF_SOURCE_VEREFP_VEREFN = (DAC12_CTL1_REFSP_VEREFP |
108 DAC12_CTL1_REFSN_VEREFN),
110 DL_DAC12_VREF_SOURCE_VDDA_VSSA = (DAC12_CTL1_REFSP_VDDA |
111 DAC12_CTL1_REFSN_VSSA),
113 DL_DAC12_VREF_SOURCE_VEREFP_VSSA = (DAC12_CTL1_REFSP_VEREFP |
114 DAC12_CTL1_REFSN_VSSA),
115 } DL_DAC12_VREF_SOURCE;
120 DL_DAC12_SAMPLETIMER_DISABLE = DAC12_CTL3_STIMEN_CLR,
122 DL_DAC12_SAMPLETIMER_ENABLE = DAC12_CTL3_STIMEN_SET,
123 } DL_DAC12_SAMPLETIMER;
129 DL_DAC12_SAMPLES_PER_SECOND_500 = DAC12_CTL3_STIMCONFIG__500SPS,
131 DL_DAC12_SAMPLES_PER_SECOND_1K = DAC12_CTL3_STIMCONFIG__1KSPS,
133 DL_DAC12_SAMPLES_PER_SECOND_2K = DAC12_CTL3_STIMCONFIG__2KSPS,
135 DL_DAC12_SAMPLES_PER_SECOND_4K = DAC12_CTL3_STIMCONFIG__4KSPS,
137 DL_DAC12_SAMPLES_PER_SECOND_8K = DAC12_CTL3_STIMCONFIG__8KSPS,
139 DL_DAC12_SAMPLES_PER_SECOND_16K = DAC12_CTL3_STIMCONFIG__16KSPS,
141 DL_DAC12_SAMPLES_PER_SECOND_100K = DAC12_CTL3_STIMCONFIG__100KSPS,
143 DL_DAC12_SAMPLES_PER_SECOND_200K = DAC12_CTL3_STIMCONFIG__200KSPS,
145 DL_DAC12_SAMPLES_PER_SECOND_500K = DAC12_CTL3_STIMCONFIG__500KSPS,
147 DL_DAC12_SAMPLES_PER_SECOND_1M = DAC12_CTL3_STIMCONFIG__1MSPS,
148 } DL_DAC12_SAMPLES_PER_SECOND;
153 DL_DAC12_FIFO_DISABLED = DAC12_CTL2_FIFOEN_CLR,
155 DL_DAC12_FIFO_ENABLED = DAC12_CTL2_FIFOEN_SET,
162 DL_DAC12_FIFO_THRESHOLD_ONE_QTR_EMPTY = DAC12_CTL2_FIFOTH_LOW,
164 DL_DAC12_FIFO_THRESHOLD_TWO_QTRS_EMPTY = DAC12_CTL2_FIFOTH_MED,
166 DL_DAC12_FIFO_THRESHOLD_THREE_QTRS_EMPTY = DAC12_CTL2_FIFOTH_HIGH,
167 } DL_DAC12_FIFO_THRESHOLD;
172 DL_DAC12_FIFO_TRIGGER_SAMPLETIMER = DAC12_CTL2_FIFOTRIGSEL_STIM,
174 DL_DAC12_FIFO_TRIGGER_HWTRIG0 = DAC12_CTL2_FIFOTRIGSEL_TRIG0,
175 } DL_DAC12_FIFO_TRIGGER;
180 DL_DAC12_DMA_TRIGGER_DISABLED = DAC12_CTL2_DMATRIGEN_CLR,
182 DL_DAC12_DMA_TRIGGER_ENABLED = DAC12_CTL2_DMATRIGEN_SET,
183 } DL_DAC12_DMA_TRIGGER;
189 DL_DAC12_CALIBRATION_FACTORY = DAC12_CALCTL_CALSEL_FACTORYTRIM,
191 DL_DAC12_CALIBRATION_SELF = DAC12_CALCTL_CALSEL_SELFCALIBRATIONTRIM,
193 } DL_DAC12_CALIBRATION;
202 #define DL_DAC12_INTERRUPT_MODULE_READY (DAC12_GEN_EVENT_IMASK_MODRDYIFG_SET) 207 #define DL_DAC12_INTERRUPT_FIFO_EMPTY (DAC12_GEN_EVENT_IMASK_FIFOEMPTYIFG_SET) 212 #define DL_DAC12_INTERRUPT_FIFO_THREE_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO3B4IFG_SET) 217 #define DL_DAC12_INTERRUPT_FIFO_TWO_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B2IFG_SET) 222 #define DL_DAC12_INTERRUPT_FIFO_ONE_QTR_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B4IFG_SET) 227 #define DL_DAC12_INTERRUPT_FIFO_FULL (DAC12_GEN_EVENT_IMASK_FIFOFULLIFG_SET) 233 #define DL_DAC12_INTERRUPT_FIFO_UNDERRUN (DAC12_GEN_EVENT_IMASK_FIFOURUNIFG_SET) 245 #define DL_DAC12_INTERRUPT_DMA_DONE (DAC12_GEN_EVENT_IMASK_DMADONEIFG_SET) 256 #define DL_DAC12_EVENT_MODULE_READY (DAC12_GEN_EVENT_IMASK_MODRDYIFG_SET) 261 #define DL_DAC12_EVENT_FIFO_EMPTY (DAC12_GEN_EVENT_IMASK_FIFOEMPTYIFG_SET) 266 #define DL_DAC12_EVENT_FIFO_THREE_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO3B4IFG_SET) 271 #define DL_DAC12_EVENT_FIFO_TWO_QTRS_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B2IFG_SET) 276 #define DL_DAC12_EVENT_FIFO_ONE_QTR_EMPTY (DAC12_GEN_EVENT_IMASK_FIFO1B4IFG_SET) 281 #define DL_DAC12_EVENT_FIFO_FULL (DAC12_GEN_EVENT_IMASK_FIFOFULLIFG_SET) 287 #define DL_DAC12_EVENT_FIFO_UNDERRUN (DAC12_GEN_EVENT_IMASK_FIFOURUNIFG_SET) 299 #define DL_DAC12_EVENT_DMA_DONE (DAC12_GEN_EVENT_IMASK_DMADONEIFG_SET) 308 DL_DAC12_IIDX_NO_INT = DAC12_CPU_INT_IIDX_STAT_NO_INTR,
310 DL_DAC12_IIDX_MODULE_READY = DAC12_CPU_INT_IIDX_STAT_MODRDYIFG,
312 DL_DAC12_IIDX_FIFO_FULL = DAC12_CPU_INT_IIDX_STAT_FIFOFULLIFG,
314 DL_DAC12_IIDX_FIFO_1_4_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFO1B4IFG,
316 DL_DAC12_IIDX_FIFO_1_2_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFO1B2IFG,
318 DL_DAC12_IIDX_FIFO_3_4_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFO3B4IFG,
320 DL_DAC12_IIDX_FIFO_EMPTY = DAC12_CPU_INT_IIDX_STAT_FIFOEMPTYIFG,
322 DL_DAC12_IIDX_FIFO_UNDERRUN = DAC12_CPU_INT_IIDX_STAT_FIFOURUNIFG,
324 DL_DAC12_IIDX_DMA_DONE = DAC12_CPU_INT_IIDX_STAT_DMADONEIFG
330 DL_DAC12_SUBSCRIBER_INDEX_0 = 0,
331 } DL_DAC12_SUBSCRIBER_INDEX;
336 DL_DAC12_EVENT_ROUTE_1 = 0,
337 } DL_DAC12_EVENT_ROUTE;
344 DL_DAC12_OUTPUT outputEnable;
347 DL_DAC12_RESOLUTION resolution;
350 DL_DAC12_REPRESENTATION representation;
353 DL_DAC12_VREF_SOURCE voltageReferenceSource;
356 DL_DAC12_AMP amplifierSetting;
359 DL_DAC12_FIFO fifoEnable;
362 DL_DAC12_FIFO_TRIGGER fifoTriggerSource;
368 DL_DAC12_DMA_TRIGGER dmaTriggerEnable;
373 DL_DAC12_FIFO_THRESHOLD dmaTriggerThreshold;
378 DL_DAC12_SAMPLETIMER sampleTimeGeneratorEnable;
383 DL_DAC12_SAMPLES_PER_SECOND sampleRate;
396 void DL_DAC12_init(DAC12_Regs *dac12,
const DL_DAC12_Config *config);
409 __STATIC_INLINE
void DL_DAC12_enablePower(DAC12_Regs *dac12)
412 (DAC12_PWREN_KEY_UNLOCK_W | DAC12_PWREN_ENABLE_ENABLE);
426 __STATIC_INLINE
void DL_DAC12_disablePower(DAC12_Regs *dac12)
429 (DAC12_PWREN_KEY_UNLOCK_W | DAC12_PWREN_ENABLE_DISABLE);
449 __STATIC_INLINE
bool DL_DAC12_isPowerEnabled(
const DAC12_Regs *dac12)
451 return ((dac12->GPRCM.PWREN & DAC12_PWREN_ENABLE_MASK) ==
452 DAC12_PWREN_ENABLE_ENABLE);
460 __STATIC_INLINE
void DL_DAC12_reset(DAC12_Regs *dac12)
462 dac12->GPRCM.RSTCTL =
463 (DAC12_RSTCTL_KEY_UNLOCK_W | DAC12_RSTCTL_RESETSTKYCLR_CLR |
464 DAC12_RSTCTL_RESETASSERT_ASSERT);
476 __STATIC_INLINE
bool DL_DAC12_isReset(
const DAC12_Regs *dac12)
478 return ((dac12->GPRCM.STAT & DAC12_STAT_RESETSTKY_MASK) ==
479 DAC12_STAT_RESETSTKY_RESET);
487 __STATIC_INLINE
void DL_DAC12_enable(DAC12_Regs *dac12)
489 dac12->CTL0 |= DAC12_CTL0_ENABLE_SET;
497 __STATIC_INLINE
void DL_DAC12_disable(DAC12_Regs *dac12)
499 dac12->CTL0 &= ~DAC12_CTL0_ENABLE_MASK;
512 __STATIC_INLINE
bool DL_DAC12_isEnabled(
const DAC12_Regs *dac12)
514 uint32_t t = (dac12->CTL0 & DAC12_CTL0_ENABLE_MASK);
515 return (t == DAC12_CTL0_ENABLE_SET);
526 __STATIC_INLINE
void DL_DAC12_configDataFormat(
527 DAC12_Regs *dac12, DL_DAC12_REPRESENTATION rep, DL_DAC12_RESOLUTION res)
530 DAC12_CTL0_RES_MASK | DAC12_CTL0_DFM_MASK);
542 __STATIC_INLINE DL_DAC12_AMP DL_DAC12_getAmplifier(
const DAC12_Regs *dac12)
545 (dac12->CTL1 & (DAC12_CTL1_AMPEN_MASK | DAC12_CTL1_AMPHIZ_MASK));
547 return (DL_DAC12_AMP)(ampVal);
556 __STATIC_INLINE
void DL_DAC12_setAmplifier(
557 DAC12_Regs *dac12, DL_DAC12_AMP ampVal)
560 (DAC12_CTL1_AMPEN_MASK | DAC12_CTL1_AMPHIZ_MASK));
572 __STATIC_INLINE DL_DAC12_VREF_SOURCE DL_DAC12_getReferenceVoltageSource(
573 const DAC12_Regs *dac12)
576 (dac12->CTL1 & (DAC12_CTL1_REFSP_MASK | DAC12_CTL1_REFSN_MASK));
578 return (DL_DAC12_VREF_SOURCE)(refsVal);
588 __STATIC_INLINE
void DL_DAC12_setReferenceVoltageSource(
589 DAC12_Regs *dac12, DL_DAC12_VREF_SOURCE refsVal)
592 (DAC12_CTL1_REFSP_MASK | DAC12_CTL1_REFSN_MASK));
600 __STATIC_INLINE
void DL_DAC12_enableOutputPin(DAC12_Regs *dac12)
602 dac12->CTL1 |= DAC12_CTL1_OPS_OUT0;
610 __STATIC_INLINE
void DL_DAC12_disableOutputPin(DAC12_Regs *dac12)
612 dac12->CTL1 &= ~DAC12_CTL1_OPS_MASK;
625 __STATIC_INLINE
bool DL_DAC12_isOutputPinEnabled(
const DAC12_Regs *dac12)
627 return ((dac12->CTL1 & DAC12_CTL1_OPS_MASK) == DAC12_CTL1_OPS_OUT0);
637 __STATIC_INLINE
void DL_DAC12_enableFIFO(DAC12_Regs *dac12)
640 dac12->CTL2 |= DAC12_CTL2_FIFOEN_SET;
650 __STATIC_INLINE
void DL_DAC12_disableFIFO(DAC12_Regs *dac12)
653 dac12->CTL2 &= ~DAC12_CTL2_FIFOEN_MASK;
666 __STATIC_INLINE
bool DL_DAC12_isFIFOEnabled(
const DAC12_Regs *dac12)
668 uint32_t t = (dac12->CTL2 & DAC12_CTL2_FIFOEN_MASK);
669 return (t == DAC12_CTL2_FIFOEN_SET);
683 __STATIC_INLINE DL_DAC12_FIFO_THRESHOLD DL_DAC12_getFIFOThreshold(
684 const DAC12_Regs *dac12)
686 uint32_t fifoThreshold = (dac12->CTL2 & DAC12_CTL2_FIFOTH_MASK);
688 return (DL_DAC12_FIFO_THRESHOLD)(fifoThreshold);
704 __STATIC_INLINE
void DL_DAC12_setFIFOThreshold(
705 DAC12_Regs *dac12, DL_DAC12_FIFO_THRESHOLD fifoThreshold)
708 &dac12->CTL2, (uint32_t) fifoThreshold, DAC12_CTL2_FIFOTH_MASK);
722 __STATIC_INLINE DL_DAC12_FIFO_TRIGGER DL_DAC12_getFIFOTriggerSource(
723 const DAC12_Regs *dac12)
725 uint32_t fifoTrig = (dac12->CTL2 & DAC12_CTL2_FIFOTRIGSEL_MASK);
727 return (DL_DAC12_FIFO_TRIGGER)(fifoTrig);
741 __STATIC_INLINE
void DL_DAC12_setFIFOTriggerSource(
742 DAC12_Regs *dac12, DL_DAC12_FIFO_TRIGGER fifoTrig)
745 &dac12->CTL2, (uint32_t) fifoTrig, DAC12_CTL2_FIFOTRIGSEL_MASK);
761 __STATIC_INLINE
void DL_DAC12_enableDMATrigger(DAC12_Regs *dac12)
764 dac12->CTL2 |= DAC12_CTL2_DMATRIGEN_SET;
774 __STATIC_INLINE
void DL_DAC12_disableDMATrigger(DAC12_Regs *dac12)
777 dac12->CTL2 &= ~DAC12_CTL2_DMATRIGEN_MASK;
790 __STATIC_INLINE
bool DL_DAC12_isDMATriggerEnabled(
const DAC12_Regs *dac12)
792 uint32_t t = (dac12->CTL2 & DAC12_CTL2_DMATRIGEN_MASK);
793 return (t == DAC12_CTL2_DMATRIGEN_SET);
805 __STATIC_INLINE
void DL_DAC12_enableSampleTimeGenerator(DAC12_Regs *dac12)
808 dac12->CTL3 |= DAC12_CTL3_STIMEN_SET;
818 __STATIC_INLINE
void DL_DAC12_disableSampleTimeGenerator(DAC12_Regs *dac12)
821 dac12->CTL3 &= ~DAC12_CTL3_STIMEN_MASK;
834 __STATIC_INLINE
bool DL_DAC12_isSampleTimeGeneratorEnabled(
835 const DAC12_Regs *dac12)
837 uint32_t t = (dac12->CTL3 & DAC12_CTL3_STIMEN_MASK);
838 return (t == DAC12_CTL3_STIMEN_SET);
850 __STATIC_INLINE DL_DAC12_SAMPLES_PER_SECOND DL_DAC12_getSampleRate(
851 const DAC12_Regs *dac12)
853 uint32_t sampleRate = (dac12->CTL3 & DAC12_CTL3_STIMCONFIG_MASK);
855 return (DL_DAC12_SAMPLES_PER_SECOND)(sampleRate);
870 __STATIC_INLINE
void DL_DAC12_setSampleRate(
871 DAC12_Regs *dac12, DL_DAC12_SAMPLES_PER_SECOND sampleRate)
874 &dac12->CTL3, (uint32_t) sampleRate, DAC12_CTL3_STIMCONFIG_MASK);
889 __STATIC_INLINE
bool DL_DAC12_isCalibrationRunning(
const DAC12_Regs *dac12)
891 uint32_t t = (dac12->CALCTL & DAC12_CALCTL_CALON_MASK);
892 return (t == DAC12_CALCTL_CALON_ACTIVE);
915 __STATIC_INLINE
void DL_DAC12_startCalibration(DAC12_Regs *dac12)
918 (DAC12_CALCTL_CALON_ACTIVE | DAC12_CALCTL_CALSEL_SELFCALIBRATIONTRIM);
934 __STATIC_INLINE uint32_t DL_DAC12_getCalibrationData(
const DAC12_Regs *dac12)
936 return (dac12->CALDATA & DAC12_CALDATA_DATA_MASK);
951 void DL_DAC12_performSelfCalibrationBlocking(DAC12_Regs *dac12);
970 __STATIC_INLINE
void DL_DAC12_output8(DAC12_Regs *dac12, uint8_t dataValue)
972 dac12->DATA0 = dataValue;
992 __STATIC_INLINE
void DL_DAC12_output12(DAC12_Regs *dac12, uint32_t dataValue)
994 dac12->DATA0 = (dataValue & DAC12_DATA0_DATA_VALUE_MASK);
1012 uint32_t DL_DAC12_fillFIFO8(
1013 DAC12_Regs *dac12,
const uint8_t *buffer, uint32_t count);
1030 uint32_t DL_DAC12_fillFIFO12(
1031 DAC12_Regs *dac12,
const uint16_t *buffer, uint32_t count);
1041 void DL_DAC12_outputBlocking8(DAC12_Regs *dac12, uint8_t data);
1051 void DL_DAC12_outputBlocking12(DAC12_Regs *dac12, uint16_t data);
1070 __STATIC_INLINE uint32_t DL_DAC12_getInterruptStatus(
1071 const DAC12_Regs *dac12, uint32_t interruptMask)
1073 return (dac12->CPU_INT.RIS & interruptMask);
1087 __STATIC_INLINE
void DL_DAC12_clearInterruptStatus(
1088 DAC12_Regs *dac12, uint32_t interruptMask)
1090 dac12->CPU_INT.ICLR = interruptMask;
1102 __STATIC_INLINE
void DL_DAC12_enableInterrupt(
1103 DAC12_Regs *dac12, uint32_t interruptMask)
1105 dac12->CPU_INT.IMASK |= interruptMask;
1117 __STATIC_INLINE
void DL_DAC12_disableInterrupt(
1118 DAC12_Regs *dac12, uint32_t interruptMask)
1120 dac12->CPU_INT.IMASK &= ~interruptMask;
1138 __STATIC_INLINE DL_DAC12_IIDX DL_DAC12_getPendingInterrupt(
1139 const DAC12_Regs *dac12)
1141 return ((DL_DAC12_IIDX) dac12->CPU_INT.IIDX);
1157 __STATIC_INLINE
bool DL_DAC12_isFIFOFull(
const DAC12_Regs *dac12)
1160 DL_DAC12_getInterruptStatus(dac12, DL_DAC12_INTERRUPT_FIFO_FULL);
1161 return (t == DL_DAC12_INTERRUPT_FIFO_FULL);
1172 __STATIC_INLINE
void DL_DAC12_setPublisherChanID(
1173 DAC12_Regs *dac12, uint8_t chanID)
1175 dac12->FPUB_1 = (chanID & DAC12_FPUB_1_CHANID_MAXIMUM);
1186 __STATIC_INLINE uint8_t DL_DAC12_getPublisherChanID(
const DAC12_Regs *dac12)
1188 return ((uint8_t)((dac12->FPUB_1) & DAC12_FPUB_1_CHANID_MASK));
1200 __STATIC_INLINE
void DL_DAC12_setSubscriberChanID(
1201 DAC12_Regs *dac12, DL_DAC12_SUBSCRIBER_INDEX index, uint8_t chanID)
1203 volatile uint32_t *pReg = &dac12->FSUB_0;
1205 *(pReg + (uint32_t) index) = (chanID & DAC12_FSUB_0_CHANID_MAXIMUM);
1217 __STATIC_INLINE uint8_t DL_DAC12_getSubscriberChanID(
1218 DAC12_Regs *dac12, DL_DAC12_SUBSCRIBER_INDEX index)
1220 volatile uint32_t *pReg = &dac12->FSUB_0;
1222 return ((uint8_t)(*(pReg + (uint32_t) index) & DAC12_FSUB_0_CHANID_MASK));
1232 __STATIC_INLINE
void DL_DAC12_enableEvent(
1233 DAC12_Regs *dac12, uint32_t eventMask)
1235 dac12->GEN_EVENT.IMASK |= (eventMask);
1245 __STATIC_INLINE
void DL_DAC12_disableEvent(
1246 DAC12_Regs *dac12, uint32_t eventMask)
1248 dac12->GEN_EVENT.IMASK &= ~(eventMask);
1262 __STATIC_INLINE uint32_t DL_DAC12_getEnabledEvents(
1263 const DAC12_Regs *dac12, uint32_t eventMask)
1265 return ((dac12->GEN_EVENT.IMASK) & (eventMask));
1284 __STATIC_INLINE uint32_t DL_DAC12_getEnabledEventStatus(
1285 const DAC12_Regs *dac12, uint32_t eventMask)
1287 return ((dac12->GEN_EVENT.MIS) & eventMask);
1304 __STATIC_INLINE uint32_t DL_DAC12_getRawEventsStatus(
1305 const DAC12_Regs *dac12, uint32_t eventMask)
1307 return ((dac12->GEN_EVENT.RIS) & eventMask);
1317 __STATIC_INLINE
void DL_DAC12_clearEventsStatus(
1318 DAC12_Regs *dac12, uint32_t eventMask)
1320 dac12->GEN_EVENT.ICLR |= (eventMask);
__STATIC_INLINE void DL_Common_updateReg(volatile uint32_t *reg, uint32_t val, uint32_t mask)
Writes value to specified register - retaining bits unaffected by mask.
Definition: dl_common.h:63