ADC的總結學習筆記
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 介面的物件,可
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 可用區安全組, 允許包含跨可用區的實例 磁盤 只能掛在同一可用區