乾貨!嵌入式物聯網系統軟硬件基礎知識大全

本文主要介紹了嵌入式系統的基礎知識,涉及嵌入式軟件和硬件的方方面面,希望對各位有幫助。

嵌入式系統基礎

1、嵌入式系統的定義

(1)定義:以應用爲中心,以計算機技術爲基礎,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。

(2)嵌入式系統發展的四個階段:無操作系統階段、簡單操作系統階段、實時操作系統階段、面向 Internet 階段。

(3)知識產權核(IP 核):具有知識產權的、功能具體、接口規範、可在多個集成電路設計中重複使用的功能模塊,是實現系統芯片(SOC)的基本構件。

(4)IP 核模塊有行爲、結構和物理 3 級不同程度的設計,對應描述功能行爲的不同可以分爲三類:軟核、固核、硬核。

2、嵌入式系統的組成

嵌入式系統包含:硬件層、中間層、系統軟件層、應用軟件層。

嵌入式核心模塊 = 微處理器 + 電源電路 + 時鐘電路 + 存儲器

Cache:位於主存和嵌入式微處理器內核之間,存放的是最近一段時間微處理器使用最多的程序代碼和數據。它的主要目標是減小存儲器給微處理器內核造成的存儲器訪問瓶頸,使處理速度更快。

(1)硬件層:嵌入式微處理器、存儲器、通用設備接口和 I/O 接口。

(2)中間層:也稱爲硬件抽象層 HAL,或者板級支持包 BSP。它將系統上層軟件和底層硬件分離開來,使系統上層軟件開發人員無需關係底層硬件的具體情況,根據 BSP 層提供的接口開發即可。

BSP 具有硬件相關性和操作系統相關性,設計一個完整的 BSP,需要完成兩部分工作:

一是,嵌入式系統的硬件初始化和 BSP 功能。

◆ 片級初始化:純硬件的初始化過程,把嵌入式微處理器從上電的默認狀態逐步設置成系統所要求的工作狀態。

◆ 板級初始化:包含軟硬件兩部分在內的初始化過程,爲隨後的系統初始化和應用程序建立硬件和軟件的運行環境。

◆ 系統級初始化:以軟件爲主的初始化過程,進行操作系統的初始化。

二是,設計硬件相關的設備驅動。

(3)系統軟件層:由 RTOS、文件系統、GUI、網絡系統及通用組件模塊組成。RTOS 是嵌入式應用軟件的基礎和開發平臺。

(4)應用軟件:由基於實時系統開發的應用程序組成。

3、實時系統

(1)定義:能在指定或確定的時間內完成系統功能和對外部或內部、同步或異步時間做出響應的系統。

(2)區別:通用系統一般追求的是系統的平均響應時間和用戶的使用方便;而實時系統主要考慮的是在最壞情況下的系統行爲。

(3)特點:時間約束性、可預測性、可靠性、與外部環境的交互性。

(4)硬實時(強實時):指應用的時間需求應能夠得到完全滿足,否則就造成重大安全事故,甚至造成重大的生命財產損失和生態破壞,如:航天、軍事。

(5)軟實時(弱實時):指某些應用雖然提出了時間的要求,但實時任務偶爾違反這種需求對系統運行及環境不會造成嚴重影響,如:監控系統、實時信息採集系統。

(6)任務的約束包括:時間約束、資源約束、執行順序約束和性能約束。

4、實時系統的調度

(1)調度:給定一組實時任務和系統資源,確定每個任務何時何地執行的整個過程。

(2)搶佔式調度:通常是優先級驅動的調度,如 uCOS。優點是實時性好、反應快,調度算法相對簡單,可以保證高優先級任務的時間約束;缺點是上下文切換多。

(3)非搶佔式調度:通常是按時間片分配的調度,不允許任務在執行期間被中斷,任務一旦佔用處理器就必須執行完畢或自願放棄,如 WinCE。優點是上下文切換少;缺點是處理器有效資源利用率低,可調度性不好。

(4)靜態表驅動策略:系統在運行前根據各任務的時間約束及關聯關係,採用某種搜索策略生成一張運行時刻表,指明各任務的起始運行時刻及運行時間。

(5)優先級驅動策略:按照任務優先級的高低確定任務的執行順序。

(6)實時任務分類:週期任務、偶發任務、非週期任務。

(7)實時系統的通用結構模型:數據採集任務實現傳感器數據的採集,數據處理任務處理採集的數據、並將加工後的數據送到執行機構管理任務控制機構執行。

5、嵌入式微處理器體系結構

(1)馮諾依曼結構:程序和數據共用一個存儲空間,程序指令存儲地址和數據存儲地址指向同一個存儲器的不同物理位置,採用單一的地址及數據總線,程序和數據的寬度相同。例如:8086、ARM7、MIPS 等。

(2)哈佛結構:程序和數據是兩個相互獨立的存儲器,每個存儲器獨立編址、獨立訪問,是一種將程序存儲和數據存儲分開的存儲器結構。例如:AVR、ARM9、ARM10 等。

(3)CISC 與 RISC 的特點比較:計算機執行程序所需要的時間 P,可以用下面公式計算 P=I×CPI×T。

其中,I 爲高級語言程序編譯後在機器上運行的指令數;CPI 爲執行每條指令所需要的平均週期數;T 爲每個機器週期的時間。

(4)流水線的思想:在 CPU 中把一條指令的串行執行過程變爲若干指令的子過程在 CPU 中重疊執行。

(5)流水線的指標

◆ 吞吐率:單位時間裏流水線處理機流出的結果數。如果流水線的子過程所用時間不一樣長,則吞吐率應爲最長子過程的倒數。

◆ 建立時間:流水線開始工作到達最大吞吐率的時間。若 m 個子過程所用時間一樣,均爲 t,則建立時間 T=mt。

(6)信息存儲的字節順序

◆ 存儲器單位:字節(8 位)。

◆ 字長決定了微處理器的尋址能力,即虛擬地址空間的大小。

◆ 32 位微處理器的虛擬地址空間位 232,即 4GB。

◆ 小端字節順序:低字節在內存低地址處,高字節在內存高地址處。

◆ 大端字節順序:高字節在內存低地址處,低字節在內存高地址處。

◆ 網絡設備的存儲順序問題取決於 OSI 模型底層中的數據鏈路層。

6、邏輯電路基礎

(1)根據電路是否具有存儲功能,將邏輯電路劃分爲:組合邏輯電路和時序邏輯電路。

(2)組合邏輯電路:電路在任一時刻的輸出,僅取決於該時刻的輸入信號,而與輸入信號作用前電路的狀態無關。常用的邏輯電路有譯碼器和多路選擇器等。

(3)時序邏輯電路:電路任一時刻的輸出不僅與該時刻的輸入有關,而且還與該時刻電路的狀態有關。因此,時序電路中必須包含記憶元件。觸發器是構成時序邏輯電路的基礎。常用的時序邏輯電路有寄存器和計數器等。

(4)真值表、布爾代數、摩根定律、門電路的概念。

(5)NOR(或非)和 NAND(與非)的門電路稱爲全能門電路,可以實現任何一種邏輯函數。

(6)譯碼器:多輸入多輸出的組合邏輯網絡。每輸入一個 n 位的二進制代碼,在 m 個輸出端中最多有一個有效。當 m=2n 是,爲全譯碼;當 m<2n 時,爲部分譯碼。

(7)由於集成電路的高電平輸出電流小,而低電平輸出電流相對比較大,採用集成門電路直接驅動 LED 時,較多采用低電平驅動方式。液晶七段字符顯示器 LCD 利用液晶有外加電場和無外加電場時不同的光學特性來顯示字符。

(8)時鐘信號是時序邏輯的基礎,它用於決定邏輯單元中的狀態合適更新。同步是時鐘控制系統中的主要制約條件。

(9)在選用觸發器的時候,觸發方式是必須考慮的因素。觸發方式有兩種:一種是電平觸發方式,具有結構簡單的有點,常用來組成暫存器;另一種是邊沿觸發方式,具有很強的抗數據端干擾能力,常用來組成寄存器、計數器等。

7、總線電路及信號驅動

(1)總線是各種信號線的集合,是嵌入式系統中各部件之間傳送數據、地址和控制信息的公共通路。在同一時刻,每條通路線路上能夠傳輸一位二進制信號。按照總線所傳送的信息類型,可以分爲數據總線(DB)、地址總線(AB)、控制總線(CB)。

(2)總線的主要參數

◆ 總線帶寬:一定時間內總線上可以傳送的數據量,一般用 MByte/s 表示。

◆ 總線寬度:總線能同時傳送的數據位數(bit),即人們常說的 32 位、64 位等總線寬度的概念,也叫總線位寬。總線的位寬越寬,總線每秒數據傳輸率越大,也就是總線帶寬越寬。

◆ 總線頻率:工作時鐘頻率以 MHz 爲單位,工作頻率越高,則總線工作速度越快,也即總線帶寬越寬。

總線帶寬 = 總線位寬 × 總線頻率 / 8,單位是 MBps。

◆ 常用總線:ISA 總線、PCI 總線、IIC 總線、SPI 總線、PC104 總線和 CAN 總線等。

(3)只有具有三態輸出的設備才能夠連接到數據總線上,常用的三態門爲輸出緩衝器。

(4)當總線上所接的負載超過總線的負載能力時,必須在總線和負載之間加接緩衝器或驅動器,最常用的是三態緩衝器,其作用是驅動和隔離。

(5)採用總線複用技術,可以實現數據總線和地址總線的共用,但會帶來兩個問題:一是需要增加外部電路對總線信號進行復用解耦,比如地址鎖存器;二是總線速度相對非複用總線系統低。

(6)兩類總線通信協議:同步方式、異步方式。

(7)對總線仲裁問題的解決是以優先級(優先權)的概念爲基礎。

8、電平轉換電路

(1)數字集成電路可以分爲兩大類:雙極型集成電路(TTL)、金屬氧化物半導體(MOS)。

(2)CMOS 電路由於其靜態功耗極低,工作速度較高,抗干擾能力較強,被廣泛使用。

(3)解決 TTL 與 CMOS 電路接口困難的辦法是在 TTL 電路輸出端與電源之間接一上拉電阻 R,上拉電阻 R 的取值由 TTL 的高電平輸出漏電流 IOH 來決定,不同系列的 TTL 應選用不同的 R 值。

9、可編程邏輯器件基礎

這方面的內容,從總體上有個概念性的認識應該就可以了。

10、嵌入式系統中信息表示與運算基礎

(1)進位計數制與轉換:這樣比較簡單,也應該掌握怎麼樣進行換算,有出題的可能。

(2)計算機中數的表示:源碼、反碼、補碼。

正數的反碼與源碼相同,負數的反碼爲該數的源碼除符號位外按位取反。正數的補碼與源碼相同,負數的補碼爲該數的反碼加一。例如:-98 的源碼爲 11100010B,反碼爲 10011101B,補碼爲 10011110B。

(3)定點表示法:數的小數點的位置人爲約定固定不變。

(4)浮點表示法:數的小數點位置是浮動的,它由尾數部分和階數部分組成。任意一個二進制 N 總可以寫成 N=2P×S,其中 S 爲尾數,P 爲階數。

(5)漢字表示法:搞清楚 GB2318-80 中國標碼和機內碼的變換。

(6)語音編碼中波形量化參數

◆ 採樣頻率:一秒內採樣的次數,反映了採樣點之間的間隔大小。人耳的聽覺上限是 20kHz,因此 40kHz 以上的採樣頻率足以使人滿意(CD 唱片採用的採樣頻率是 44.1kHz)。

◆ 測量精度:樣本的量化等級,目前標準採樣量級有 8 位和 16 位兩種。

◆ 聲道數:單聲道和立體聲雙道。立體聲需要兩倍的存儲空間。

11、差錯控制編碼

(1)根據碼組的功能,可以分爲檢錯碼和糾錯碼兩類。檢錯碼是指能自動發現差錯的碼,例如奇偶檢驗碼;糾錯碼是指不僅能發現差錯,而且能自動糾正差錯的碼,比如循環冗餘校驗碼。

(2)奇偶檢驗碼、海明碼、循環冗餘校驗碼(CRC)。

12、嵌入式系統的度量項目

(1)性能指標:分爲部件性能指標和綜合性能指標,主要包括:吞吐率、實時性和各種利用率。

(2)可靠性與安全性:可靠性是嵌入式系統最重要、最突出的基本要求,是一個嵌入式系統能正常工作的保證,一般用平均故障間隔時間 MTBF 來度量。

(3)可維護性:一般用平均修復時間 MTTR 表示。

(4)其它:可用性、功耗、環境適應性、通用性、安全性、保密性、可擴展性。

性價比中的價格,除了直接購買嵌入式系統的價格之外,還應包含安裝費用、若干年的運行維修費用和軟件租用費。

13、嵌入式系統的評價方法:測量法和模型法

(1)測量法是最直接最基本的方法,需要解決兩個問題:一是根據研究的目的,確定要測量的系統參數;二是選擇測量的工具和方式。

(2)測量的方式有兩種:採樣方式和事件跟蹤方式。

(3)模型法分爲分析模型法和模擬模型法。分析模型法是用一些數學方程去刻畫系統的模型,而模擬模型法是用模擬程序的運行去動態表達嵌入式系統的狀態,而進行系統統計分析,得出性能指標。

(4)分析模型法中使用最多的是排隊模型,它包括三個部分:輸入流、排隊規則和服務機構。

(5)使用模型對系統進行評價需要解決 3 個問題:設計模型、解模型、校準和證實模型。

接口技術

1、Flash 存儲器

(1)Flash 存儲器是一種非易失性存儲器,根據結構的不同可以將其分爲 NOR Flash 和 NAND Flash 兩種。

(2)Flash 存儲器的特點

◆ 區塊結構:在物理上分成若干個區塊,區塊之間相互獨立。

◆ 先擦後寫:Flash 的寫操作只能將數據位從 1 寫成 0,不能從 0 寫成 1,所以在對存儲器進行寫入之前必須先執行擦除操作,將預寫入的數據位初始化爲 1。擦除操作的最小單位是一個區塊,而不是單個字節。

◆ 操作指令:執行寫操作,它必須輸入一串特殊指令(NOR Flash)或者完成一段時序(NAND Flash)才能將數據寫入。

◆ 位反轉:由於 Flash 的固有特性,在讀寫過程中偶爾會產生一位或幾位的數據錯誤。位反轉無法避免,只能通過其他手段對結果進行事後處理。

◆ 壞塊:區塊一旦損壞,將無法進行修復。對已損壞的區塊操作其結果不可預測。

(3)NOR Flash 的特點:應用程序可以直接在閃存內運行,不需要再把代碼讀到系統 RAM 中運行。NOR Flash 的傳輸效率很高,在 1MB~4MB 的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。

(4)NAND Flash 的特點:能夠提高極高的密度單元,可以達到高存儲密度,並且寫入和擦除的速度也很快,這也是爲何所有的 U 盤都使用 NAND Flash 作爲存儲介質的原因。應用 NAND Flash 的困難,其實在於閃存需要特殊的系統接口。

(5)NOR Flash 與 NAND Flash 的區別

◆ NOR Flash 的讀速度比 NAND Flash 稍快一些。

◆ NAND Flash 的擦除和寫入速度比 NOR Flash 快很多

◆ NAND Flash 的隨機讀取能力差,適合大量數據的連續讀取。

◆ NOR Flash 帶有 SRAM 接口,有足夠的地址引進來尋址,可以很容易地存取其內部的每一個字節。NAND Flash 的地址、數據和命令共用 8 位總線(有寫公司的產品使用 16 位),每次讀寫都要使用複雜的 I/O 接口串行地存取數據。

◆ NOR Flash 的容量一般較小,通常在 1MB~8MB 之間;NAND Flash 只用在 8MB 以上的產品中。因此,NOR Flash 只要應用在代碼存儲介質中,NAND Flash 適用於資料存儲。

◆ NAND Flash 中每個塊的最大擦寫次數是一百萬次,而 NOR Flash 是十萬次。

◆ NOR Flash 可以像其他內存那樣連接,非常直接地使用,並可以在上面直接運行代碼;NAND Flash 需要特殊的 I/O 接口,在使用的時候,必須先寫入驅動程序,才能繼續執行其他操作。因爲設計師絕不能向壞塊寫入,這就意味着在 NAND Flash 上自始至終必須進行虛擬映像。

◆ NOR Flash 用於對數據可靠性要求較高的代碼存儲、通信產品、網絡處理等領域,被成爲代碼閃存;NAND Flash 則用於對存儲容量要求較高的 MP3、存儲卡、U 盤等領域,被成爲數據閃存。

2、RAM 存儲器

(1)SRAM 的特點:SRAM 表示靜態隨機存取存儲器,只要供電它就會保持一個值,它沒有刷新週期,由觸發器構成基本單元,集成度低,每個 SRAM 存儲單元由 6 個晶體管組成,因此其成本較高。它具有較高速率,常用於高速緩衝存儲器。通常 SRAM 有 4 種引腳:

◆ CE:片選信號,低電平有效。

◆ R/W:讀寫控制信號。

◆ ADDRESS:一組地址線。

◆ DATA:用於數據傳輸的一組雙向信號線。

(2)DRAM 的特點:DRAM 表示動態隨機存取存儲器,這是一種以電荷形式進行存儲的半導體存儲器。它的每個存儲單元由一個晶體管和一個電容器組成,數據存儲在電容器中。電容器會由於漏電而導致電荷丟失,因而 DRAM 器件是不穩定的。它必須有規律地進行刷新,從而將數據保存在存儲器中。DRAM 的接口比較複雜,通常有一下引腳:

◆ CE:片選信號,低電平有效。

◆ R/W:讀寫控制信號。

◆ RAS:行地址選通信號,通常接地址的高位部分。

◆ CAS:列地址選通信號,通常接地址的低位部分。

◆ ADDRESS:一組地址線。

◆ DATA:用於數據傳輸的一組雙向信號線。

(3)SDRAM 的特點:SDRAM 表示同步動態隨機存取存儲器。同步是指內存工作需要同步時鐘,內部的命令發送與數據的傳輸都以它爲基準;動態是指存儲器陣列需要不斷的刷新來保證數據不丟失。它通常只能工作在 133MHz 的主頻。

(4)DDRAM 的特點:DDRAM 表示雙倍速率同步動態隨機存取存儲器,也稱 DDR。DDRAM 是基於 SDRAM 技術的,SDRAM 在一個時鐘週期內只傳輸一次數據,它是在時鐘的上升期進行數據傳輸;而 DDR 內存則是一個時鐘週期內傳輸兩次次數據,它能夠在時鐘的上升期和下降期各傳輸一次數據。在 133MHz 的主頻下,DDR 內存帶寬可以達到 133×64b/8×2=2.1GB/s。

3、硬盤、光盤、CF 卡、SD 卡

4、GPIO 原理與結構

GPIO 是 I/O 的最基本形式,它是一組輸入引腳或輸出引腳。有些 GPIO 引腳能夠加以編程改變工作方向,通常有兩個控制寄存器:數據寄存器、數據方向寄存器。

數據方向寄存器設置端口的方向。如果將引腳設置爲輸出,那麼數據寄存器將控制着該引腳狀態。若將引腳設置爲輸入,則此輸入引腳的狀態由引腳上的邏輯電路層來實現對它的控制。

5、A/D 接口

(1)A/D 轉換器是把電模擬量轉換爲數字量的電路,實現 A/D 轉換的方法有很多,常用的方法有計數法、雙積分法和逐次逼進法。

(2)計數式 A/D 轉換法:這種電路主要部件包括比較器、計數器、D/A 轉換器和標準電壓源。

至於其工作原理,簡單來說就是有一個計數器,從 0 開始進行加 1 計數,每進行一次加 1,該數值作爲 D/A 轉換器的輸入,其產生一個比較電壓 VO 與輸入模擬電壓 VIN 進行比較。如果 VO 小於 VIN 則繼續進行加 1 計數,直到 VO 大於 VIN,這時計數器的累加數值就是 A/D 轉換器的輸出值。

這種轉換方式的特點是簡單,但是速度比較慢,特別是模擬電壓較高時,轉換速度更慢。例如對於一個 8 位 A/D 轉換器,若輸入模擬量爲最大值,計數器要從 0 開始計數到 255,做 255 次 D/A 轉換和電壓比較的工作,才能完成轉換。

(3)雙積分式 A/D 轉換法:這種電路主要部件包括積分器、比較器、計數器和標準電壓源。

工作原理是電路對輸入待測電壓進行固定時間的積分,然後換爲標準電壓進行固定斜率的反向積分,反向積分進行到一定時間,便返回起始值。由於使用固定斜率,對標準電壓進行反向積分的時間正比於輸入模擬電壓值,輸入模擬電壓越大,反向積分回到起始值的時間越長。只要用標準的高頻時鐘脈衝測定反向積分花費的時間,就可以得到相應於輸入模擬電壓的數字量,也就完成了 A/D 轉換。

主要特點是具有很強的抗工頻干擾能力,轉換精度高,但轉換速度慢,通常轉換頻率小於 10Hz,主要用於數字式測試儀表、溫度測量等方面。

(4)逐次逼近式 A/D 轉換法:這種電路主要部件包括比較器、D/A 轉換器、逐次逼近寄存器和基準電壓源。

工作原理實質上就是對分搜索法,和平時天平的使用原理一樣。在進行 A/D 轉換時,由 D/A 轉換器從高位到低位逐位增加轉換位數,產生不同的輸出電壓,把輸入電壓與輸出電壓進行比較而實現。首先使最高位爲 1,這相當於取出基準電壓的 1/2 與輸入電壓比較,如果在輸入電壓小於 1/2 的基準電壓,則最高位置 0,反之置 1。之後,次高位置 1,相當於在 1/2 的範圍中再作對分搜索,以此類推,逐次逼近。

主要特點是速度快,轉換精度高,對 N 位 A/D 轉換器只需要 M 個時鐘脈衝即可完成,一般可用於測量幾十到幾百微秒的過渡過程的變化,是目前應用最普遍的轉換方法。

(5)A/D 轉換的重要指標

◆ 分辨率:反映 A/D 轉換器對輸入微小變化響應的能力,通常用數字輸出最低位(LSB)所對應的模擬電壓的電平值表示。n 位 A/D 轉換器能反映 1/2n 滿量程的模擬輸入電平。

◆ 量程:所能轉換的模擬輸入電壓範圍,分爲單極性和雙極性兩種類型。

◆ 轉換時間:完成一次 A/D 轉換所需要的時間,其倒數爲轉換速率。

◆ 精度:精度與分辨率是兩個不同的概念,即使分辨率很高,也可能由於溫漂、線性度等原因使其精度不夠高。精度有絕對精度和相對精度兩種表示方法。通常用數字量的最低有效位 LSB 的分數值來表示絕對精度,用其模擬電壓滿量程的百分比來表示相對精度。例如,滿量程 10V,10 位 A/D 芯片,若其絕對精度爲 ±1/2LSB,則其最小有效位 LSB 的量化單位爲:10/1024=9.77mv,其絕對精度爲 9.77mv/2=4.88mv,相對精度爲 0.048%。

6、D/A 接口基本

(1)D/A 轉換器使將數字量轉換爲模擬量。

(2)在集成電路中,通常採用 T 型網絡實現將數字量轉換爲模擬電流,再由運算放大器將模擬電路轉換爲模擬電壓。進行 D/A 轉換,實際上需要上面的兩個環節。

(3)D/A 轉換器的分類

◆ 電壓輸出型:常作爲高速 D/A 轉換器。

◆ 電流輸出型:一般外接運算放大器使用。

◆ 乘算型:可用作調製器和使輸入信號數字化地衰減。

(4)D/A 轉換器的主要指標:分辨率、建立時間、線性度、轉換精度、溫度係數。

7、鍵盤接口

(1)鍵盤的兩種形式:線性鍵盤和矩陣鍵盤。

(2)識別鍵盤上的閉合鍵通常有兩種方法:行掃描法和行反轉法。

(3)行掃描法是矩陣鍵盤按鍵常用的識別方法,此方法分爲兩步進行:

◆ 識別鍵盤哪一列的鍵被按下:讓所有行線均爲低電平,查詢各列線電平是否爲低,如果有列線爲低,則說明該列有按鍵被按下,否則說明無按鍵按下。

◆ 如果某列有按鍵按下,識別鍵盤是哪一行按下:逐行置低電平,並置其餘各行爲高電平,查詢各列的變化,如果列電平變爲低電平,則可確定此行此列交叉點處按鍵被按下。

8、顯示接口

(1)LCD 的基本原理是,通過給不同的液晶單元供電,控制其光線的通過與否,從而達到顯示的目的。

(2)LCD 的光源提供方式有兩種:投射式和反射式。筆記本電腦的 LCD 顯示器爲投射式,屏的背後有一個光源,因此外界環境可以不需要光源。一般微控制器上使用的 LCD 爲反射式,需要外界提供電源,靠反射光來工作。電致發光(EL)是液晶屏提供光源的一種方式。

(3)按照液晶驅動方式分類,常見的 LCD 可以分爲三類:扭轉向列類(TN)、超扭曲向列型(STN)和薄膜晶體管型(TFT)。

(4)市面上出售的 LCD 有兩種類型:帶有驅動電路的 LCD 顯示模塊,只要總線方式驅動;沒有驅動電路的 LCD 顯示器,使用控制器掃描方式。

(5)通常情況下,LCD 控制器工作的時候,通過 DMA 請求總線,直接通過 SDRAM 控制器讀取 SDRAM 中指定地址(顯示緩衝區)的數據,此數據經過 LCD 控制器轉換成液晶屏掃描數據格式,直接驅動液晶顯示器。

(6)VGA 接口本質上是一個模擬接口,一般都採用統一的 15 引腳接口,包括 2 個 NC 信號、3 根顯示器數據總線、5 個 GND 信號、3 個 RGB 色彩分量、1 個行同步信號和 1 個場同步信號。其色彩分量採用的電平標準爲 EIA 定義的 RS343 標準。

9、觸摸屏接口

(1)按工作原理分,觸摸屏可以分爲表面聲波屏、電容屏、電阻屏和紅外屏幾種。

(2)觸摸屏的控制採用專業芯片,例如 ADS7843。

10、音頻接口

(1)基本原理:麥克風輸入的數據經音頻編解碼器解碼完成 A/D 轉換,解碼後的音頻數據通過音頻控制器送入 DSP 或 CPU 進行相應的處理,然後數據經音頻控制器發送給音頻編碼器,經編碼 D/A 轉換後由揚聲器輸出。

(2)數字音頻的格式有多種,最常用的是下面三種:

◆ 採用數字音頻(PCM):是 CD 或 DVD 採用的數據格式。其採樣頻率爲 44.1kHz。精度爲 16 位時,PCM 音頻數據速率爲 1.41Mb/s;精度爲 32 位時爲 2.42 Mb/s。一張 700MB 的 CD 可以保存大約 60 分鐘的 16 位 PCM 數據格式的音樂。

◆ MPEG 層 3 音頻(MP3):MP3 播放器採用的音頻格式。立體聲 MP3 數據速率爲 112kb/s 至 128kb/s。

◆ ATSC 數字音頻壓縮標準(AC3):數字 TV、HDTV 和電影數字音頻編碼標準,立體聲 AC3 編碼後的數據速率爲 192kb/s。

(3)IIS 是音頻數據的編碼,或解碼常用的串行音頻數字接口。IIS 總線只處理聲音數據,其他控制信號等則需要單獨傳輸。IIS 使用了 3 根串行總線,即數據線 SD、字段選擇線 WS、時鐘信號線 SCK。

(4)當接收方和發送方的數據字段寬度不一樣時,發送方不考慮接收方的數據字段寬度。如果發送方發送的數據字段小於系統字段寬度,就在低位補 0;如果發送方的數據寬度大於接收方的寬度,則超過 LSB 的部分被截斷。

字段選擇 WS 用來選擇左右聲道,WS=0 表示選擇左聲道;WS=1 表示選擇右聲道。此外,WS 能讓接收設備存儲前一個字節,並準備接收下一個字節。

11、串行接口

(1)串行通信是指,使數據_% 位一位地進行傳輸而實現的通信。與並行通信相比,串行通信具有傳輸線少、成本低等優點,特別適合遠距離傳送;缺點則是速度慢。

(2)串行數據傳送有 3 種基本的通信模式:單工、半雙工、全雙工。

(3)串行通信在信息格式上可以分爲 2 種方式:同步通信和異步通信。

◆ 異步傳輸:把每個字符當作獨立的信息來傳輸,並按照一固定且預定的時序傳送,但在字符之間卻取決於字符與字符的任意時序。異步通信時,字符是一幀一幀傳送的,每幀字符的傳送靠起始位來同步。一幀數據的各個代碼間間隔是固定的,而相鄰兩幀數據其時間間隔是不固定的。

◆ 同步傳輸:同步方式不僅在字符之間是同步的,而且在字符與字符之間的時序仍然是同步的,即同步方式是將許多字符 ****** 成一字符塊後,在每塊信息之前要加上 1~2 個同步字符,字符塊之後再加入適當的錯誤檢測數據才傳送出去。

(4)異步通信必須遵循三項規定

◆ 字符格式:起始位 + 數據 + 校驗位 + 停止位(檢驗位可無),低位先傳送。

◆ 波特率:每秒傳送的位數。

◆ 校驗位:奇偶檢驗。

◆ 奇校驗:要使字符加上校驗位有奇數個 “1”。

◆ 偶檢驗:要使字符加上校驗位有偶數個 “1”。

(5)RS-232C 的電氣特性:負邏輯。

◆ 在 TxD 和 RxD 上:邏輯 1 爲 - 3V~-15V,邏輯 0 爲 3V~15V。

◆ 在 TES、CTS、DTR、DCD 等控制線上:信號有效(ON 狀態)爲 3V~15V;信號無效(OFF 狀態)爲 - 3V~-15V。

(6)TTL 標準與 RS-232C 標準之間的電平轉換,利用集成芯片 RS232 實現。

(7)RS-422 串行通信接口

◆ RS-422 是一種單機發送、多機接收的單向、平衡傳輸規範,傳輸速率可達 10Mb/s。

◆ RS-422 採用差分傳輸方式,也稱做平衡傳輸,使用一對雙絞線。

◆ RS-422 需要一終端電阻,要求其阻值約等於傳輸電纜的特性阻抗。

(8)RS-485 串行總線接口

◆ RS-485 是在 RS-422 的基礎上建立的標準,增加了多點、雙向通信能力,通信距離可爲幾十米到上千米。

◆ RS-485 收發器採用平衡發送和差分接收,具有抑制共模干擾的能力。

◆ RS-485 需要兩個終端電阻,在近距離(300m 以下)傳輸可不需要終端電阻。

12、並行接口

(1)並行接口的數據傳輸率比串行接口快 8 倍,標準並行接口的數據傳輸率爲 1Mb/s,一般用來連接打印機、掃描儀等,所以又稱打印口。

(2)並行接口可以分爲 SPP(標準並口)、EPP(增強型並口)和 ECP(擴展型並口)。

(3)並行總線分爲標準和非標準兩類,常用的並行標準總線有 IEEE 488 總線和 ANSI SCSI 總線,而 MXI 總線是一種高性能非標準的通用多用戶並行總線。

13、PCI 接口

(1)PCI 總線是地址、數據多路複用的高性能 32 位和 64 位總線,是微處理器與外圍控制部件、外圍附加板之間的互連機構。

(2)從數據寬度上看,PCI 定義了 32 位數據總線,且可擴展爲 64 位。從總線速度上分,有 33MHz 和 66MHz 兩種。

(3)與 ISA 總線相比,PCI 總線的地址總線與數據總線分時複用,支持即插即用、中斷共享等功能。

14、USB 接口

(1)USB 總線的主要特點

◆ 使用簡單,即插即用。

◆ 每個 USB 系統中都有主機,這個 USB 網絡中最多可以連接 127 個設備。

◆ 應用範圍廣,支持多個設備同時操作。

◆ 低成本的電纜和連接器,使用統一的 4 引腳插頭。

◆ 較強的糾錯能力。

◆ 較低的協議開銷帶來了高的總線性能,且適合於低成本外設的開發。

◆ 支持主機與設備之間的多數據流和多消息流傳輸,且支持同步和異步傳輸類型。

◆ 總線供電,能爲設備提供 5V/100mA 的供電。

(2)USB 系統由三部分來描述:USB 主機、USB 設備和 USB 互連。

(3)USB 總線支持的數據傳輸率有三種:高速信令位傳輸率爲 480Mb/s、全速信令位傳輸率爲 12Mb/s、全速信令位傳輸率爲 1.5Mb/s。

(4)USB 總線電纜有四根線:一對雙絞信號線和一對電源線。

(5)USB 是一種查詢總線,由主控制器啓動所有的數據傳輸。USB 上所掛接的外設通過由主機調度的、基於令牌的協議來共享 USB 帶寬。

(6)大部分總線事務涉及三個包的傳輸

◆ 令牌包:指示總線上要執行什麼事務,欲尋址的 USB 設備及數據傳送方向。

◆ 數據包:傳輸數據或指示它沒有數據要傳輸。

◆ 握手包:指示傳輸是否成功。

(7)主機與設備端點之間的 USB 數據傳輸模型,被稱作管道。管道有兩種類型,即流和消息。消息數據具有 USB 定義的結構,而數據流沒有。

(8)事務調度表允許對某些流管道進行流量控制,在硬件級,通過使用 NAK(否認)握手信號來調節數據傳輸率,以防止緩衝區上溢或下溢產生。

(9)USB 設備最大的特點:即插即用。

(10)工作原理:USB 設備插入 USB 端點時,主機都通過默認地址 0 與設備的端點 0 進行通信。在這個過程中,主機發出一系列試圖得到描述符的標準請求,通過這些請求,主機得到所有感興趣的設備信息,從而知道了設備的情況以及該如何與設備通信。隨後主機通過發出 Set Address 請求爲設備設置一個唯一的地址。以後主機就通過爲設備設置好的地址與設備通信,而不再使用默認地址 0。

15、SPI 接口

(1)SPI 是一個同步協議接口,所有的傳輸都參照一個共同的時鐘,這個同步時鐘有主機產生,接收數據的外設使用時鐘來對串行比特流的接收進行同步化。

(2)在多個設備連接到主機的同一個 SPI 接口時,主機通過從設備的片選引腳來選擇。

(3)SPI 主要使用四個信號:主機輸出 / 從機輸入(MOSI),主機輸入 / 從機輸出(MISO)、串行時鐘 SCLK 和外設片選 CS。

(4)主機和外設都包含一個串行移位寄存器,主機通過向它的 SPI 串行寄存器寫入一個字節來發起一次數據傳輸。寄存器通過 MOSI 信號線將字節傳送給外設,外設也將自己移位寄存器中的內容通過 MISO 信號線返回給主機,這樣,兩個移位寄存器中的內容就被交換了。

(5)外設的寫操作和讀操作時同步完成的,因此 SPI 成爲一個很有效的協議。

(6)如果只是進行寫操作,主機只需忽略收到的字節;反之,如果主機要讀取外設的一個字節,就必須發送一個空字節來引發從機的傳輸。

16、IIC 接口

(1)IIC 總線是具備總線仲裁和高低速設備同步等功能的高性能多主機總線。

(2)IIC 總線上需要兩條線:串行數據線 SDA 和串行時鐘線 SCL。

(3)總線上的每個器件都有唯一的地址以供識別,而且各器件都可以作爲一個發送器或者接收器(由器件的功能決定)。

(4)IIC 總線有四種操作模式:主發送、主接收、從發送、從接收。

(5)IIC 在傳送數據過程 ****** 有三種類型信號

◆ 開始信號:SCL 爲低電平時,SDA 由高向低跳變。

◆ 結束信號:SCL 爲低電平時,SDA 由低向高跳變。

◆ 應答信號:接收方在收到 8 位數據後,在第 9 個脈衝向發送方發出特點的低電平。

(6)主器件發送一個開始信號後,它還會立即送出一個從地址,來通知將與它進行數據通信的從器件。1 個字節的地址包括 7 位地址信息和 1 位傳輸方向指示位,如果第 7 位爲 0,表示要進行一個寫操作;如果爲 1,表示要進行一個讀操作。

(7)SDA 線上傳輸的每個字節長度都是 8 位,每次傳輸種字節的數量沒有限制的。在開始信號後面的第一個字節是地址域,之後每個傳輸字節後面都有一個應答位(ACK),傳輸中串行數據的 MSB(字節高位)首先發送。

(8)如果數據接收方無法再接收更多的數據,它可以通過將 SCL 保持低電平來中斷傳輸,這樣可以迫使數據發送方等待,直到 SCL 被重新釋放,這樣可以達到高低速設備同步。

(9)IIC 總線的工作過程:SDA 和 SCL 都是雙向的。空閒的時候,SDA 和 SCL 都是高電平,只有 SDA 變爲低電平,接着 SCL 再變爲低電平,IIC 總線的數據傳輸纔開始。SDA 線上被傳輸的每一位在 SCL 的上升沿被採樣,該位必須一直保持有效到 SCL 再次變爲低電平,然後 SDA 就在 SCL 再次變爲高電平之前傳輸下一個位。最後,SCL 變回高電平,接着 SDA 也變爲高電平,表示數據傳輸結束。

17、以太網接口

(1)最常用的以太網協議:IEEE802.3 標準。

(2)傳輸編碼:曼徹斯特編碼和差分曼徹斯特編碼。

◆ 曼徹斯特編碼:每位中間有一個電平跳變,從高到底的跳變表示 “0”,從低到高的跳變表示爲 “1”。

◆ 差分曼徹斯特編碼:每位中間有一個電平跳變,利用每個碼元開始時有無跳變來表示 “0” 或“1”,有跳變爲“0”,無跳變爲“1”。

(3)相比之下,曼徹斯特編碼編碼簡單,差分曼徹斯特編碼提供更好的噪聲抑制性能。

(4)以太網數據傳輸特點

◆ 所有數據位的傳輸由低位開始,傳輸的位流時用曼徹斯特編碼。

◆ 以太網是基於衝突檢測的總線複用方法,由硬件自動執行。

◆ 傳輸的數據長度,目的地址 DA+源地址 SA+類型字段 TYPE+數據段 DATA+填充位 PAD,最小爲 60B,最大爲 1514B。

◆ 通常以太網卡可以接收三種地址的數據:廣播地址、多播地址、自己的地址。

◆ 任何兩個網卡的物理地址都不一樣,是世界上唯一的,網卡地址由專門機構分配。

(5)嵌入式以太網接口有兩種實現方法:一是,嵌入式處理器 + 網卡芯片(如 RTL8019AS、CS8900 等);二是,帶有以太網接口的處理器。

(6)TCP/IP 是一個分層協議,分爲物理層、數據鏈路層、網絡層、傳輸層和應用層。每層實現一個明確的功能,對應一個或幾個傳輸協議,每層相對於它的下層都作爲一個獨立的數據包來實現。每層上的協議如下:

◆ 應用層:BSD 套接字。

◆ 傳輸層:TCP、UDP。

◆ 網絡層:IP、ARP、ICMP、IGMP

◆ 數據鏈路層:IEEE802.3 Ethernet MAC

◆ 物理層:二進制比特流。

(7)ARP(地址解析協議):網絡層用 32 位的地址來標識不同的主機(即 IP 地址),而鏈路層使用 48 位的物理地址(MAC)來標識不同的以太網或令牌網接口。至於 ARP 的功能,則是爲了實現從 IP 地址到對應物理地址的轉換。

(8)ICMP(網絡控制報文協議)

◆ IP 層用它來與其他主機或路由器交換錯誤報文和其他重要控制信息。

◆ ICMP 報文是在 IP 數據包內被傳輸的。

◆ 網絡診斷工具 ping 和 traceroute 其實就是 ICMP 協議。

(9)IP(網際協議)

◆ IP 工作在網絡層,是 TCP/IP 協議族中最爲核心的協議。

◆ 所有的 TCP、UDP、ICMP 及 IGMP 數據都以 IP 數據包格式傳輸。

◆ TTL(生存時間字段):指定了 IP 數據包的生存時間(數據包可以經過的路由器數)。

◆ IP 提供不可靠、無連接的數據包傳送服務,高效、靈活。

(10)TCP(傳輸控制協議):TCP 協議是一個面向連接的可靠的傳輸層協議,它爲兩臺主機提供高可靠性的端到端數據通信。

(11)UDP(用戶數據包協議):UDP 協議是一種無連接不可靠的傳輸層協議,它不保證數據包能到達目的地,可靠性有應用層來提供。UDP 協議開銷少,和 TCP 相比更適合於應用在低端的嵌入式領域中。

(12)端口:TCP 和 UDP 採用 16 位端口號來識別上層的用戶,即應用層協議,例如 FTP 服務的 TCP 端口號都是 21,Telnet 服務的 TCP 端口號都是 23,TFTP 服務的 UDP 端口號都是 69。

18、CAN 總線接口

(1)CAN(Control Area Network,控制器局域網)總線是一種多主方式的串行通信總線,是國際上應用最廣泛的現場總線之一,最初被用於汽車環境中的電子控制網絡。一個 CAN 總線構成的單一網絡中,理想情況下可以掛接任意多個節點,實際應用中節點數據受網絡硬件的電氣特性所限制。

(2)總線信號使用差分電壓傳送,兩條信號線被稱爲 CAN_H 和 CAN_L,靜態是均爲 2.5V 左右,此時狀態表示邏輯 1,也可以叫做 “隱性”。用 CAN_H 比 CAN_L 高表示邏輯 0,稱爲 “顯性”,此時通常電壓值爲 CAN_H=3.5V 和 CAN_L=1.5V。

(3)當 “顯性” 和“隱性”位同時發送的時候,最後總線數值將爲 “顯性” 這種特性爲 CAN 總線的仲裁奠定了基礎。

(4)CAN 總線的一個位時間可以分成四個部分:同步段、傳播時間段、相位緩衝段 1 和相位緩衝段 2。

(5)CAN 總線的數據幀有兩種格式,即標準格式和擴展格式,主要包括幀起始、仲裁場、控制場、數據場、CRC 場、ACK 場和幀結束。

(6)CAN 總線硬件接口包括:CAN 總線控制器和 CAN 收發器。其中,CAN 控制器主要完成時序邏輯轉換等工作,例如菲利普的 SJA1000。CAN 收發器是 CAN 總線的物理層芯片,實現 TTL 電平到 CAN 總線電平特性的轉換,例如 TJA1050。

19、xDSL 接口

(1)xDSL(數字用戶線路)技術,是在現有用戶電話線兩側同時接入專用的 DSL 調製解調設備,在用戶線上利用數字數字信號高頻帶寬較寬的特性直接採用數字信號傳輸,省去中間的 A/D 轉換,突破了模擬信號傳輸極限速率爲 56KB/s 的閒置。

(2)DSL 技術兩大分類:對稱和非對稱。

(3)對成 xDSL 更適合於企業點對點連接應用,比如文件傳輸、視頻會議等收發數據量大致相同的工作。

(4)ASDL 是近年發展的另一種寬帶接入技術,是利用雙絞銅線向用戶提供兩個方向上速率不對稱的寬帶信息業務。

(5)ADSL 在一對電話線上同時傳送一路高速下行數據、一路較低速率上行數據、一路模擬電話。各信號之間採用頻分複用方式佔用不同頻帶,低頻段傳送話音;中間窄頻帶傳送上行信道數據及控制信息;其餘高頻段傳送下行信道數據、圖像或高速數據。

20、WLAN 接口

(1)WLAN:英文全稱爲 Wireless Local Area Network。WLAN 是利用無線通信技術在一定的局部範圍內建立的,是計算機網絡與無線通信技術相結合的產物。它以無線多址通道作爲傳輸媒介,提供有線局域網的功能。

(2)WLAN 的標準:主要是針對物理層和媒質訪問控制層(MAC 層),涉及到所有使用的無線頻率範圍、控制接口通信協議等技術規範與技術標準。

◆ IEEE 802.11:定義了物理層和 MAC 層規範,工作在 2.4~2.4835GHz 頻段,最高速率爲 2Mb/s,是 IEEE 最初制定的一個無線局域網標準。

◆ IEEE 802.11b:工作在 2.4~2.4835GHz 頻段,最高速率爲 11Mb/s,傳輸距離 50~150inch。採用點對點模式和基本模式兩種運行模式。在數據傳輸速率方面可以根據實際情況在 11Mb/s、5.5Mb/s、2 Mb/s、1 Mb/s 的不同速率間自動切換。

◆ IEEE 802.11a:工作在 5.15~8.825GHz 頻段,最高速率爲 54Mb/s/72Mb/s,傳輸距離 10~100m。

◆ IEEE 802.11g:混合標準,擁有 EEE 802.11a 的傳輸速率,安全性較 EEE 802.11b 好,採用兩種調製方式,做到與 EEE 802.11a 和 EEE 802.11b 兼容。

(3)WLAN 有兩種網絡類型:對等網絡和基礎機構網絡。

21、藍牙接口

(1)藍牙技術的目的:使特定的移動電話、便鞋式電腦以及各種便攜通信設備的主機之間近距離內實現無縫的資源共享。

(2)藍牙技術的實質內容,是要建立通用的無線空中接口及其控制軟件的公開標準。其工作頻段爲全球通用的 2.4GHz ISM(即工業、科學、醫學)頻段,其數據傳輸速率爲 1Mb/s,採用時分雙工方案來實現全雙工傳輸,其理想的連接範圍爲 10cm~10m。

(3)藍牙基帶協議:是電路交換和分組交換的結合。

(4)藍牙技術特點

◆ 傳輸距離短,工作距離在 10m 以內。

◆ 採用跳頻擴頻技術。

◆ 採用時分複用多路訪問技術,有效地避免了 “碰撞” 和“隱藏終端”等問題。

◆ 網絡技術。

◆ 語言支持。

◆ 糾錯技術,其採用的是 FEC(前向糾錯)方案。

(5)藍牙接口由三大單元組成:無線單元、基帶單元、鏈路管理與控制單元。

22、1394 接口

(1)1394 作爲一種標準總線,可以在不同的工業設備之間架起一座溝通的橋樑,在一條總線上可以接入 63 個設備。

(2)IEEE 1394 的特點

◆ 支持多種總線速度,適應不同應用要求。

◆ 即插即用,支持熱插拔。

◆ 支持同步和異步兩種傳輸方式。

◆ 支持點到點通信模式,IEEE 1394 是多主總線。

◆ 遵循 ANSI IEEE 1212 控制及狀態寄存器(CSR)標準,定義了 64 位的地址空間,可尋址 1024 條總線的 63 個節點,每個節點可包含 256TB 的內存空間。

◆ 支持較遠距離的傳輸。

◆ 支持公平仲裁原則,爲每一種傳輸方式保證足夠的傳輸帶寬。

◆ 六線電纜具有電源線,可傳輸 8~40V 的直流電壓。

(3)IEEE 1394 的協議棧由三層組成:物理層、鏈路層和事務層,此外還有一個管理層。物理層和鏈路層由硬件構成,而事務層主要由軟件實現。

◆ 物理層提供 IEEE 1394 的電氣和機械接口,功能是重組字節流並將它們發送到目的節點上去。

◆ 鏈路層提供了給事務層確認的數據服務,包括:尋址、數據組幀和數據校驗。

◆ 事務層爲應用提供服務。

◆ 管理層定義了一個管理節點所使用的所有協議、服務以及進程。

23、電源接口

(1)DC-DC 轉換器有三種類型

◆ 線性穩壓器:產生較輸入電壓低的電壓。

◆ 開關穩壓器:能升高電壓、降低電壓或翻轉輸入電壓。

◆ 充電泵:可以升高、降低或翻轉輸入電壓,但電流驅動能力有限。

(2)任何變壓器的轉換過程都不具有 100%的效率,穩壓器本省也使用電流(靜態電流),這個電流來自輸入電流。靜態電流越大,穩壓器功耗越大。

(3)線性穩壓器輸入輸出使用退耦電容來過濾,電容除了有助於平穩電壓以外,還有利於去除電源中的瞬間短時脈衝波形干擾。

(4)電壓與功耗之間的平方關係意味着理想高效的方法是在要求較低電壓的較低時鐘速率上執行代碼,而不是先以最高的時鐘速率執行代碼然後再轉爲空閒休眠。

(5)電源通常被認爲是整個系統的 “心臟”,絕大多數電子設備 50%~80%的節能潛力在於電源系統,研製開發新型開關電源是節能的主要舉措之一。

(6)降低功耗的設計技術:採用低功耗器件,例如選用 CMOS 電路芯片;採用高集成度專用器件,外部設備的選擇也要儘量支持低功耗設計;動態調整處理器的時鐘頻率和電壓,在允許的情況下儘量使用低頻率器件;利用 “節電” 工作方式;實現電源管理,設計外部器件電源控制電路,控制 “耗電大戶” 的供電情況;合理處理器件空餘引腳:

◆ 大多數數字電路的輸出端在輸出低電平時,其功耗遠遠大於輸出高電平時的功耗,設計時應該注意控制低電平的輸出時間,閒置時使其處於高電平輸出狀態。

◆ 多餘的非門、與非門的輸入端應接低電平,多餘的與門、或門的輸入端應接高電平。

◆ ROM 或 RAM 及其他有片選信號的器件,不要將 “片選” 引腳直接接地,避免器件長期被接通,而應該與 “讀 / 寫” 信號結合,只對其進行讀寫操作時才選通。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/PI9VPraFbxRNRCzw5mTQeA