TI-RTOS模块驱动示例-DAC模块

109 阅读1分钟

1.1 配置
APIs位置:
file:///C:/ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_d_a_c_8h.html#ti_drivers_DAC_Examples
syscfg配置:
在这里插入图片描述

1.2 代码
在static void ProjectZero_init(void)中添加如下函数
void dac_test(void)
{
// One-time init of DAC driver
DAC_init();

// Initialize optional DAC parameters
DAC_Params_init(&params_dac);
// Open DAC channels for usage
dacHandle = DAC_open(CONFIG_DAC_0, &params_dac);
if (dacHandle == NULL) {
    // DAC_open() failed
    while (1) {
        Log_error0("DAC_open() failed!!!");
    }
}

// Enable the DAC channel

DAC_enable(dacHandle);
// Output using the DAC
DAC_setCode(dacHandle, 0);

// // Disable the DAC channel
// DAC_disable(dacHandle);
// // Close the DAC channel
// DAC_close(dacHandle);
}

在模块驱动示例 的定时器回调函数中添加
DAC_setCode(dacHandle, adcValue_test);

1.3 现象
仿真时在Watch Expressions视图中调节全局变量adcValue_test(0-255)即可观察DAC输出

1.4 问题
如下图所示,是 DAC输出的电压,在数值从127跳转到128后,理论上电压应该变大,但是实测却向下跳变了118mV
在这里插入图片描述

1.5 问题排查及注意事项

  • 前后半段DAC输出的斜率是几乎一样的(百分之一以内误差)

  • 下载DAC相关示例,同样存在此问题,如下图,波形中间有跳变

  • 在这里插入图片描述

  • 询问FAE未果后,已在TI论坛发起提问:CC2652R: 控制8位精度DAC出现跳动问题

    • 问题进度:SDK更新最新版本,如下方法切换SDK(没有起作用)
      在这里插入图片描述
    • FAE已复现问题,已向TI team提交问题
    • 最新进展
      在这里插入图片描述

注意事项:
注意:
ADC(12位)和DAC(8位)的分辨度不一样,不能直接把ADC读取出来的值赋值给ADC;
使用DAC_setVoltage(DAC_Handle handle, uint32_t uVoltOutput)输出电压时,有的值不准,使用DAC_setCode(DAC_Handle handle, uint32_t code)代替;
DAC最大输出只能到3.0V;
参考电压改为ADCREF不能输出电压;
注意DAC和ADC都是用的ADC0,只不过是不同的通道;
DAC输出0时会有10.4mV的电压,同样引脚设置为GPIO,设置为0后输出0V;