查看: 3903|回复: 8

[已解决] KE02 ADC模块配置问题

[复制链接]

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
86
最后登录
2018-3-26
发表于 2016-10-21 17:25:23 | 显示全部楼层 |阅读模式
使用KE02芯片的ADC模块时,我用的是ADC0_SE11,要不要把相应的引脚配置成模拟输入模式,如果要,是不是写成如下:
               GPIO_Init(GPIOA, GPIO_PTC3_MASK, GPIO_PinInput);  备注:PTC3就是ADC0_SE11
还有一个问题,配置ADC模块如下
/* initiaze ADC module */
    sADC_Config.u8ClockDiv = ADC_ADIV_DIVIDE_4;
    sADC_Config.u8ClockSource = CLOCK_SOURCE_BUS_CLOCK;
    sADC_Config.u8Mode = ADC_MODE_12BIT;
    sADC_Config.sSetting.bIntEn = 1;
    sADC_Config.u8FiFoLevel = ADC_FIFO_LEVEL2;
    ADC_SetCallBack(ADC_CallBack);
    ADC_Init( ADC, &sADC_Config);

   ADC_SetChannel(ADC,ADC_CHANNEL_AD11);
   ADC_SetChannel(ADC,ADC_CHANNEL_AD22_TEMPSENSOR);

其中的
    sADC_Config.u8Mode = ADC_MODE_12BIT;  //是否转换出来的数据是12位的?
   
    sADC_Config.u8FiFoLevel = ADC_FIFO_LEVEL2; //等级为2是什么意思?

    ADC_SetChannel(ADC,ADC_CHANNEL_AD11);
   ADC_SetChannel(ADC,ADC_CHANNEL_AD22_TEMPSENSOR);//  我要使用通道11为什么还要加上下面这句设置通道22?
是什么意思?求大神解答一下,不胜感激!





最佳答案

liqing666 发表于 2016-10-25 19:26 但是我看官方提供的代码FIFO等级是这么定义的: /**************************************************** ... 你好! 这个注释有歧义。 #define ADC_FIFO_LEVEL2   &nb ...
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24858
最后登录
2025-7-17
发表于 2016-10-24 10:33:46 | 显示全部楼层
楼主你好!
回答你的几个问题:
1. ADC0_SE11,要不要把相应的引脚配置成模拟输入模式?
是的,不过,配置不是在GPIO中配置,而是在ADC_APCTL1寄存器中配置,使能ADP11。
代码你可以参考官方的KE driver:
http://www.nxp.com/webapp/sps/do ... nt_pageType=product
ADC_Init 中有一句:
    /* set pin control */
    pADC->APCTL1 = pADC_Config->u16PinControl;
就是用来配置ADC通道的引脚功能的。
2.     sADC_Config.u8Mode = ADC_MODE_12BIT;  //是否转换出来的数据是12位的?
是的,这个模式就是配置转换位数的,具体你在reference manual 的ADC章节也可以看到。
   
3     sADC_Config.u8FiFoLevel = ADC_FIFO_LEVEL2; //等级为2是什么意思?

2级FIFO, 也就是你配置设置通道转换2次,然后等待转换完成之后,可以读两次,这个ADC buff是2级的,第一次读取的是你第一次配置的转换通道,第二次读取的是你第二次配置的转换通道。
4    ADC_SetChannel(ADC,ADC_CHANNEL_AD11);
    ADC_SetChannel(ADC,ADC_CHANNEL_AD22_TEMPSENSOR);//  我要使用通道11为什么还要加上下面这句设置通道22?
具体解释参考问题3, 这个就是为什么配置为FIFO为2级的原因,也就是对应两个通道转换。

希望能帮到你,如果还有问题,欢迎继续交流!

回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
86
最后登录
2018-3-26
 楼主| 发表于 2016-10-25 14:28:46 | 显示全部楼层
好的,谢谢!
回复

使用道具 举报

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
86
最后登录
2018-3-26
 楼主| 发表于 2016-10-25 14:36:31 | 显示全部楼层
小恩GG 发表于 2016-10-24 10:33
楼主你好!
回答你的几个问题:
1. ADC0_SE11,要不要把相应的引脚配置成模拟输入模式?

那我如果只要使用一个通道11呢?设置等级为1么?可是我没有看到LEVEL1啊,LEVEL2上面就是disable了,求解?
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24858
最后登录
2025-7-17
发表于 2016-10-25 17:32:52 | 显示全部楼层
liqing666 发表于 2016-10-25 14:36
那我如果只要使用一个通道11呢?设置等级为1么?可是我没有看到LEVEL1啊,LEVEL2上面就是disable了,求解 ...

你说的是FIFO 等级对吧?
只使用一个通道,就设置为1好了。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
86
最后登录
2018-3-26
 楼主| 发表于 2016-10-25 19:26:05 | 显示全部楼层
小恩GG 发表于 2016-10-25 17:32
你说的是FIFO 等级对吧?
只使用一个通道,就设置为1好了。

但是我看官方提供的代码FIFO等级是这么定义的:
/******************************************************************************
* define ADC FIFO_LEVEL
*
*//*! @addtogroup adc_fifo_level_list
* @{
*******************************************************************************/
#define ADC_FIFO_DISABLE                                0 /*!< FIFO Level 0 */
#define ADC_FIFO_LEVEL2                                 1 /*!< FIFO Level 1 */
#define ADC_FIFO_LEVEL3                                 2 /*!< FIFO Level 2 */
#define ADC_FIFO_LEVEL4                                 3 /*!< FIFO Level 3 */
#define ADC_FIFO_LEVEL5                                 4 /*!< FIFO Level 4 */
#define ADC_FIFO_LEVEL6                                 5 /*!< FIFO Level 5 */
#define ADC_FIFO_LEVEL7                                 6 /*!< FIFO Level 6 */
#define ADC_FIFO_LEVEL8                                 7        /*!< FIFO Level 7 */
/*! @} End of adc_fifo_level_list           
ADC_FIFO_LEVEL2实际上就是level1,这是为什么,是因为ADC_SetChannel(ADC,ADC_CHANNEL_AD22_TEMPSENSOR);这个通道必须打开么?
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24858
最后登录
2025-7-17
发表于 2016-10-26 09:54:02 | 显示全部楼层
liqing666 发表于 2016-10-25 19:26
但是我看官方提供的代码FIFO等级是这么定义的:
/**************************************************** ...

你好!
这个注释有歧义。
#define ADC_FIFO_LEVEL2                                 1 /*!< FIFO Level 1 */
其实这个是配置寄存器ADC_SC4[AFDEP], 值为0, 关闭FIFO。
值为1, 2级FIFO。
所以,如果你不想用FIFO, 可以配置为DISABLE,或者直接初始化的时候,不配置FIFO选项,这样默认就是关闭FIFO的。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

19

帖子

0

注册会员

Rank: 2

积分
86
最后登录
2018-3-26
 楼主| 发表于 2016-10-27 20:27:20 | 显示全部楼层
小恩GG 发表于 2016-10-26 09:54
你好!
这个注释有歧义。
#define ADC_FIFO_LEVEL2                                 1 /*!< FIFO Level  ...

恩恩,已经看懂了,非常感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24858
最后登录
2025-7-17
发表于 2016-10-28 09:24:03 | 显示全部楼层
liqing666 发表于 2016-10-27 20:27
恩恩,已经看懂了,非常感谢!

不客气,后续有问题,欢迎继续发帖交流!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-18 14:47 , Processed in 0.110776 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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