[demo程序] NV32F101x-模数转换试验(FIFO模式软件触发)

[复制链接]
 楼主| 詹求实 发表于 2020-5-28 10:14 | 显示全部楼层 |阅读模式
/**********************************************************************
*
* 实验名称:模数转换试验(FIFO模式软件触发)
* 实验平台:NV32开发板
* 板载芯片:NV32F101FL64E
* 实验效果:FIFO深度设定为3级,初始化ADC模块后,当FIFO采集数据满则开始
*           转换,然后通过读取转换结果寄存器读取FIFO中的转换结果。每次
*           读取一个转换结果读取3次
*
************************************************************************/

 楼主| 詹求实 发表于 2020-5-28 10:16 | 显示全部楼层
  1. #include "common.h"
  2. #include "ics.h"
  3. #include "rtc.h"
  4. #include "uart.h"
  5. #include "adc.h"
  6. #include "pmc.h"
  7. #include "sysinit.h"

  8. /**********************************************************************/
  9. uint16_t u16ADC_ConversionBuff[16];
  10. uint16_t u16ADC_ConversionCount = 0;
  11. volatile uint8_t  u8ADC_ConversionFlag = 0;

  12. int main (void);
  13. void ADC0_CallBack( void );
  14. /******************************************************************************/

  15. int main (void)
  16. {
  17.     uint8_t         u8Ch;
  18.     ADC_ConfigType  sADC_Config = {0};

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

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

  32.                
  33.         while(1)
  34.         {
  35.               /*选择通道开始转换*/
  36.               u8ADC_ConversionFlag = 0;
  37.         ADC_SetChannel(ADC0,ADC_CHANNEL_AD14_TEMPSENSOR);
  38.         ADC_SetChannel(ADC0,ADC_CHANNEL_AD29_VREFH);
  39.         ADC_SetChannel(ADC0,ADC_CHANNEL_AD30_VREFL);
  40.         /*等待转化完成 */
  41.         while( !u8ADC_ConversionFlag);

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

  45.             printf("0x%x,",u16ADC_ConversionBuff[u8Ch]);
  46.         }
  47.         printf("\r\n");
  48.         printf("input any character to start a new conversion!\r\n");
  49.         u8Ch = UART_GetChar(TERM_PORT);
  50.         u16ADC_ConversionCount = 0;
  51.         }

  52. }
 楼主| 詹求实 发表于 2020-5-28 10:16 | 显示全部楼层
  1. /***************************************************************************
  2. +FUNCTION----------------------------------------------------------------
  3. *
  4. * [url=home.php?mod=space&uid=247401]@brief[/url]  ADC回调函数中,在回调函数里读取转换结果
  5. *        
  6. * @param  none
  7. *
  8. * [url=home.php?mod=space&uid=266161]@return[/url] none
  9. *

  10. *****************************************************************************/

  11. void ADC0_CallBack( void )
  12. {   
  13.        
  14.     while( !ADC_IsFIFOEmptyFlag(ADC0) ) //结果FIFO中有有效的新数据
  15.     {
  16.         if( u16ADC_ConversionCount < 3 )  //读取转换结果,将结果FIFO中的数据全部读出
  17.         {
  18.             u16ADC_ConversionBuff[u16ADC_ConversionCount++] = ADC_ReadResultReg(ADC0);
  19.         }
  20.         else
  21.         {
  22.             ADC_ReadResultReg(ADC0); //读转换结果寄存器
  23.         }               
  24.     }

  25.     u8ADC_ConversionFlag = 1;
  26. }
  27. /********************************************************************/
uiint 发表于 2020-6-3 20:07 | 显示全部楼层
FIFO模式软件触发?  
hellosdc 发表于 2020-6-3 20:07 | 显示全部楼层
模数转换速度快不快呢?  
mituzu 发表于 2020-6-3 20:07 | 显示全部楼层
FIFO采集 很不错呢。
suzhanhua 发表于 2020-6-3 20:07 | 显示全部楼层
转换的速度这么快吗?   
xietingfeng 发表于 2020-6-3 20:07 | 显示全部楼层
为什么不使用DMA呢   
isseed 发表于 2020-6-3 20:08 | 显示全部楼层
给力,学习一下。      
wangdezhi 发表于 2020-6-3 20:08 | 显示全部楼层
这个也是M3内核 的吗   
biechedan 发表于 2020-6-3 20:08 | 显示全部楼层
为什么要使用fifo呢?   
chenci2013 发表于 2020-6-3 20:08 | 显示全部楼层
      
gygp 发表于 2020-6-3 20:08 | 显示全部楼层
模数转换是自带的吗     
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

135

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部