打印
[技术问答]

新手上路:M052的ADC采集问题

[复制链接]
1611|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinshou666|  楼主 | 2015-4-13 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己修改的新唐例子程序,但发现无法采集,程序如下 ,求大神解答
#include <stdio.h>
#include "M051Series.h"
#include "lcd_driver.h"

void SYS_Init(void)
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init System Clock                                                                                       */
    /*---------------------------------------------------------------------------------------------------------*/

    /* Unlock protected registers */
     SYS_UnlockReg();

    /* Enable ADC and PWM23 clock */
    CLK->APBCLK = CLK_APBCLK_PWM23_EN_Msk | CLK_APBCLK_ADC_EN_Msk;

    /* ADC clock source is 22.1184MHz, set divider to (3 + 1), ADC clock is 22.1184/4 MHz */
    CLK->CLKDIV |= (3 << CLK_CLKDIV_ADC_N_Pos);

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock and CycylesPerUs automatically. */
    SystemCoreClockUpdate();

    /*---------------------------------------------------------------------------------------------------------*/

    /* Set P1.0 to AIN0 function */
    SYS->P1_MFP = SYS_MFP_P10_AIN0;

    /* Disable digital input path of analog pin AIN0 to prevent leakage */
    P1->OFFD |= 1 << GPIO_OFFD_OFFD_Pos;

    /* Lock protected registers */
     SYS_LockReg();
}



void ADC_Init(void)
{
    /* Set to convert ADC channel 0 */
    ADC->ADCHER = 0x1;
    /* Enable the ADC converter */
    ADC->ADCR = ADC_ADCR_ADEN_Msk;
}

/* Main function  */
int main(void)
{
    uint32_t u32Data, u32Sum, u32Count;
//     char adc_value[20];

    /* Init System, IP clock and multi-function I/O
       In the end of SYS_Init() will issue SYS_LockReg()
       to lock protected register. If user want to write
       protected register, please issue SYS_UnlockReg()
       to unlock protected register if necessary */
    SYS_Init();



    /* Init ADC to get the value of variable resistor */
    ADC_Init();
                u32Data = 0 ;
    u32Count = 0;
    u32Sum = 0;

    while(1)
    {
        /* Start convert */
        ADC_START_CONV(ADC);

        /* Waiting for convert complete */
        while(ADC_IS_BUSY(ADC));

        /* Read the result from ADC */
        u32Data = ADC->ADDR[0] & ADC_ADDR_RSLT_Msk;

        /* Determine the sum */
        u32Sum += u32Data;
        u32Count++;
        if(u32Count == 128)
        {
            /* Determine the average */
            u32Data = u32Sum / 128;
  
            /* Reset count and sum */
            u32Count = 0;
            u32Sum = 0;
        }
    }
}
沙发
quray1985| | 2015-4-14 21:53 | 只看该作者
楼主这种问题有点难回答,贴了这么多的代码,大家谁有空看呢
不如把具体的问题写出来,让大家分析一下

使用特权

评论回复
板凳
734774645| | 2015-4-14 23:46 | 只看该作者
搞不懂楼主采集完后怎么查看的,莫名其妙的感觉。

使用特权

评论回复
地板
734774645| | 2015-4-14 23:46 | 只看该作者
建议楼主先调试好一个串口的程序,然后在这个基础上再做这个,这样就可以通过串口读取转换的结果了。

使用特权

评论回复
5
xinshou666|  楼主 | 2015-4-25 14:08 | 只看该作者
quray1985 发表于 2015-4-14 21:53
楼主这种问题有点难回答,贴了这么多的代码,大家谁有空看呢
不如把具体的问题写出来,让大家分析一下 ...

能说一下QQ么   有具体的想问你

使用特权

评论回复
6
稳稳の幸福| | 2015-4-25 16:53 | 只看该作者
:lol应该问题不大,这个芯片没用过,用过058

使用特权

评论回复
7
quray1985| | 2015-4-28 23:34 | 只看该作者
xinshou666 发表于 2015-4-25 14:08
能说一下QQ么   有具体的想问你

707205943,你加我吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

1

粉丝