工具与软件:
大家好、我在 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。