Cjy_JDxy 发表于 2019-10-30 22:29

EVB板ADC采样试验

今晚捣鼓了一下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);

/**
******************************************************************************
** \briefMain 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

我这分辨率不行啊,你发的图,我啥也看不见。

Cjy_JDxy 发表于 2019-10-31 20:14

键盘手没手 发表于 2019-10-31 19:18
我这分辨率不行啊,你发的图,我啥也看不见。

我告诉你吧,采样值从0到6,最小是0,最大是6.

凡人8000 发表于 2019-11-1 10:47

你没有把板子上的J3短路(如下图),另外程序中还要改一下ADC转换通道为CH15。调节电位器,随着变大变小,ADC的值也在跟着变化,采的值也比较准确。

Cjy_JDxy 发表于 2019-11-1 13:09

凡人8000 发表于 2019-11-1 10:47
你没有把板子上的J3短路(如下图),另外程序中还要改一下ADC转换通道为CH15。调节电位器,随着变大变小,ADC ...

谢谢!CH15已经改了。

Cjy_JDxy 发表于 2019-11-1 19:48

凡人8000 发表于 2019-11-1 10:47
你没有把板子上的J3短路(如下图),另外程序中还要改一下ADC转换通道为CH15。调节电位器,随着变大变小,ADC ...

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



D调胖子 发表于 2019-11-7 14:31

看一下原理图吧,J3是需要短接的!

Cjy_JDxy 发表于 2019-11-7 20:37

D调胖子 发表于 2019-11-7 14:31
看一下原理图吧,J3是需要短接的!

我短接了,不管用。

eelux 发表于 2019-11-9 14:49

Cjy_JDxy 发表于 2019-11-7 20:37
我短接了,不管用。

你的EVB的USB接口需要供电

Cjy_JDxy 发表于 2019-11-10 20:04

eelux 发表于 2019-11-9 14:49
你的EVB的USB接口需要供电

奥,我还没有那种USB线,什么时候买一根。

Cjy_JDxy 发表于 2019-11-10 20:42

各位大神看看,是这种线吗?谢谢!

eelux 发表于 2019-11-11 09:19

Cjy_JDxy 发表于 2019-11-10 20:04
奥,我还没有那种USB线,什么时候买一根。

双11啊

eelux 发表于 2019-11-11 09:21

Cjy_JDxy 发表于 2019-11-7 20:37
我短接了,不管用。

另外想再确认一下,硬件是是否同时短接了:
1、J3;
2、J4的(VRP和ADC-IN)

martinhu 发表于 2019-11-11 09:28

正确接了J3和J4之后,滑动变阻器有没有试着转动,看采样值变化,或者测一测ADC的IO引脚上的电压是否有变化?

Cjy_JDxy 发表于 2019-11-11 10:50

eelux 发表于 2019-11-11 09:21
另外想再确认一下,硬件是是否同时短接了:
1、J3;
2、J4的(VRP和ADC-IN) ...

同时短接了

Cjy_JDxy 发表于 2019-11-11 10:53

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

转动变阻器了。有人说需要接USB线。我还没买呢?我贴了个图,不知道是不是那一种,你帮我看看。谢谢

Cjy_JDxy 发表于 2019-11-11 10:55

eelux 发表于 2019-11-11 09:19
双11啊

你看看我贴的USB线图,是不是那种USB线。谢谢!我今天买。

zljiu 发表于 2019-11-12 16:18

非常感谢楼主分享

D调胖子 发表于 2019-11-14 16:58

C:\Users\wangab\Desktop\ADC 配置.jpg

D调胖子 发表于 2019-11-14 17:02

Cjy_JDxy 发表于 2019-11-11 10:55
你看看我贴的USB线图,是不是那种USB线。谢谢!我今天买。


看看
页: [1] 2
查看完整版本: EVB板ADC采样试验