This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-F28379D: PWMDAC OUTPUT ENABLE

Part Number: LAUNCHXL-F28379D

Gentlemen, good day

Can you provide me with or suggest an example on how to enable the PWMDAC pins (dac1, 2, 3 , 4 ) of F28379D ? Searching in the forum, a topic was found in which a member suggested to use "buffer dac sine" example. However, I believe that this code does not give much info on how to enable those pins.

Reading the document the Technical Reference Manual - "spruhm8h", I found this info on the pages 1810 - 1811

Example 15-5. PWM DAC Function Initialization Code

void HrPwmDacDrvCnf(void)
{
// Config for conventional PWM first
EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // Set Immediate load
EPwm1Regs.TBPRD = 250; // Period set for 400 kHz PWM
hrDAC_period = 250; // Used for Q15 to Q0 scaling
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // EPWM1 is the Master
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
// Note: ChB is initialized here only for comparison purposes, it is not required
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // optional
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; // optional
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // optional
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // optional
// Now configure the HRPWM resources
EALLOW; // Note these registers are protected
// and act only on ChA.
EPwm1Regs.HRCNFG.all = 0x0; // Clear all bits first
EPwm1Regs.HRCNFG.bit.EDGMODE = HR_FEP; // Control falling edge position
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP; // CMPAHR controls the MEP.
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; // Shadow load on CTR=Zero.
EDIS;
MEP_ScaleFactor = 66*256; // Start with typical Scale Factor
// value for 100 MHz.
// Use SFO functions t

Example 15-6. PWM DAC Function Run-Time Code

EPWM1_BASE .set 0x6800
CMPAHR1 .set EPWM1_BASE+0x8
;=================================================
HRPWM_DAC_DRV; (can execute within an ISR or loop)
;=================================================
MOVW DP, #_HRDAC_In
MOVL XAR2,@_HRDAC_In ; Pointer to input Q15 duty (XAR2)
MOVL XAR3,#CMPAHR1 ; Pointer to HRPWM CMPA reg (XAR3)
; Output for EPWM1A (HRPWM
MOV T,*XAR2 ; T <= duty
MPY ACC,T,@_hrDAC_period ; Q15 to Q0 scaling based on period
ADD ACC,@_HrDAC_period<<15 ; Offset for bipolar operation
MOV T,@_MEP_ScaleFactor ; MEP scale factor (from optimizer s/w)
MPYU P,T,@AL ; P <= T * AL, optimizer scaling
MOVH @AL,P ; AL <= P, move result back to ACC
ADD ACC, #0x080 ; MEP range and rounding adjustment
MOVL *XAR3,ACC ; CMPA:CMPAHR(31:8) <= ACC
; Output for EPWM1B (Regular Res) Optional - for comparison purpose only
MOV *+XAR3[2],AH ; Store ACCH to regular CMPB

I could not understand anything about the example 15-6 above.

  • Hi,

    You can refer to the section "Implementing a DAC function Using an R+C Reconstruction Filter".
    Pin configuration is same as any PWM output. Note that in this case you are modulating the PWM output and with external circuitry shown in "Figure 15-91. Simple Reconstruction Filter for a PWM-based DAC" you can achieve the DAC function.
    So, the output is normal PWM output as shown in the figure - RC filter already exists on the launch pad if you are using one.
    You can configure and enable PWM output on corresponding PWM DAC refer to launch pad schematics you are using.
    www.ti.com/.../sprui77c.pdf Figure 6. P05_PWM-DAC for details.