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.

[参考译文] TMS320F28379D:TMS320F28379D

Guru**** 2466550 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1490267/tms320f28379d-tms320f28379d

器件型号:TMS320F28379D

工具与软件:

大家好、我在 DAC 外设方面遇到了问题...我计划为此生成一个正弦波、我从 TI 库中获取了示例代码...

我还提供了我现在的代码。

void main (void)

//初始化器件时钟和外设
device_init();
device_initGPIO();

//初始化调试 LED
GPIO_setPadConfig (DEVICE_GPIO_PIN_LED2、GPIO_PIN_TYPE_STD);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_LED2、GPIO_DIR_MODE_OUT);

//配置 GPIO 引脚以用作 DAC 输出
// GPIO_setPinConfig (GPIO_41_DACAOUT);//将 DACA 路由到 GPIO 41
// GPIO_setPinConfig (GPIO_42_DACBOUT);//将 DACB 路由到 GPIO 42
// GPIO_setPinConfig (GPIO_43_DACCOUT);//将 DACC 路由到 GPIO 43

//初始化 PIE 并配置中断
Interrupt_initModule();
interrupt_initVectorTable();
DAC_enableOutput (DACA_BASE);
DAC_enableOutput (DACB_BASE);

//生成正弦波查找表

//启用全局中断
EINT;
ERTM;

//配置 DAC 和 CPU 计时器
configureDAC();
configureCPUTimer();

//无限循环(在 ISR 中进行 DAC 更新)
while (1)

}
}

//配置 DAC
void configureDAC (void)

EALLOW;

//将基准电压设置为 VREFHI (3.3V)
DAC_setReferenceVoltage (DACA_BASE、DAC_REF_ADC_VREFHI);
DAC_setReferenceVoltage (DACB_BASE、DAC_REF_ADC_VREFHI);

//启用 DAC 输出
DAC_enableOutput (DACA_BASE);
DAC_enableOutput (DACB_BASE);

/* EALLOW;
HWREG (GPIOCTRL_base + GPIO_GPBMUX1)|=(1U << 18);//将 GPIO41设置为 DAC 模式
HWREG (GPIOCTRL_base + GPIO_GPBMUX1)|=(1U << 20);//将 GPIO42设置为 DAC 模式
HWREG (GPIOCTRL_base + GPIO_GPBMUX1)|=(1U << 22);//将 GPIO43设置为 DAC 模式
EDIS;*/


//最初将 DAC 影子输出设置为中标度
DAC_setShadowValue (daca_base、sinewave[0]);
// DAC_setShadowValue (DACB_BASE、sinewave[SAMPLE_PER_CYCLE / 4]);// 90度相移

// DAC 上电延迟
DEVICE_DELAY_US (10);
EDIS;
}

//配置用于 DAC 更新的 CPU 计时器
void configureCPUTimer (void)

CPUTimer_setPeriod (CPUTIMER0_BASE、TIMER_PERIOD);
CPUTimer_setPreScale (CPUTIMER0_BASE、0);
CPUTimer_stopTimer (CPUTIMER0_BASE);
CPUTimer_reloadTimerCounter (CPUTIMER0_BASE);

CPUTimer_enableInterrupt (CPUTIMER0_BASE);
// Register Timer ISR
interrupt_register (INT_TIMER0、&cpuTimerISR);
INTERRUPT_ENABLE (INT_TIMER0);

//启动计时器
CPUTimer_startTimer (CPUTIMER0_BASE);
}

// CPU 计时器 ISR -更新 DAC 输出
__interrupt void cpuTimerISR (void)

GPIO_togglePin (DEVICE_GPIO_PIN_LED2);
//通过正弦波更新 DAC-A


DAC_setShadowValue (daca_base、sinewave[indexA]);


//使用90度相移更新 DAC-B
DAC_setShadowValue (DACB_BASE、sinewave[indexB]);

//递增索引并绕回
indexa =(indexa + 1)% Samples_per_cycle;
// indexB =(indexB + 1)% Samples_per_cycle;

//确认中断
interrupt_clearACKGroup (INTERRUPT_ACK_GROUP1);
}

但是,我看不到 DAC 引脚的任何输出,请帮助解决这个问题。

此致、

Geethanjali Pinnu。