1. 程式人生 > >ADC的總結學習筆記

ADC的總結學習筆記

C8051F020/1 的ADC0 子系統包括一個9 通道的可程式設計模擬多路選擇器(AMUX0),一個可程式設計增益放大器(PGA0)和一個100ksps、12 位解析度的逐次逼近暫存器型ADC(F020ADC0只有一個逐次逼近的ADC,它能實現9路輸入是因為它有一個9通道的多路選擇器(AMUX0)))片上的特殊功能暫存器(簡稱SFR)有11個與ADC0的控制相關,它們是:

AMUX0SL-AMUX0通道選擇暫存器;AMX0CF-AMUX0配置暫存器;

ADC0CF-ADC0配置暫存器;ADC0CN-ADC0控制暫存器;

ADC0H-ADC0資料字MSB暫存器;ADC0L-ADC0資料字LSB暫存器;

ADC0GTH-ADC0下限資料高位元組暫存器;ADC0GTL-ADC0下限資料低位元組暫存器;

ADC0LTH-ADC0上限資料高位元組暫存器;ADC0LTL-ADC0上限資料低位元組暫存器;

REF0CN-基準電壓控制暫存器。

 ADC0工作方式

ADC0 的最高轉換速度為100ksps,其轉換時鐘來源於系統時鐘分頻,分頻值儲存在寄存

器ADC0CF 的ADCSC 位。

  啟動轉換

有4 種轉換啟動方式,由ADC0CN 中的ADC0 啟動轉換方式位(AD0CM1,AD0CM0)的狀態決定。轉換觸發源有:

1. 向ADC0CN 的AD0BUSY 位寫1;

2. 定時器3 溢位(即定時的連續轉換);

3. 外部ADC 轉換啟動訊號的上升沿,CNVSTR;

4. 定時器2 溢位(即定時的連續轉換)。

備註:(關於ADC0的開始轉換,1,可以在軟體裡面設定,直接給AD0BUSY寫1,然後直接輸出轉換結果。這種方式需要不斷的掃描,不斷的輸出結果,似乎有點費勁。如果採用第三種方式,即用一個開關來控制ADC的啟動,那樣,在沒有按鍵的情況下,ADC不需要掃描,或許可以用第二種或者第四種方式,我用一個按鍵來啟動定時器的開始計數,技術滿之後再啟動ADC的轉換。總之,除非處理晶片的主要目的就是為了AD轉換,要不採用第一種方法只會顯得有點笨。

關於 ADC0CN

AD0EN

AD0TM

AD0INT

AD0BUSY

AD0CM1

AD0CM0

AD0WINT

AD0LJST

位7

位6

位5

位4

位3

位2

位1

位0

  1        0       0        0          0          0         0          0

(該暫存器可以位定址,所以在清零的時候,可以直接寫AD0INT=0就可以。)

位7: AD0EN:ADC0 使能位

0:ADC0 禁止。ADC0 處於低耗停機狀態。

1:ADC0 使能。ADC0 處於活動狀態,並準備轉換資料。

在ACD0初始化裡,該位肯定是被置高的。

位6: AD0TM:ADC 跟蹤方式位

0:當ADC 被使能時,除了轉換期間之外一直處於跟蹤方式。

1:由ADSTM1-0 定義跟蹤方式。(該位設定為“0”

位5: AD0INT:ADC0 轉換結束中斷標誌,該標誌必須用軟體清‘0’。

0:從最後一次將該位清0 後,ADC0 還沒有完成一次資料轉換。

1:ADC 完成了一次資料轉換。

(該位為標誌位,可以用來查詢,如果為1了,則說明ADC已經完成了一次轉換,直接清零就ok)

位4: AD0BUSY:ADC0 忙標誌位

0:ADC0 轉換結束或當前沒有正在進行的資料轉換。AD0INT 在AD0BUSY 的

下降沿被置‘1’。

1:ADC0 正在進行轉換。

0:無作用

1:若ADSTM1-0=00b 則啟動ADC0 轉換。

備註:(該位可以用來做啟動指令,也可以用來做查詢等待。While(!(AD0BUSY));

位3-2: AD0CM1-0:ADC0 轉換啟動方式選擇位。

如果AD0TM = 0:

00:向AD0BUSY 寫1 啟動ADC0 轉換。

01:定時器3 溢位啟動ADC0 轉換。

10:CNVSTR 上升沿啟動ADC0 轉換。

11:定時器2 溢位啟動ADC0 轉換。

如果AD0TM = 1:

00:向AD0BUSY 寫1 時啟動跟蹤,持續3 個SAR 時鐘,然後進行轉換。

01:定時器3 溢位啟動跟蹤,持續3 個SAR 時鐘,然後進行轉換。

10:只有當CNVSTR 輸入為邏輯低電平時ADC0 跟蹤,在CNVSTR 的上升沿

開始轉換。

11:定時器2 溢位啟動跟蹤,持續3 個SAR 時鐘,然後進行轉換。

(在這裡,由於前面的AD0TM被設定為0,採用軟體控制AD0BUSY啟動轉換,因此,這裡寫為“00”)

位1: AD0WINT:ADC0 視窗比較中斷標誌。該位必須用軟體清0。

0:自該標誌被清除後未發生過ADC0 視窗比較匹配。

1:發生了ADC0 視窗比較匹配。(這裡直接寫0)

位0: AD0LJST:ADC0 資料左對齊選擇位。

0:ADC0H:ADC0L 暫存器資料右對齊。

1:ADC0H:ADC0L 暫存器資料左對齊(選擇資料右對齊,寫0)

綜上所述:在初始化的時候,採用ADC0BUSY控制ADC啟動,暫存器資料右對齊讀出。因此ADC0CN=0X80;在AD轉換函式裡面,另外再寫ADC0BUSY=1;delay();            

while(!(ADC0BUSY));即為啟動轉換,在轉換的時候,ADCOBUSY保持高電平,轉換完畢後,ADC0BUSY恢復低電平。

(轉換資料被儲存在ADC資料字的MSB 和LSB 暫存器:ADC0H 和ADC0L。至於轉換後的資料是選擇左對齊還是右對齊,則由ADC0CN裡面的AD0LJST決定。在前面已經選擇了右對齊)

當通過向AD0BUSY 寫‘1’啟動資料轉換時,應查詢AD0INT 位以確定轉換何時結束(也可以使用ADC0 中斷)。建議的查詢步驟如下:

1. 寫‘0’到AD0INT;

2. 向AD0BUSY 寫‘1’;

3. 查詢並等待AD0INT 變‘1’;

4. 處理ADC0 資料

 關於AMX0CF

——

——

——

——

AIN67IC

AIN45IC

AIN23IC

AIN01IC

7

6

5

4

3

2

1

0

(該暫存器主要用來配置輸入通道作為單端輸入還是雙端差分輸入。由於我的八路通道都需要作為單端輸入,所以該暫存器全部寫0,即為AMX0CF=0X00;)

位7-4: 未使用。讀 = 0000b;寫 = 忽略

位3  AIN67IC:AIN6、AIN7 輸入對配置位

0: AIN6 和AIN7 為獨立的單端輸入

1: AIN6, AIN7 為(分別為)+, -差分輸入對

位2  AIN45IC:AIN4、AIN5 輸入對配置位

0: AIN4 和AIN5 為獨立的單端輸入

1: AIN4, AIN5 為(分別為)+, -差分輸入對

位1  AIN23IC:AIN2、AIN3 輸入對配置位

0: AIN2 和AIN3 為獨立的單端輸入

1: AIN2, AIN3 為(分別為)+, -差分輸入對

位0  AIN01IC:AIN0、AIN1 輸入對配置位

0: AIN0 和AIN1 為獨立的單端輸入

1: AIN0, AIN1 為(分別為)+, -差分輸入對

 關於 AMX0SL

——

——

——

——

AMX0AD3

AMX0AD2

AMX0AD1

AMX0AD0

7

6

5

4

3

2

1

0

(該暫存器用來做AMUX9路選擇開關的配置,即為通道選擇暫存器)

位7-4: 未使用。讀 = 0000b;寫 = 忽略

位3-0: AMX0AD3-0: AMUX0 地址位

0000-1111b: 根據下表選擇ADC 輸入

(具體請參照C8051F02X.PDF裡面第40頁說明。)

在這裡,由於我的八路通道都設定為輸入 ,前面的AMX0CF設定為了0X00,所以這裡只需要按順序,從0X00、0X01、0X02、0X03、0X04、0X05、0X06、0X07依次選擇一遍就可以。

 關於 ADC0CF: ADC0 配置暫存器

AD0SC4

AD0SC3

AD0SC2

AD0SC1

AD0SC0

AMP0GN2

AMP0GN1

AMP0GN0

7

6

5

4

3

2

1

0

位7-3:  AD0SC4-0: ADC0 SAR 轉換時鐘週期控制位

SAR 轉換時鐘來源於系統時鐘,由下面的方程給出,其中AD0SC 表示AD0SC4-0

中保持的數值,CLKSAR0 表示所需要的ADC0 SAR 時鐘(注:ADC0 SAR 時鐘

應小於或等於2.5MHz)。(具體參考C8051F02X.PDF第41頁)

位2-0: AMP0GN2-0: ADC0 內部放大器增益(PGA)

000: 增益 = 1

001: 增益 = 2

010: 增益 = 4

011: 增益 = 8

10x: 增益 = 16

11x: 增益 = 0.5

關於電壓基準(C8051F020/2)

電壓基準電路為控制ADC 和DAC 模組工作提供了靈活性。有三個電壓基準輸入引腳,允許每個ADC 和兩個DAC 使用外部電壓基準或片內電壓基準輸出。通過配置VREF 模擬開關,ADC0 還可以使用DAC0 的輸出作為內部基準,ADC1 可以使用模擬電源電壓作為基準.

REF0CN: 電壓基準控制暫存器

-----------

-----------

-----------

AD0VRS

AD1VRS

TEMPE

BIASE

REFBE

7

6

5

4

3

2

1

0

位7-5: 未用。讀 = 000b,寫 = 忽略。

位4: AD0VRS:ADC0 電壓基準選擇位

0:ADC0 電壓基準取自VREF0 引腳。

1:ADC0 電壓基準取自DAC0 輸出。

位3: AD1VRS:ADC1 電壓基準選擇位

0:ADC1 電壓基準取自VREF1 引腳。

1:ADC1 電壓基準取自AV+。

位2: TEMPE:溫度感測器使能位

0:內部溫度感測器關閉。

1:內部溫度感測器工作。

位1: BIASE:ADC/DAC 偏壓發生器使能位(使用ADC 和DAC 時該位必須為1)

0:內部偏壓發生器關閉。

1:內部偏壓發生器工作。

位0: REFBE:內部電壓基準緩衝器使能位

0:內部電壓基準緩衝器關閉。

1:內部電壓基準緩衝器工作。內部電壓基準提供從VREF 引腳輸出。11x: 增益 = 0.5

相關推薦

ADC總結學習筆記

C8051F020/1 的ADC0 子系統包括一個9 通道的可程式設計模擬多路選擇器(AMUX0),一個可程式設計增益放大器(PGA0)和一個100ksps、12 位解析度的逐次逼近暫存器型ADC,(F020的ADC0只有一個逐次逼近的ADC,它能實現9路輸入是因為它有一個

JSP 學習總結---學習筆記

JSP 學習總結---學習筆記什麽是JSP 1)為什麽說,Servlet是一個動態Web開發技術呢?Servlet是基於服務端的一種動態交互技術, HttpServletRequest表示客戶端到服務端的對象HttpServletResponse表示服務端到客戶端的對象2)JSP是SUN公司開發的一個基於服務

重構總結學習筆記

size deb water col 重構 img 51cto log sha 數據級的重構 語句重構: 子程序的重構 類重構 類接口的重構 系統級的重構 重構總結學習筆記

Docker入門知識總結-學習筆記1

nic yum 數量 python pan over mirror 官方文檔 mes Docker容器技術是基於Go語言實現的雲開源項目,誕生於2013年,是一種高效、敏捷、和輕量級的容器解決方案,發布於2013年。Docker基於Linux平臺上的多項開源技術,其中最重要

線段樹 掃描線總結 學習筆記

看了若干神牛的文章 對線段樹的掃描線總算入門了求面積就是離散化座標 從下往上離散橫座標 水平掃描離散縱座標 從下往上為例 下邊定義值為1 上邊定義值為-1在掃的過程中就能通過更新操作得到底邊長 用高度差相乘就是面積其實還是比較好實現的 板子程式碼using namespace

java的序列化 和 反序列化總結---學習筆記

  java的序列化 和 反序列化 1、我們先看一下《java程式設計思想》第四版中對序列化定義 物件序列化Java 1.1 增添了一種有趣的特性,名為“物件序列化”( Object Serialization)。它面向那些實現了 Serializable 介面的物件,可

關於高淇JAVA中SORM總結學習筆記詳細個人解釋

                          

3D Game Programming withDX11 學習筆記(一) 數學知識總結

表示 圖形 http 根據 轉置 元素 material -s com   在圖形學中,數學是不可或缺的一部分,所以本書最開始的部分就是數學知識的復習。在圖形學中,最常用的是矢量和矩陣,所以我根據前面三個章節的數學知識,總結一下數學知識。 一、矢量   數學中的矢量,擁有

git 學習筆記總結

upd remove 不常用 常見命令 指定 之前 初始 add manage 換了一家東家以後要用git了,和之前的svn還是有區別的 最明顯的兩個區別就是 1、git 的commit只是提交到本地的一個緩存工作區,git真正提交到中央也就是遠程倉庫的命令是 git pu

Android學習筆記:超能RecyclerView組件使用總結

popu bin view設置 and col cas mda rac data 個人認為 RecyclerView組件確實值得學習並用到我們的項目中去,前面學了相關的內容。今天再補充一些相關的東東。 1,實現對RecyclerView中的數據進行加入和刪除操作。

Java學習筆記總結

筆記總結 類型 log tle java基礎學習 mysql 筆記一 java學習 link Java基礎篇 Java基礎學習筆記一 Java介紹 Java基礎學習筆記二 Java基礎語法(變量、數據類型) Java基礎學習筆記三 Java基礎語法(流程控制語句、循環

require學習筆記總結

paths toc sel uil 什麽 回調函數 boa 模塊加載 view 1、為什麽使用require.js 作為命名空間; 作為命名空間使用; 異步加載js,避免阻塞,提高性能; js通過require加載,不必寫很多script 2、require.js的加載 r

jsp學習筆記總結

方法 tty 內置對象 sso nes ble 兩個 內置 app Cookie中對保存對象的大小是有限制的 解決cookie中無法保存中文的問題: request.setCharacterEncoding URLE

Linux學習筆記2_centos7遠程登陸前的總結

linux虛擬機安裝註意事項:1.1 分區配置,註意主流分區方案和企業分區方案。1.2 網絡配置,註意幾種虛擬機下的連接方案,不同生產環境下各方案的利弊。1.3 用戶配置,註意實際企業環境中的用戶及密碼配置。系統初始配置註意事項:2.1 IP地址的分配與網卡配置文件的編輯,vi的輸入及保存退出操作。系統roo

使用php-amqplib連接rabbitMQ 學習筆記總結

upd echo 密碼 分發 rop 必須 mco fan span 1、使用composer安裝php-amqplib 在你的項目中添加一個 composer.json文件: { "require": { "php-amqplib/php-am

docker學習筆記(五)——Docker常用命令總結

docker學習筆記 docker常用命令總結 1. 開啟/停止/重啟container(start/stop/restart)容器可以通過run新建一個來運行,也可以重新start已經停止的container,但start不能夠再指定容器啟動時運行的指令,因為docker只能有一個前臺進程。容器st

《機器學習》第三章 決策樹學習 筆記總結

分類問題 子集 觀察 組成 cas 普通 重復 1.0 需要 《機器學習》第三章 決策樹學習 決策樹學習方法搜索一個完整表示的假設空間,從而避免了受限假設空間的不足。決策樹學習的歸納偏置是優越選擇較小的樹。 3.1.簡介 決策樹學習是一種逼近離散值目標函數的方法,在這種方法

JavaWeb學習筆記總結 目錄篇

resp comment let .html ref 開發工具 總結 targe art JavaWeb學習筆記總結 目錄篇 JavaWeb學習筆記一: XML解析 JavaWeb學習筆記二 Http協議和Tomcat服務器 JavaWeb學習筆記三 Servlet

Apache Shiro學習筆記總結

授權 維護 代碼 自定義 密碼 源碼 器) 對象 訪問控制 1.1 簡介 Apache Shiro是Java的一個安全框架。目前,使用Apache Shiro的人越來越多,因為它相當簡單,對比Spring Security,可能沒有Spring Security做的功能強

阿裏雲雲計算工程師ACP學習筆記--知識點總結

阿裏雲 acp Elastic Compute Server 是一種處理能力可彈性伸縮的計算服務。 CPU內存需要停機,帶寬不需要。垂直:帶寬 CPU 內存 水平:服務器Region 地域 Zone 可用區安全組, 允許包含跨可用區的實例 磁盤 只能掛在同一可用區