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(¶ms_dac);
// Open DAC channels for usage
dacHandle = DAC_open(CONFIG_DAC_0, ¶ms_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提交问题
- 最新进展
- 问题进度:SDK更新最新版本,如下方法切换SDK(没有起作用)
注意事项:
注意:
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;