|

【嵌入式學習心得#4】解析8051 埋控的 ADC 功能

   
作者:Ryan Hu

上次由於篇幅的緣故,和大家分享 8051 的 UART 之後,沒能繼續把 ADC 講完,本篇以最簡單的例子—電壓大小變化,來實作這顆 SN8F5701 埋控的 ADC 功能,文末也會稍微提到我目前正在進行的專案,與 2.4G RF 有關。

類比與數位

我們都知道現實世界是「類比」的,不過類比實在太複雜,於是聰明的人類創造出「數位」來簡化問題。如果不夠清楚,就想像類比是「連續數值的變化」,而數位只有 0 或 1,這之間的轉換牽涉到很多複雜的數學運算,像是傅立葉轉換(fourier tranform),將 time domain 的 data 轉成 frequency domain,讓原本看似沒意義的 function curve 突然間有了生命。ADC的功用就在於將類比形式的連續訊號,轉換為數位形式的離散訊號。

ADC轉換訊號簡易圖(圖片來源:Wikipedia

ADC(Analog to Digital Converter)

這顆埋控 ADC 的部分是用 SAR 架構(聽說還有很多種),有6 個可以設為 analog input 的 pin 腳位,解析度有 4096 steps。在腦中想像一下長條圖 y 軸的刻度,就是 4096 階;如果 4096 階這個值不變, reference high voltage 和 VSS(通常都是接地 0V)相差的越小(下方會說明),解析度相對就會提高。但這有利有弊,除非進來的 analog 訊號數值和變化真的不大,否則這個情況很難發生。

上述提到的 reference high voltage(參考高電位)和 clock rate 是 ADC 中相當重要的一環,這顆埋控有四個 clock rate 可以選擇,以 datasheet 裡面提到的 converting rate,我目前的理解是每次每個數值轉換(analog to digital)的速率。所以,如果類比訊號進來的很快,但 MCU ADC 的 converting rate 設得太低,讀出來的數值可能會有問題。

之所以說以我目前的理解,是因為我在別顆埋控的 datasheet 裡面有看過 ADC sampling rate,至於這和 converting rate 是否相同,詢問前輩後得知,在大部分的狀況下是一樣的,但有些進階的 ADC 上會不一樣(就我所知 sampling rate 越高,表示越能模擬出真正 analog 訊號的全貌)。

談到參考高電位, SN8F5701 提供 4 個 sources 給開發者選擇,分別是 VDD、4V、3V、2V,以 3V 舉例,因為埋控規定 VSS (0V) <= sampled input voltage 一定要 <= 參考高電位。如果 reference high voltage 設定為 3V ,我只能去測量 0-3V 之間的數值,而 4096 這個解析度,就是將 0-3V 分割成 4096 階,去定義進來的 analog 訊號該對應到什麼二進位的數值,如下圖:

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Hu Ryan

Author: Ryan Hu

對於 IOT 軟硬整合相關有極大興趣,鍾愛無人機,目前獨自完成的專案像是瓦力號、GPS 自動語音導覽系統、NTP 網路自動校時時鐘,喜歡流浪。

Share This Post On

Trackbacks/Pingbacks

  1. SN8F5701 – 8051 ADC 功能介紹 – 自造者萊恩 - […] *本文同步刊登 Ma…

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *