1. 程式人生 > >新唐N76E003AT20 多通道ADC採集方法

新唐N76E003AT20 多通道ADC採集方法

    不得不說N76E003的功能在8051核心微控制器中功能已經是非常強大了,並且官方開提供了BSP 開發庫,這些都是可以直接在官網中直接找到的。對於N76E003的ADC,因為作者沒有用過很早之前的版本,作者使用的時候官方已經提供了VBG反推VDD的例程,但是這種做法還是有一些缺陷,因為內部的乘除法運算對於一個8位的微控制器來說還是有一定的困難的。但是在實際專案中應該都是需要使用到多個通道輪流採集的情況,所以,在此貼出本人寫的在多個通道輪流採集的方法。

if(ADC_BAND_GAP_VOLTAGE_MSK==gAdcActivingChannel)

{//通道0的巨集定義,gAdcActivingChannel是定義的一個全域性變數用來進行通道轉換,定義的時候賦初值

                       //為ADC_BAND_GAP_VOLTAGE_MSK

                       //ADC_BAND_GAP_VOLTAGE_MSK:我定義的是8

Enable_ADC_BandGap;
};
if(ADC_WORK_MODE_LOADING_VOLTAGE_MSK ==gAdcActivingChannel)
{//巨集定義的內容滿足巨集定義的要求即可,這個巨集定義的是5
Enable_ADC_AIN5;
};
if(ADC_B_LOADIND_MSK ==gAdcActivingChannel)
{//這個巨集定義的是1
Enable_ADC_AIN0;
};
clr_ADCF;

set_ADCS;

    if(ADCF==1||ADCS==0)
 {

switch(gAdcActivingChannel)
{
case ADC_BAND_GAP_VOLTAGE_MSK:

gVbgAdcResult = (ADCRH<<4) + ADCRL;//獲取ADC的取樣值

                                        clr_ADCEN;

                                        gAdcActivingChannel=ADC_WORK_MODE_LOADING_VOLTAGE_MSK;//跳轉到下一個通道

break;

                                    case ADC_WORK_MODE_LOADING_VOLTAGE_MSK:
gAdcLoadingVoltResult1=(ADCRH<<4)+ADCRL;
clr_ADCEN;
gAdcActivingChannel=ADC_B_LOADIND_MSK;

break;

                                   case ADC_B_LOADIND_MSK:
gAdcBLoadingVolt=(ADCRH<<4)+ADCRL;//讀取該通道轉換的值
clr_ADCEN;
default:

gAdcActivingChannel=ADC_BAND_GAP_VOLTAGE_MSK;

                            }

                        }

官網的例程除去用中斷的方式都是使用while()輪詢等待,這樣勢必造成阻塞,上面的方法通過去判斷ADC轉換是否完成進行輪詢,如果完成就進入讀取該通道的值,如果沒有完成則不讀取。

本人水平有限,如果有不足之處還望各位高手支出,或者你有更好的想法也可以交流討論。

相關推薦

N76E003AT20 通道ADC採集方法

    不得不說N76E003的功能在8051核心微控制器中功能已經是非常強大了,並且官方開提供了BSP 開發庫,這些都是可以直接在官網中直接找到的。對於N76E003的ADC,因為作者沒有用過很早之前的版本,作者使用的時候官方已經提供了VBG反推VDD的例程,但是這種做法還

STM32 通道ADC採集詳解(DMA模式和非DMA模式)

ADC相關問題: 1.採集到的值如何轉化計算?   在STM32系列晶片大都是12位只有少部分是16位的,如:F373晶片。   12位解析度意味著我們採集電壓的精度可以達到:Vref / 4096。    採集電壓= Vref * ADC_DR / 4096;  

STM32——通道ADC的DMA方式採集方法

前言: 最近在除錯STM32F205晶片ADC多通道DMA方式採集資料,總結下STM32多通道ADC的DMA方式採集的使用方法。 硬體平臺:STM32F205 軟體平臺:keil v5 函式庫:標準庫 多通道ADC的配置 #define Ch

STM32F1xx 系列 通道ADC DMA採集與非DMA採集

ADC 多通道 DMA 採集 #include "ADcx.h" #include <stdio.h> #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_adc.h" #inclu

stm32 通道ADC+DMA採集

/******************************************************************* ** Variables Definitions ** **********************************

通道高速採集卡 高速採集卡 高速採集記錄 射頻資訊採集

多通道寬頻訊號高速資料採集記錄儲存系統基於高效能PCI EXPRESS及SRIO協議,實現標準化、 模組化、可擴充套件、可重構的高速資料採集記錄儲存處理平臺。採用高效能的ADC、DAC和超大 容量固態FLASH及高速海量磁碟陣列儲存,廣泛適用於軍用、民用領域的機

STM32的ADC取樣與通道ADC取樣

一 單通道取樣 參考資料: 《STM32庫開發實戰指南》 劉火良,楊森著 原理性質的東西還是少講,因為上面那本書裡面講解的很詳細了,直接來看硬體電路圖 這裡使用的是3362電位器(10K),即用STM32來測量PB0和GND兩端的電壓,這樣的電路設

stm32cubemx adc採集

採用的軟體是STM32CUBEMX+KEIL5 硬體為stm32F103C8T6 我與原文作者做的區別在於 External Trigger Conversion Edge,我在進行配置的時間沒有None選項,我選擇的是預設的Regular Conversion launc

STM32F4 adc+dma通道採集

這裡使用STM32F407實現adc的多通道採集,使用的感測器為灰度感測器與紅外感測器,在面放出程式碼,具體的解釋在註釋中都寫的很詳細。 感測器的IO口配置 void DMA_GPIO_config() { GPIO_InitTypeDef GPIO_InitSt

STM32 DMA模式ADC通道採集

ADC取樣基準電壓3.3V    3個通道採集資料 採集資料存放位置 ADC_ConvertedValue[0] ADC_ConvertedValue[1] ADC_ConvertedValue[2] 三個值對應ADC三個通道採集出來的值 實際電壓為 = 取樣值*

STM32採集ADC到DMA的方法

最近在做一個手柄,用到了一個遊戲搖桿,遊戲搖桿的原理就是兩個電位器,通過讀取ADC的值計算位置,原理和觸控式螢幕類似,那麼就需要用到兩路ADC了,但是我用的開發板是野火的,火哥給的例程只有單路ADC採集,查閱了相關資料解決了多路的問題,現在我把主要的程式碼貼在下

STM32F0 中 ADC 通道轉換結果相同的問題

type 前段時間 isp external res lin version splay flag 前言 前段時間調試 STM32F030 的 ADC,在多通道轉換時遇到了奇怪的問題,使用官方的例程和庫函數連續轉換多個 ADC 通道,得到的幾個通道的結果是一樣的,解決辦法參

【學習筆記】 大仕—Java程式設計 第5講 深入理解Java語言之5.2 型及虛方法呼叫

/** * 多型及虛方法呼叫 * @author cnRicky * @date 2018.11.7 */ 多型 多型(Polymorphism)是指一個程式中相同的名字表示不同的含義的情況 多型有兩種情形 編譯時多型:  *過載(Overload)(多個同名的不同方法)  *如 p.sayH

STM32通過DMA採集通道AD

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

STM32 ADC通道通道_DMA學習筆記

#include "stm32f10x.h"//這個標頭檔案包括STM32F10x所有外圍暫存器、位、記憶體映 射的定義#include "eval.h" //標頭檔案(包括串列埠、按鍵、LED的函式宣告)#include "SysTickDelay.h" #include "UART_INTERFACE.h

超寬頻訊號高速採集記錄回放系統之支援系統內及系統間通道同步擴充套件

超寬頻高速記錄回放系統 超寬頻訊號高速採集記錄儲存回放系統主要用於對超寬頻訊號進行長時間高速連續實時採集記錄和回放產生,適用於雷達、無線通訊、軟體無線電、電子對抗、電子偵察、衛星導航、複雜電磁環境模擬訊號的高速採集、分析、記錄、儲存和回放產生。 超寬頻訊號高速採集記錄儲存回放系統基於高效能P

STM32F10X ADC通道讀取小教程(包含DMA)

有 18 個通道,可測量 16 個外部和 2 個內部訊號源。各通道的 A/D 轉換可以單次、連續、掃描或間斷模式執行 ;ADC的結果可以左對齊或右對齊方式儲存在 16 位資料暫存器中 ;模擬看門狗特性允許應用程式檢測輸入電壓是否超出使用者定義的高 / 低閾值。

STM32F407的ADC之DMA通道+溫度

這裡是在上一章中加上了溫度 上圖是溫度計算公式:其中Vsense為採集到溫度通道的ADC值   stm32f407溫度通道是ADC1的16通道。 Avg_Slope一般取0.0025 和上一張比主要是該了下的內容: 1、增加ADC_TempSensorVrefintC

ADC通道逐次轉換(不用DMA)

之前看到一篇文章【】原博主用的是規則組間斷模式,但是我參考他的例程自己讀取出來的結果每次都只有最後一通道的值,原因暫時不明。 因為我用的通道不多,就用了一個比較笨的方法。 ADC配置如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_

android-繼承BaseAdapter--自己定義適配器,getView運行次的解決方法

能夠 popu con data ssa baseadapt tracking you idt 定義的getView運行多次的ListView布局: <ListView android:id="@+id/lv_messages"