查看: 4998|回复: 4

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

[复制链接]

3

主题

8

帖子

119

积分

中级工程师

Rank: 2

积分
119
发表于 2022-6-14 13:37:53 | 显示全部楼层 |阅读模式
LG048的adc例程中有一个adc触发模式(BSTIM16), 请问是如何触发的,为什么程序里还是循环工做方式,没看到触发方式。另外程序还有几个配置错误,是否修改一下。

谢谢!
回复

使用道具 举报

155

主题

847

帖子

4665

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4665
发表于 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。
回复

使用道具 举报

3

主题

8

帖子

119

积分

中级工程师

Rank: 2

积分
119
 楼主| 发表于 2022-6-15 12:25:45 | 显示全部楼层
我理解是定时器定时到了应该自动触发AD转换,而程序中有如下语句:
   FL_ADC_ClearFlag_EndOfConversion(ADC);//清标志
    FL_ADC_Enable(ADC);      // 启动ADC
    FL_ADC_EnableSWConversion(ADC);  // 开始转换
我理解这是人工启动转换,跟定时器自动启动没有关系。
另外adc触发模式(BSTIM16)例程中根本没有ADCCompete这个变量,请版主再确认一下
回复

使用道具 举报

3

主题

8

帖子

119

积分

中级工程师

Rank: 2

积分
119
 楼主| 发表于 2022-6-15 17:06:18 | 显示全部楼层
我用的是老版本例程,今天才看到新版本程序,我再仔细看看,谢谢!
回复

使用道具 举报

3

主题

8

帖子

119

积分

中级工程师

Rank: 2

积分
119
 楼主| 发表于 2022-6-15 17:07:34 | 显示全部楼层
顾博文 发表于 2022-6-15 08:31
在BSTIM16 中断函数里 有ADCCompete 这个标志。bstim16沿触发了adc,并产生bstim16中断,置位这个ADCCompet ...

我用的是老版本程序,今天才看到新程序。我再看看,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表