久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1789|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32 adc多通道采集數(shù)據(jù)存儲并DMA傳輸問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:291789 發(fā)表于 2020-3-20 11:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
adc開啟8個(gè)通道采集數(shù)據(jù),之后用DMA將數(shù)據(jù)傳送到數(shù)組value[8][10]中,現(xiàn)在我很疑惑,這個(gè)二維數(shù)組中的前8個(gè)數(shù)據(jù)是不是DMA從ADC->DR中回傳的八個(gè)數(shù)據(jù)的第一次采樣值?

單片機(jī)源程序如下:
  1. #define Channel_Num  8 //ADC的通道數(shù),使用8個(gè)通道
  2. #define Sample_Num  10 //采樣次數(shù),使用平均濾波,采樣10次取均值
  3. //#define  DMA_BUFF_SIZE  Channel_Num*Sample_Num*3
  4. u16 AD_Value[8][10];//  __attribute__((at(0X68000000)));//行優(yōu)先存儲,DMA第一次傳輸?shù)?個(gè)數(shù)據(jù)為ADC各個(gè)通道的第一次采樣數(shù)據(jù)
  5. u16 Actual_AD_Value[8];



  6. void  ADC_GPIO_init(void)
  7. {
  8.   GPIO_InitTypeDef GPIO_InitStructure;

  9.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOC, ENABLE );   
  10.    
  11.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
  12.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;        //模擬輸入引腳
  13.     GPIO_Init(GPIOA, &GPIO_InitStructure);   

  14.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
  15.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;        //模擬輸入引腳
  16.     GPIO_Init(GPIOC, &GPIO_InitStructure);   
  17. }


  18. //adc1  8通道循環(huán)采集配置
  19. void  Adc_DMA_Init(void)
  20. {     
  21.     ADC_InitTypeDef ADC_InitStructure;
  22.     DMA_InitTypeDef DMA_InitStructure;

  23.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1    , ENABLE );      //使能ADC1通道時(shí)鐘
  24.      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);    //使能DMA傳輸
  25.    
  26.     RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //設(shè)置ADC時(shí)鐘分頻因子6,72M/6=12M,ADC最大時(shí)間不能超過14M
  27.                      
  28.   DMA_DeInit(DMA1_Channel1);   //將DMA的通道1寄存器重設(shè)為缺省值
  29.    
  30.     DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR;  //DMA外設(shè)基地址
  31.     DMA_InitStructure.DMA_MemoryBaseAddr =(u32)&AD_Value;  //DMA內(nèi)存基地址
  32.     DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  //數(shù)據(jù)傳輸方向,從外設(shè)讀取發(fā)送到內(nèi)存
  33.     DMA_InitStructure.DMA_BufferSize = (Channel_Num*Sample_Num+2)*2;  //DMA通道的DMA緩存的大小//Channel_Num*Sample_Num
  34.     DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  //外設(shè)地址寄存器不變
  35.     DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  //內(nèi)存地址寄存器遞增
  36.     DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;  //外設(shè)數(shù)據(jù)寬度為16位
  37.     DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //數(shù)據(jù)寬度為16位
  38.     DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;  //工作在循環(huán)模式DMA_Mode_Normal   DMA_Mode_Circular
  39.     DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA通道1擁有高優(yōu)先級
  40.     DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  //DMA通道x沒有設(shè)置為內(nèi)存到內(nèi)存?zhèn)鬏?br />
  41.     DMA_Init(DMA1_Channel1, &DMA_InitStructure);  //根據(jù)DMA_InitStruct中指定的參數(shù)初始化DMA的通道USART1_Tx_DMA_Channel所標(biāo)識的寄存器
  42.   
  43.     DMA_Cmd(DMA1_Channel1,ENABLE);
  44.    

  45.     ADC_DeInit(ADC1);  //復(fù)位ADC1

  46.     ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;    //ADC工作模式:ADC1和ADC2工作在獨(dú)立模式
  47.     ADC_InitStructure.ADC_ScanConvMode = ENABLE;    //模數(shù)轉(zhuǎn)換工作在掃描模式
  48.     ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;    //模數(shù)轉(zhuǎn)換工作在連續(xù)轉(zhuǎn)換模式
  49.     ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;    //轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動
  50.     ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;    //ADC數(shù)據(jù)右對齊
  51.     ADC_InitStructure.ADC_NbrOfChannel = 8;    //順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目
  52.     ADC_Init(ADC1, &ADC_InitStructure);    //根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設(shè)ADCx的寄存器   


  53.       //設(shè)置指定ADC的規(guī)則組通道,8個(gè)序列,采樣時(shí)間
  54.     ADC_RegularChannelConfig(ADC1,ADC_Channel_0, 1,ADC_SampleTime_239Cycles5);
  55.     ADC_RegularChannelConfig(ADC1,ADC_Channel_1, 2,ADC_SampleTime_239Cycles5);   
  56.     ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 3,ADC_SampleTime_239Cycles5);
  57.     ADC_RegularChannelConfig(ADC1,ADC_Channel_3, 4,ADC_SampleTime_239Cycles5);
  58.   ADC_RegularChannelConfig(ADC1,ADC_Channel_10, 5,ADC_SampleTime_239Cycles5);
  59.     ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 6,ADC_SampleTime_239Cycles5);
  60.     ADC_RegularChannelConfig(ADC1,ADC_Channel_12, 7,ADC_SampleTime_239Cycles5);
  61.     ADC_RegularChannelConfig(ADC1,ADC_Channel_13, 8,ADC_SampleTime_239Cycles5);        

  62.   ADC_DMACmd(ADC1, ENABLE);
  63.    
  64.     ADC_Cmd(ADC1, ENABLE);    //使能指定的ADC1
  65.    
  66.     ADC_ResetCalibration(ADC1);    //使能復(fù)位校準(zhǔn)  
  67.      
  68.     while(ADC_GetResetCalibrationStatus(ADC1));    //等待復(fù)位校準(zhǔn)結(jié)束
  69.    
  70.     ADC_StartCalibration(ADC1);     //開啟AD校準(zhǔn)

  71.     while(ADC_GetCalibrationStatus(ADC1));     //等待校準(zhǔn)結(jié)束
  72.    
  73.     ADC_SoftwareStartConvCmd(ADC1, ENABLE);        //使能指定的ADC1的軟件轉(zhuǎn)換啟動功能
  74. }            


  75.    
  76. //獲得每個(gè)通道連續(xù)采集10的的AD平均值
  77. void Get_Adc(void)   
  78. {                  
  79.     u16 sum=0;
  80.     u8  i=0,count=0;
  81.     for(i=0;i<Channel_Num;i++)
  82.         {
  83.         for(count=0;count<Sample_Num;count++)
  84.         {
  85.           sum+=AD_Value[i][count];
  86.         }
  87.         Actual_AD_Value[i]=sum/Sample_Num;
  88.     }
  89.      sum=0;
  90. }


  91. float GET_Voltage(u16  AD_values)
  92. {
  93.   return  (float)(AD_values*3.3/4096);
  94. }
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:291789 發(fā)表于 2020-3-20 13:22 | 只看該作者
我還想問一下,這個(gè)程序,在電壓處理那塊void Get_Adc(void)中,Actual_AD_Value[0]沒有值,也沒查到原因,請哥哥指導(dǎo)下們
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 色综合久久久 | 日韩免费av一区二区 | av一区二区在线观看 | 网站黄色av | 日本激情一区二区 | 精品久久久久久久久久久久久久久久久 | 精品免费国产一区二区三区 | av网站观看 | 国产一区在线免费 | 欧美精品一区二区三区蜜桃视频 | 青草久久免费视频 | a免费在线 | 日韩二区三区 | 人人操日日干 | 激情 婷婷| 久久高清 | 久久久青草婷婷精品综合日韩 | 成人妇女免费播放久久久 | 国产精品69毛片高清亚洲 | 精产国产伦理一二三区 | 91国在线高清视频 | 日韩av在线免费 | 成人在线观看免费 | 一区二区中文 | 人操人免费视频 | 久久国产精品一区二区三区 | 亚洲欧美一区二区三区国产精品 | 亚洲欧美日韩电影 | 日韩精品免费在线观看 | 波多野结衣电影一区 | 亚洲一区二区三区在线免费 | 久久精品1 | 亚洲va在线va天堂va狼色在线 | 国产亚洲精品久久久久久牛牛 | 久久免费精品视频 | 国产亚洲精品一区二区三区 | 久久亚洲一区二区 | 91精品久久久久久久久久入口 | 久久精品一区二区 | 成人欧美日韩一区二区三区 |