zyq 发表于 2022-6-14 13:37:53

请原厂工程师解释一下adc的例程

LG048的adc例程中有一个adc触发模式(BSTIM16), 请问是如何触发的,为什么程序里还是循环工做方式,没看到触发方式。另外程序还有几个配置错误,是否修改一下。

谢谢!

顾博文 发表于 2022-6-15 08:31:58

在BSTIM16 中断函数里 有ADCCompete 这个标志。bstim16沿触发了adc,并产生bstim16中断,置位这个ADCCompete。 在adc查询函数里会判断这个标志是否被置1 。没被置1说明没有触发adc。 会一直查询等待这个标志。你可以把adc查询函数的ADCCompete这个标志 放到adc查询函数 外部来查询。 需要将adc采样1.22Vref与adc采样外部引脚电压的初始化也般到查询函数外部。可以参考adc单端中断例程来做。 和adc单端中断这个例程唯一不同的是 一个是用一个BStim16触发一次adc,另一个使用adc软件bit位触发一次adc。

zyq 发表于 2022-6-15 12:25:45

我理解是定时器定时到了应该自动触发AD转换,而程序中有如下语句:
   FL_ADC_ClearFlag_EndOfConversion(ADC);//清标志
    FL_ADC_Enable(ADC);      // 启动ADC
    FL_ADC_EnableSWConversion(ADC);// 开始转换
我理解这是人工启动转换,跟定时器自动启动没有关系。
另外adc触发模式(BSTIM16)例程中根本没有ADCCompete这个变量,请版主再确认一下

zyq 发表于 2022-6-15 17:06:18

我用的是老版本例程,今天才看到新版本程序,我再仔细看看,谢谢!

zyq 发表于 2022-6-15 17:07:34

顾博文 发表于 2022-6-15 08:31
在BSTIM16 中断函数里 有ADCCompete 这个标志。bstim16沿触发了adc,并产生bstim16中断,置位这个ADCCompet ...

我用的是老版本程序,今天才看到新程序。我再看看,谢谢!
页: [1]
查看完整版本: 请原厂工程师解释一下adc的例程