[技术问答]

想问大家一个问题,关于新塘ML51的ADC

[复制链接]
1189|14
手机看帖
扫描二维码
随时随地手机跟帖
新塘初级用户|  楼主 | 2020-8-8 17:41 | 显示全部楼层 |阅读模式
我用新塘的ML51做ADC通道1的模数转换,用的是例程。但是烧录到开发板后,我去测试他,本来是串口把模数转换的值打印出来,但我发现我把通道一接地了,他还是输出一样的东西,(测试过,接地后
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: ML51 series ADC software trigger on shot demo code
//***********************************************************************************************************
#include "ML51.h"

/******************************************************************************
The main C function.  Program execution starts
here after stack initialization.
******************************************************************************/
void main ()
{
  unsigned int ADCRESULT;
/*
For UART0 P0.5 TXD output setting
* include gipo.c in Library for GPIO mode setting
* include uart.c in Library Setting for UART0
*/
    MFP_P31_UART0_TXD;                              // UART0 TXD use P0.5
    P31_QUASI_MODE;                                 // set P0.5  as Quasi mode for UART0 trasnfer
    UART_Open(24000000,UART0_Timer3,115200);        // Open UART0 use timer1 as baudrate generate and baud rate = 115200
    ENABLE_UART0_PRINTF;  
/*
  ADCS to trig ADC convert
  * include adc.c in Library for ADC initial setting
*/
    ADC_Open(ADC_SINGLE,1);                                        //Enable ADC_CH4
    ADC_ConvertTime(3,7);
/* find ADC result in ADC interrupt*/
                                            
    while(1)
    {
        set_ADCCON0_ADCS;                           // Software trig adc start
        while((ADCCON0|CLR_BIT7)==CLR_BIT7);         // wait ADCF = 1;
        ADCRESULT = (ADCRH<<4)+ADCRL;
        printf("\n ADC result = 0x%X  ", ADCRESULT);
        Timer0_Delay(24000000,100,1000);
    }
  
}


通道一电压0V)

ADC_Simple.zip

700.96 KB

使用特权

评论回复
新塘初级用户|  楼主 | 2020-8-8 17:41 | 显示全部楼层
大家有遇到过这个现象的吗

使用特权

评论回复
新塘初级用户|  楼主 | 2020-8-8 17:42 | 显示全部楼层
不管通道一接了啥,串口都是打印出了0XFFF

使用特权

评论回复
zhamatu| | 2020-8-9 20:01 | 显示全部楼层
要么是通道没有切换正确,要么是数据溢出或者处理不对。

使用特权

评论回复
评论
新塘初级用户 2020-8-10 11:23 回复TA
通道应该没错,用了例程里面的通道一,数据溢出应该也不可能,我都直接接地了 
很可能就是初始化不对,建议参考官方的示例进行初始化,然后输出数据。

使用特权

评论回复
评论
新塘初级用户 2020-8-10 11:21 回复TA
就是参考官方例程 
jiekou001| | 2020-8-9 22:38 | 显示全部楼层
VREF没有接吧

使用特权

评论回复
jiekou001| | 2020-8-9 22:54 | 显示全部楼层
参考电压的端口没有接电压。

使用特权

评论回复
评论
新塘初级用户 2020-8-10 11:21 回复TA
用的是内部参考电压 
lin0406| | 2020-8-10 15:19 | 显示全部楼层
看不懂啊

使用特权

评论回复
评论
新塘初级用户 2020-8-11 09:14 回复TA
就是用官方的例程做AD转换,数据会溢出,直接接0电压,会偶尔有几个串口打印0,其他也全部溢出 
xxyyzz123| | 2020-8-11 11:21 | 显示全部楼层
不用新唐的东西,因为不好采购。
台系的,都很难合作

使用特权

评论回复
新塘初级用户|  楼主 | 2020-8-13 09:57 | 显示全部楼层
问题解决了,原来是没有使能VREF
ENABLE_VREF_2560MV;

使用特权

评论回复
稳稳の幸福| | 2020-8-24 11:56 | 显示全部楼层
这个功能不错,还带内部多个参考电压可以选择。

使用特权

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

本版积分规则

6

主题

36

帖子

0

粉丝