打印

[综合信息] EVB板ADC采样试验

[复制链接]
258|21
跳转到指定楼层
楼主
今晚捣鼓了一下EVB板ADC单次一直采样模式,用板子上的电位器调节。
代码:
#include "adc.h"
#include "gpio.h"
#include "bgr.h"
/******************************************************************************
* Local pre-processor symbols/macros ('#define')                           
******************************************************************************/


/******************************************************************************
* Global variable definitions (declared in header file with 'extern')
******************************************************************************/
volatile uint32_t u32AdcRestult;

/******************************************************************************
* Local type definitions ('typedef')                                         
******************************************************************************/

/******************************************************************************
* Local function prototypes ('static')
******************************************************************************/

/******************************************************************************
* Local variable definitions ('static')                                      *
******************************************************************************/

/*****************************************************************************
* Function implementation - global ('extern') and local ('static')
******************************************************************************/
void App_AdcPortInit(void);
void App_AdcInit(void);
void App_AdcSglCfg(void);

/**
******************************************************************************
** \brief  Main function of project
**
** \return uint32_t return value, if needed
**
** This sample
**
******************************************************************************/
int32_t main(void)
{      

    ///< ADC采样端口初始化
    App_AdcPortInit();

    ///< ADC模块 初始化
    App_AdcInit();

    ///< ADC 单次采样模式 配置
    App_AdcSglCfg();

    while(1)
    {        
        if(TRUE == Adc_GetIrqStatus(AdcMskIrqSgl))
        {
            ///< 获取采样值
            u32AdcRestult = Adc_GetSglResult();
            Adc_ClrIrqStatus(AdcMskIrqSgl);
        }
    }
}

///< ADC 采样端口初始化
void App_AdcPortInit(void)
{   
    ///< 开启ADC/BGR GPIO外设时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

    Gpio_SetAnalogMode(GpioPortC, GpioPin5);        //PA00 (AIN0)
}

///< ADC模块 初始化
void App_AdcInit(void)
{
    stc_adc_cfg_t              stcAdcCfg;

    DDL_ZERO_STRUCT(stcAdcCfg);

    ///< 开启ADC/BGR外设时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralAdcBgr, TRUE);

    Bgr_BgrEnable();                                        ///< 开启BGR

    ///< ADC 初始化配置
    stcAdcCfg.enAdcMode         = AdcSglMode;               ///<采样模式-单次
    stcAdcCfg.enAdcClkDiv       = AdcMskClkDiv1;            ///<采样分频-1
    stcAdcCfg.enAdcSampCycleSel = AdcMskSampCycle12Clk;     ///<采样周期数-12
    stcAdcCfg.enAdcRefVolSel    = AdcMskRefVolSelInBgr2p5;  ///<参考电压选择-内部2.5V
    stcAdcCfg.enAdcOpBuf        = AdcMskBufDisable;         ///<OP BUF配置-关
    stcAdcCfg.enInRef           = AdcMskInRefEnable;        ///<内部参考电压使能-开
    stcAdcCfg.enAdcAlign        = AdcAlignRight;            ///<转换结果对齐方式-右
    Adc_Init(&stcAdcCfg);
}

///< ADC 单次采样模式 配置
void App_AdcSglCfg(void)
{
    ///< 配置单次采样通道
    Adc_CfgSglChannel(AdcExInputCH15);

    ///< 启动单次一直采样
    Adc_SGL_Always_Start();

}

/******************************************************************************
* EOF (not truncated)
******************************************************************************/

效果图:





我有一个问题。为什么采样值那么小呢?谢谢!


沙发
| 2019-10-31 19:18 | 只看该作者
我这分辨率不行啊,你发的图,我啥也看不见。
板凳
 楼主 | 2019-10-31 20:14 | 只看该作者
键盘手没手 发表于 2019-10-31 19:18
我这分辨率不行啊,你发的图,我啥也看不见。

我告诉你吧,采样值从0到6,最小是0,最大是6.
地板
| 2019-11-1 10:47 | 只看该作者
你没有把板子上的J3短路(如下图),另外程序中还要改一下ADC转换通道为CH15。调节电位器,随着变大变小,ADC的值也在跟着变化,采的值也比较准确。
5
 楼主 | 2019-11-1 13:09 | 只看该作者
凡人8000 发表于 2019-11-1 10:47
你没有把板子上的J3短路(如下图),另外程序中还要改一下ADC转换通道为CH15。调节电位器,随着变大变小,ADC ...

谢谢!CH15已经改了。
6
 楼主 | 2019-11-1 19:48 | 只看该作者
凡人8000 发表于 2019-11-1 10:47
你没有把板子上的J3短路(如下图),另外程序中还要改一下ADC转换通道为CH15。调节电位器,随着变大变小,ADC ...

谢谢!短接J3不管用,采样值都是0XFFF.



7
| 2019-11-7 14:31 | 只看该作者
看一下原理图吧,J3是需要短接的!
8
 楼主 | 2019-11-7 20:37 | 只看该作者
D调胖子 发表于 2019-11-7 14:31
看一下原理图吧,J3是需要短接的!

我短接了,不管用。
9
| 2019-11-9 14:49 | 只看该作者
Cjy_JDxy 发表于 2019-11-7 20:37
我短接了,不管用。

你的EVB的USB接口需要供电
10
 楼主 | 2019-11-10 20:04 | 只看该作者
eelux 发表于 2019-11-9 14:49
你的EVB的USB接口需要供电

奥,我还没有那种USB线,什么时候买一根。
11
 楼主 | 2019-11-10 20:42 | 只看该作者
各位大神看看,是这种线吗?谢谢!
12
| 2019-11-11 09:19 | 只看该作者
Cjy_JDxy 发表于 2019-11-10 20:04
奥,我还没有那种USB线,什么时候买一根。

双11啊
13
| 2019-11-11 09:21 | 只看该作者
Cjy_JDxy 发表于 2019-11-7 20:37
我短接了,不管用。

另外想再确认一下,硬件是是否同时短接了:
1、J3;
2、J4的(VRP和ADC-IN)
14
| 2019-11-11 09:28 | 只看该作者
正确接了J3和J4之后,滑动变阻器有没有试着转动,看采样值变化,或者测一测ADC的IO引脚上的电压是否有变化?
15
 楼主 | 2019-11-11 10:50 | 只看该作者
eelux 发表于 2019-11-11 09:21
另外想再确认一下,硬件是是否同时短接了:
1、J3;
2、J4的(VRP和ADC-IN) ...

同时短接了
16
 楼主 | 2019-11-11 10:53 | 只看该作者
martinhu 发表于 2019-11-11 09:28
正确接了J3和J4之后,滑动变阻器有没有试着转动,看采样值变化,或者测一测ADC的IO引脚上的电压是否有变化 ...

转动变阻器了。有人说需要接USB线。我还没买呢?我贴了个图,不知道是不是那一种,你帮我看看。谢谢
17
 楼主 | 2019-11-11 10:55 | 只看该作者

你看看我贴的USB线图,是不是那种USB线。谢谢!我今天买。
18
| 2019-11-12 16:18 | 只看该作者
非常感谢楼主分享
19
| 2019-11-14 16:58 | 只看该作者
C:\Users\wangab\Desktop\ADC 配置.jpg
20
| 2019-11-14 17:02 | 只看该作者
Cjy_JDxy 发表于 2019-11-11 10:55
你看看我贴的USB线图,是不是那种USB线。谢谢!我今天买。


看看
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表
爱投彩票 五福彩票 567彩票 平安彩票是真的吗 华阳彩票 猎豹彩票 网易彩票 吉林快3走势 爱投彩票 鼎鼎彩票