【單晶片入門】(一)應用層軟體開發的單晶片學習之路-基礎知識入門

【單晶片入門】(一)應用層軟體開發的單晶片學習之路-基礎知識入門

硬體也有很多可玩之處,相比於軟體,看得見摸得著的東西可能更容易令人接受,做出成品也更容易有成就感

最後更新 2022/10/13 上午8:05
陈显达
預計閱讀 10 分鐘
分類
分享
標籤
硬體相關

本文由網友投稿,站長是一點都不懂硬體。

作者:陳顯達

原文標題:【單晶片入門】(一)應用層軟體開發的單晶片學習之路-----基礎知識入門

原文連結:https://www.cnblogs.com/1996-Chinese-Chen/p/16786374.html

引言

工作了五六年,一直都是以軟體為主,期間也是各個方向都玩,行動端,PC 端,網頁端,後面在去年西安疫情的那一個月,突然覺得硬體也有很多可玩之處,相比於軟體,看得見摸得著的東西可能更容易令人接受,做出成品也更容易有成就感,所以在那段時間我就去研究了一下樹莓派,然後當時用 node 還有 c#操控樹莓派來進行和感測器等電子元件進行互動,有興趣的可以看看我之前的文章C#控制樹莓派入門 - 四處觀察 - 部落格園 (cnblogs.com),這篇文章僅僅用了做樹莓派的入門,實際上,和我們這篇單晶片的入門實際上也是有一些共性相通的地方。接下來,讓我們一起了解一下單晶片的入門基礎知識吧。

何為單晶片

單晶片。最小電腦執行系統,百度百科做的解釋積體電路晶片,是採用超大規模積體電路技術把具有資料處理能力的 CPU、隨機記憶體 RAM、唯讀記憶體 ROM、多種 I/O 口和中斷系統、計時器/計數器等功能(可能還包括顯示驅動電路、脈寬調變電路、類比多路轉換器、A/D 轉換器等電路)整合到一塊矽片上構成的一個小而完善的微型電腦系統,在工業控制領域廣泛應用。從上世紀 80 年代,由當時的 4 位、8 位單晶片,發展到現在的 300M 的高速單晶片。

可以看到,一個單晶片基本上可以當作是一個小型電腦,具有儲存,計算,輸入和輸出,計時計時器等能力,當然了,我們一台完整的電腦與我們進行互動,也是透過 IO 去進行互動,透過滑鼠或者鍵盤連接到 IO 口上就可以在電腦上面進行輸入輸出,那普通的單晶片上面的輸入輸出就需要透過單晶片上面的 IO 口,就是那些針腳去進行通訊,可以看如下圖,這是一個 ESP32 的一個單晶片,上面包括了那麼多的 IO 引腳,統稱為 GPIO,那麼這個 GPIO 是何方神聖呢,GPIO 的全稱是 General-purpose input/output,翻譯過來也就是通用的輸入輸出介面,在這個單晶片上面一共有四十個 gpio 介面。

單晶片介面

按照 GPIO 分類可以分為:

POWER,電源介面,下圖這個開發板上面有一個 3.3V 和一個 5V 的一個電源介面,同時可以用來做輸入或者輸出電源,用來給單晶片進行供電,或者複雜的接串聯給整體專案中的所有電子元件進行供電。

GND:電線接地端介面,上面的 POWER 是正極,那麼 GND 就是電路中的負極,或者接地線路。

GPIO:就是可以作為通用的輸入輸出介面,可以用來和電子元件進行互動,例如讓一個 LED 燈亮起來,可以使用 GPIO 的輸出高低位來進行讓 LED 亮起來,高低位,則是給電子元件進行釋放電流或者關閉電流就是一個開關,這裡不做過多解釋,後面我們會做實驗一步一步,讓大家學會。

ADC:類比數位轉換器,將輸入的一個類比訊號的電壓,轉為數字,將輸入的類比電壓或電流轉換為表示電壓或電流的大小的數字,獲取到採集的資料,然後轉為具體的數字,例如溫度感測器,氣壓感測器等等,都是透過獲取的類比訊號電壓,轉為具體的數字。

CONTROL:控制引腳,通常單晶片帶了一個 EN 的按鈕用來重啟單晶片,如果將線路接入到這個 EN 引腳則可以控制單晶片進行重啟。

UART:序列埠通訊的一種,通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter),同一套 UART,具有兩個引腳,一個是 RX,一個是 TX 引腳,RX 用來接收資料,TX 引腳用來寫入資料,可以看到 R 的全稱是 Receiver 用來接收,T 的全稱是 Transmitter,用來傳輸資料,如果我們有一個 USB 轉 TTL 模組,則可以使用 PC 和我們的單晶片進行通訊發送接收資料,忘了提一嘴,通常用來做序列埠通訊的時候,RX 引腳必須接通訊方的 TX 引腳,TX 引腳和 RX 引腳相接,即 A 和 B 兩個單晶片,需要進行 UART 序列埠通訊,那麼 A 的 RX 介面必須和 B 的 TX 介面相接,A 的 TX 介面必須和 B 的 RX 介面相接,A 接收資料來自於 B 的 TX,A 的發送資料 A 的 TX 然後 A 寫入到 B 的 RX,除非電子元件有特別改動,通常情況都是 RX 接 TX,TX 接 RX。

SPI:是序列周邊介面(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通訊匯流排,並且在晶片的管腳上只佔用四根線,分別是

  • (1)MISO– Master Input Slave Output,主設備資料輸入,從設備資料輸出;
  • (2)MOSI– Master Output Slave Input,主設備資料輸出,從設備資料輸入;
  • (3)SCLK – Serial Clock,時脈訊號,由主設備產生;
  • (4)CS – Chip Select,從設備致能訊號,由主設備控制。

首先從線的數量上,SPI 就比 UART 多了兩條線,同時在設備上,SPI 可以支援多設備的全雙工,但是同步的通訊匯流排,效能上可能不如 UART,但是在設備之間,SPI 比 UART 具有更多的選擇性,由一個 SPI 主設備,進行給從設備透過設定好的位址進行發送資料,可以使用同一個 SPI 線路,控制多個電子元件。

I2C:一個多主從的序列匯流排,又叫 I2C,是由飛利浦公司發明的通訊匯流排,屬於半雙工同步傳輸類型匯流排。IIC 匯流排是非常常見的資料匯流排,僅僅使用兩條線就能完成多機通訊,一條 SCL 時脈線,另外一條雙向資料線 SDA。兩條線一個 SDA 用來傳輸資料,一條 SCL 時脈線,用來控制資料收發,應答等等。 TOUCH:ESP32 板子上面帶了十個不同的個電容式觸控板, DAC:ADC 的逆轉,ADC 為類比訊號轉為數字的電子元件,那 DAC 則為將數位訊號轉為類比訊號從而轉為電壓的一種元件。 FLASH:esp32 上面帶了不同大小的記憶體,還可以自己進行分割區,貌似有 4M 的,8M 的,還有 16 的,用來儲存一些小型檔案,臨時檔案。 PWM:脈衝寬度調變,輸入不同的波形,可以用這個控制一些電子元件的速率或者快慢調製,透過對 PWM 高低電位的佔空比不同,進行控制。

以上為 ESP32 系列單晶片的所有 GPIO 功能講解。後續我會帶大家,去進行和不同的感測器進行互動來獲取資料,單晶片購買連接放在了最下方,我一直都是在這家店鋪購買,並不是托,哈哈

【手機天喵】https://m.tb.cn/h.UdRqdqk?tk=MoLs2BOBtEQ CZ3457 「ESP32 開發板 WIFI+藍牙 2 合 1 雙核 ESP32 核心板無線藍牙開發板」

單晶片結語

其實針對於單晶片,我所認為的是透過這些 GPIO 引腳去進行和電子元件進行通訊,透過那些匯流排通訊方式進行收發資料,訊息傳遞,同時底層是透過不同引腳的高低電位去進行控制。總之,單晶片開發要懂一些常用的基礎電路知識,不然很容易燒壞電路板,電子元件,有錢可任意妄為,哈哈。

環境搭建

上面,我們對什麼是單晶片,以及單晶片上面都有哪些引腳,都具備那些功能做了一個解釋,那麼接下來我們講解一下 ESP32 開發環境在 Arduino 上面的一個配置。點擊偏好設定

在此處可以配置專案資料夾,新建專案的存放資料夾,以及開發板的配置,點擊附加的開發板網址,在彈出的介面中寫入https://dl.espressif.com/dl/package_esp32_index.json,這個網址,用來配置ESP32的相關開發套件。然後可以在工具,開發板,開發板管理中搜尋ESP32,然後點擊安裝即可,但是此處需要梯子才可以下載,否則下載會很慢,可以自己去GITHUB下載後然後放在Arduino本地新建一個hardware資料夾,裡面資料夾名稱路徑就和我圖的一樣否則環境配置失敗是無法讀取配置資訊。

github 下載位址:https://github.com/espressif/arduino-esp32,下載後將裡面的檔案放進hardware/espressif/esp32資料夾中去,然後點擊tools/get.exe,會去下載配置環境等待結束就可以找到ESP32的開發板,這中間下載速度可能會很慢,我會把所有的東西一併上傳,然後下載稍作修改後就可以使用了。

下載位址:http://121.43.235.192:8082/s/Be88gki4eSFSMFs

結語

其實使用 VSCODE 也可以開發這個在 Arduino 上配置好之後,在 Vscode 中下載 Arduino 外掛即可使用 Vscode 進行配置,取決於開發者,同時 VSC 開發還可以直接使用原生 c 語言進行開發,

可以參考 i 樂鑫官網給出的步驟,快速入門 - ESP32 - — ESP-IDF 程式設計指南 v4.4.2 文件 (espressif.com),這個文件還是很不錯,使用原生 c 語言進行開發,其難度也相較 Arduino 難一些,我是剛開始使用這個環境開發的,後來換成了 Arduino 相對簡單一些,同時還可以向 c#的 nuget 一樣去搜尋自己想要的庫,同時也有例子,相對簡單一些。

後續文章會玩一些簡單的電子元件,今年做智慧小車一共做了三個,同時買的電子元件也有很多,後續我會一一帶大家去學習,去玩,然後有必要的話,也會直播做一些講解,方便更好的入門學習,有興趣的小夥伴可以持續關注,環境方面不懂的也可以隨時加這個群找我,這個群,用來對單晶片感興趣的小夥伴的專屬群,大家一起學習一起進步,目前玩的是 ESP 的板子,後面也會使用 51 或者 STM 系列的,有興趣的可以一起研究,一起學習。

繼續探索

延伸閱讀

更多文章
同分類 2025/8/13

推薦一款高效能狀態機管理解決方案

在實際軟體開發中,尤其是工業軟體,每一款設備都有複雜的狀態以及狀態之間的切換的功能需求,在這種情況下,如何管理狀態以及狀態之間切換,和對應狀態下的功能控制,成為非常重要的一個問題。

繼續閱讀