打印
[demo程序]

ADC的FIFO操作方法

[复制链接]
929|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小明的同学|  楼主 | 2020-3-24 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**********************************************************************
*
* 实验名称:模数转换试验(FIFO模式软件触发)
* 实验平台:NV32开发板
* 板载芯片:NV32F100FL64E
* 实验效果:FIFO深度设定为3级,初始化ADC模块后,当FIFO采集数据满则开始
*           转换,然后通过读取转换结果寄存器读取FIFO中的转换结果。每次
*           读取一个转换结果读取3次
*
************************************************************************/

#include "common.h"
#include "ics.h"
#include "rtc.h"
#include "uart.h"
#include "adc.h"
#include "pmc.h"
#include "sysinit.h"

/**********************************************************************/
uint16_t u16ADC_ConversionBuff[16];
uint16_t u16ADC_ConversionCount = 0;
volatile uint8_t  u8ADC_ConversionFlag = 0;

int main (void);
void ADC_CallBack( void );
/******************************************************************************/

int main (void)
{
    uint8_t         u8Ch;
    ADC_ConfigType  sADC_Config = {0};

    /*系统初始化*/
          sysinit();
          printf("\nRunning the ADC_FIFO_demo project.\r\n");

    UART_WaitTxComplete(TERM_PORT);   
   
    /*初始化ADC模块*/
    sADC_Config.u8ClockDiv = ADC_ADIV_DIVIDE_8;       /*!< ADC时钟源分频系数为8*/
    sADC_Config.u8ClockSource = CLOCK_SOURCE_ADACK;   /*!< ADC时钟源选择异步时钟*/
    sADC_Config.u8Mode = ADC_MODE_12BIT;              /*!< 12位转换*/
    sADC_Config.sSetting.bIntEn = 1;                  /*!< 使能中断*/
    sADC_Config.u8FiFoLevel = ADC_FIFO_LEVEL3;        /*!< 3级FIFO */
    ADC_SetCallBack(ADC_CallBack);
    ADC_Init( ADC, &sADC_Config);           /*!< 初始化ADC*/

               
        while(1)
        {
              /*选择通道开始转换*/
              u8ADC_ConversionFlag = 0;
        ADC_SetChannel(ADC,ADC_CHANNEL_AD22_TEMPSENSOR);
        ADC_SetChannel(ADC,ADC_CHANNEL_AD29_VREFH);
        ADC_SetChannel(ADC,ADC_CHANNEL_AD30_VREFL);
        /*等待转化完成 */
        while( !u8ADC_ConversionFlag);

        printf("ADC conversion result as below:\r\n");
        for( u8Ch =0 ;u8Ch< u16ADC_ConversionCount; u8Ch ++)
        {

            printf("0x%x,",u16ADC_ConversionBuff[u8Ch]);
        }
        printf("\r\n");
        printf("input any character to start a new conversion!\r\n");
       // u8Ch = UART_GetChar(TERM_PORT);
        u16ADC_ConversionCount = 0;
        }

}


/***************************************************************************
+FUNCTION----------------------------------------------------------------
*
* [url=home.php?mod=space&uid=247401]@brief[/url]  ADC回调函数中,在回调函数里读取转换结果
*        
* @param  none
*
* [url=home.php?mod=space&uid=266161]@return[/url] none
*

*****************************************************************************/

void ADC_CallBack( void )
{   
       
    while( !ADC_IsFIFOEmptyFlag(ADC) ) //结果FIFO中有有效的新数据
    {
        if( u16ADC_ConversionCount < 3 )  //读取转换结果,将结果FIFO中的数据全部读出
        {
            u16ADC_ConversionBuff[u16ADC_ConversionCount++] = ADC_ReadResultReg(ADC);
        }
        else
        {
            ADC_ReadResultReg(ADC); //读转换结果寄存器
        }               
    }

    u8ADC_ConversionFlag = 1;
}
/********************************************************************/


使用特权

评论回复

相关帖子

沙发
xixi2017| | 2020-3-26 16:08 | 只看该作者
ARM内核?

使用特权

评论回复
板凳
詹求实| | 2020-3-26 21:47 | 只看该作者

M0的内核,32位的芯片。

使用特权

评论回复
地板
xixi2017| | 2020-3-26 23:09 | 只看该作者
多谢楼上指教

使用特权

评论回复
5
10299823| | 2020-4-5 21:22 | 只看该作者
如何把adc0和adc1 值放入不同的fifo中

使用特权

评论回复
6
lihuami| | 2020-4-5 21:22 | 只看该作者
     

使用特权

评论回复
7
xiaoyaozt| | 2020-4-5 21:22 | 只看该作者
FIFO多大的呢  

使用特权

评论回复
8
uptown| | 2020-4-5 21:22 | 只看该作者
常用的12位ADC有那些?

使用特权

评论回复
9
cehuafan| | 2020-4-5 21:23 | 只看该作者
ADC的采样频率一般为多少  

使用特权

评论回复
10
usysm| | 2020-4-5 21:23 | 只看该作者
ADC有多少通道      

使用特权

评论回复
11
jkl21| | 2020-4-5 21:23 | 只看该作者
ADC重建的原理是什么  

使用特权

评论回复
12
wwppd| | 2020-4-5 21:23 | 只看该作者
谢谢楼主的代码   

使用特权

评论回复
13
maqianqu| | 2020-4-5 21:23 | 只看该作者
SAR ADC是种什么样的ADC呢

使用特权

评论回复
14
dspmana| | 2020-4-5 21:24 | 只看该作者
FIFO模式软件      

使用特权

评论回复
15
cehuafan| | 2020-4-5 21:24 | 只看该作者
      

使用特权

评论回复
16
uptown| | 2020-4-5 21:24 | 只看该作者
自带的ADC吗                  

使用特权

评论回复
17
usysm| | 2020-4-5 21:24 | 只看该作者
ADC的单端输入与差分输入的区别?  

使用特权

评论回复
18
xiaoyaozt| | 2020-4-5 21:24 | 只看该作者
可以存储多少      

使用特权

评论回复
19
jkl21| | 2020-4-5 21:24 | 只看该作者
什么是ADC的中断方式和查询方式  

使用特权

评论回复
20
lihuami| | 2020-4-5 21:24 | 只看该作者
谢谢分享的。   

使用特权

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

本版积分规则

137

主题

1430

帖子

2

粉丝