總網頁瀏覽量

顯示具有 電路 標籤的文章。 顯示所有文章
顯示具有 電路 標籤的文章。 顯示所有文章

2025年7月28日 星期一

我於8月份開在 自強基金會(台北)的 基礎 電子電路 課程 (後面還會有另一門ARM Cortex-M4 based STM32 MCU韌體基礎課程)

 我於8月份開在 自強基金會(台北分部)的基礎電子電路課程  (後面還會有另一門ARM Cortex-M4 based STM32 MCU韌體基礎課程)

🎉🎉🎉熱烈招生中🎉🎉🎉

歡迎有興趣的朋友們踴躍報名~~

.

[台北假日班]【適合非電機電子科系背景學員的電子電路入門】使用Tinkercad平台學習電子電路原理與實作

✅報名連結➡️ https://edu.tcfst.org.tw/web/tw/class/show.asp?courseidori=14S026

✅課程代碼:

14S026

✅上課時間:

2025/8/16~9/6(六),每週六,9:00~17:00

✅上課時數:

28 小時

✅上課地點:

台北教育中心(台北市中正區博愛路80號3樓)

✅課程大綱:

1. Tinkercad軟體平台簡介、註冊與操作

2. 直流電與交流電簡介

3. 電壓與電流基本原理+實驗

4. 基本儀器(電表+示波器+電源供應器+訊號產生器)介紹+實驗

5. 電阻、電容、電感簡介+實驗

6. 歐姆定理+實驗

7. 串聯與並聯原理+實驗

8. KCL與KVL 定理 + 實驗

9. 基本分壓與分流定理 + 實驗

10.基本RC與RL電路原理+實驗

11. 二極體元件介紹+實驗

12. 電晶體(BJT、MOSFET)元件介紹 + 實驗

13. 運算放大器(OPA)簡介+實驗

14. 基本交流電路原理觀念簡介

15. 數位訊號與類比訊號之差異

16. 數位電路基本元件: 邏輯閘+實驗

17. 數位電路基本元件: 正反器+實驗

18. 組合邏輯電路與循序邏輯電路簡介

19. 基礎常見電子元件(如: 七段顯示器、Relay繼電器、直流馬達等元件)之基本應用原理+實驗

20. 單晶片微電腦/微控制器(MCU)之應用初探 : Arduino UNO開發板之簡介+實驗

✅報名連結➡️ https://edu.tcfst.org.tw/web/tw/class/show.asp?courseidori=14S026


 後面還會有另一門ARM Cortex-M4 based STM32 MCU韌體基礎課程

---------

適合:

1. 電機電子系畢業,但對於電子電路缺乏基礎的人士。

2. 不熟電路基礎 的 軟韌體工程師 ( MCU/SoC non-OS/RTOS/Linux/Android 底層軟韌體/驅動程式 相關的工程師 ) 。

3. 非電機電子電路背景但有興趣學習的人士。

4. 其餘對於電子電路基礎原理與實驗有興趣的人士。

--------

#嵌入式系統 #MCU #韌體工程師 #嵌入式系統課程 #微控制器 #韌體工程師課程 #Embedded_Linux #電子電路 #電路基礎 #電子學 

#非電機電子科系 ​ #SoC 

#基本電學

#電路學


-----

歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。

孫文良 個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:
本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

2024年6月24日 星期一

針對 非電機電子背景學員 的 基礎硬體電路課程 (開設於清大自強基金會之台北分會)

 

近期我將開在 清華大學財團法人自強工業基金會 台北分會 開設:  【適合非電機電子科系背景學員的電子電路入門】使用Tinkercad平台學習電子電路原理與實作 課程

很適合沒有電機電子電路背景(如非電資工程本科系出身的朋友,或者是出身於電資工程本科系但背景是偏向純軟體、但又需要用到基礎硬體電路觀念的朋友,例如需要從事韌體程式與軟硬體系統整合之開發者)來學習。

上課時間:2024/8/13(二),8/14(三),8/20(二),8/21(三)共四天 9:00~17:00共28小時

課程課綱詳細資訊與報名網址如下:

https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=13S085



-----

歡迎各方洽談合作,務實/踏實追求共好。

個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:
本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章


2022年2月17日 星期四

【 DFROBOT SKU:SEN0165 ORP氧化還原度感測器之sample code重點部分分析記錄】

延續上一篇的DFROBOT SKU:SEN0165 ORP氧化還原度感測器之訊號處理電路設計分析文章,這邊主要來延續介紹這款感測器套件之官方sample code重點部分分析記錄,某些較容易看出的部分就先暫時省略過。

註解: 這裡是隨意拿紙來寫的簡單計算過程,下標符號大小寫並不嚴謹,請見諒~

上篇文章主要介紹 的簡易電路分析計算過程 (使用克希荷夫電流定律)

註解: ORP是Oxidation-Reduction Potential的縮寫,表示溶液的氧化還原電位

該感測器套件的MCU端的軟韌體sample code於該DFROBOT SKU:SEN0165 ORP氧化還原度感測器感測器套件之官方說明網頁

(...省略部份)

#define VOLTAGE 5.00    //system voltage

(...省略部份)

orpValue = ((30*(double)VOLTAGE*1000)-(75*avergearray(orpArray, ArrayLenth)*VOLTAGE*1000/1024))/75-OFFSET;

//convert the analog value to orp according the circuit

注意上面的code的VOLTAGE我故意用兩個不同的顏色標記(紅色、藍色)是有原因的,看完下面內容就會知道。

其實可由下圖推導整理看出,上述code的orpValue就是如同其變數名稱,就是要還原出sensor端子輸出電壓訊號 (未經訊號處理電路模組處理的原始感測器輸出電壓訊號值) 的值,並且透過UART印出該值的字串形式以便觀看。

眼尖的看倌一定會發現其實主要是這款感測器套件的官方sample code寫得太長,其實不需要寫這麼長

sample code之中的1000就是K (1K);

sample code之中VOLTAGE/1024的部分,基本上就是ADC step voltage,而avergearray(orpArray, ArrayLenth)就是經過一些平均處理後的Vout

那為何上面的code的VOLTAGE故意用兩個不同的顏色標記?

要注意這個sample code可能比較是針對是Atmage328p(或其它ADC的類比輸入範圍電壓Vref預設為5V的) MCU based 的Arduino,所以sample code是把 提供給感測器輸出訊號處理電路模組的電壓 以及 你使用的ADC step voltage的Vref看成是一樣的。但實際上這兩者在實際應用上可能不同,例如你的嵌入式處理器晶片如果是用吃3.3V的,而卻又供5V給感測器輸出訊號處理電路模組,那麼情況就與sample code去define同一個VOLTAGE的狀況不同了。

舉例來說,從電路分析式子可以看出,假設你所使用的MCU/SoC內的ADC(或者外接的獨立的ADC IC)的Vref是3.3V,而若提供給感測器輸出訊號處理模組的電源則是5V的話,其實上面兩個VOLTAGE可能必須是不同的值

第一個(30*(double)VOLTAGE*1000)VOLTAGE是你提供給感測器訊號模組的電源電壓;

而後面的(75*avergearray(orpArray,ArrayLenth)*VOLTAGE*1000/1024)裡面的VOLTAGE/1024這個部分就是就是你所使用的MCU/SoC內的ADC(或者外接的獨立的ADC IC)的step voltage,所以其實這個(第二個)VOLTAGE就是ADC的類比輸入範圍電壓(Vref)。而1024就是精度10 bits的ADC的狀況 (如果你用的ADC的精度不同就要改)。

但如果 所使用的MCU/SoC內的ADC(或者外接獨立的ADC IC)的類比輸入範圍電壓Vref就 等同提供給感測器輸出訊號處理模組的電源的話 (就如同sample code預設的情況),那就如同sample code一樣去定義VOLTAGE是同一個值即可。

如果這兩篇文章你有看懂,就會發現,說穿了,上述sample code中的((30*(double)VOLTAGE*1000)-(75*avergearray(orpArray, ArrayLenth)*VOLTAGE*1000/1024))/75-OFFSET; 如果理解電路以及sample code的目的、原理和計算,其實sample code的這行code是可以簡化成另一種寫法,不一定要寫成這麼長,看倌們看懂了嗎?

(hint: 重點在上一篇文章的計算結果和這篇文章的計算結果,根本就是一樣的嘛,根本沒必要把這行code寫得如此落落長)。


此外,補充一下,這感測器套件的感測器輸出訊號處理電路模組中的LM2662M是一顆Switched Capacitor Voltage Converter IC(可參見TI的官方Datasheet ,部分如下圖)

 TI LM2662M Datasheet

-----

個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:


本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章




2022年2月9日 星期三

因友人介紹,近期有台大電機系教授洽詢合作! 很歡迎學術界和產業界多方合作交流喔!

如下圖,近期因朋友李博士的介紹,所以有 台灣大學 電機工程學系 的 教授 來討論合作。


回顧這幾年,我大多都是針對業界工程師開課輔導,幾年前自從聯發科(晨星半導體)離開回到南部後,主要回成大幫忙帶產學合作案(同時在他們合作的中小企業公司擔任顧問),當時在成大也有掛計畫下的臨時人員 (同時也算是合作的成大教授的顧問腳色)。

目前也還是有在接觸大學/學術界,多方交流&合作,目標理想還是希望促進減少學用落差、幫助台灣社會及產業發展。同時也推廣技職教育,也希望台灣的技職教育能正常化、特色化,走出自己的一條路。

都很歡迎交流討論任何合作模式,若有合適的合作機會的話,我都會盡量提供真心的建議和實際經驗。


-----

‼本區開設之技術課程的詳情請參見下方blog網頁的課程介紹👇:


本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

2022年1月26日 星期三

【DFROBOT SKU:SEN0165 ORP氧化還原度感測器之訊號處理簡易OPA應用電路分析&驗證案例。誰說 高職沒有理論基礎? 】

雖然個人在當年碩士班畢業後在產業界所負責的工作內容,大多並不是專門從事純硬體電路開發,但過去在技職教育體系的電路基礎專業知識和技術累積,還是經常能實際用上的。

尤其我們做嵌入式系統設計、IoT系統設計的人,從硬體電路、底層韌體、開機啟動程式、(針對有作業系統的嵌入式系統)作業系統核心space和user space的驅動程式和應用程式、感測器應用、訊號處理、無線通訊技術應用、PC端的應用程式、行動裝置端的應用程式等等,都必須有一定了解,才能比較完整設計和整合系統架構。

-------------------------

最近協助一位業界工程師理解一些感測器套件的整合應用,該套件包含一個感測器輸出訊號的處理電路,如下圖。

                       電路圖來源: ORP氧化還原度感測器套件之訊號處理電路的電路圖
https://image.dfrobot.com/image/data/SEN0165/OPR%20meter%20V1.0%20Schematic.pdf

在此,我用個人在15年前、就讀 高職電子科一年級 上學期的 一點點基本電學基礎(Kirchhoff's current law,克希荷夫電流定律) + 高職二年級的一點點 電子學 基礎 (OPA運算放大器的最基本觀念),

即可簡單分析計算一下 這款ORP氧化還原度感測器 和 pH感測器 套件 的 輸出訊號調整電路 的 第二級 (簡易的計算過程如下方照片所示)。

(誰說高職沒有理論基礎?  我這裡可能只是用到高職所學的所有電學理論的百分之一不到吧)

簡易電路分析計算過程 (使用克希荷夫電流定律)


並且,也使用對於初學者來說相當平易近人且強大的Tinkercad電路軟體模擬一下。


使用Tinkercad軟體進行電路模擬之結果畫面 (2V - 0V = 2 V)



使用Tinkercad軟體進行電路模擬之結果畫面 (2V - 0.5V = 1.5 V)


電學數學計算 + 模擬驗證  + 實際電路  

三個願望一次滿足,全部到位,這個簡單的小例子頗適合做為教材。

至於像是ORP感測器的應用原理 以及pH感測器的基本原理(範圍內接近線性特性與其描述式、校正原理和方式)、廠商提供的sample code是如何搭配等方面的內容較多,未來有機會再分享。

-------------------------

我始終覺得,我們台灣的教育總是學得太多,但實際吸收、在畢業後能實際運用的內容似乎太少。這代表我們的教育的performance太差了。

不要小看這種簡單的小例子,雖然簡單,但是我在成功大學看過許多領域(例如資訊領域,還是很多題目需要硬體整合背景)的 教授們 (電機博士、資工博士、工程科學博士、機械博士等),大多是完全不太會這些東西的 (可能他們在當年修完課就忘光了)。

當然,他們「指導」的研究生們遇到這些狀況大多是只是用這種現成的硬體電路模組套件,而較少分析其原理,加上通常這種模組的官方網頁也不會講解電路設計原理。但是,其實若要將這些感測套件應用得「好」、理解這些訊號確切是對應到什麼感測值,搭配廠商提供的sample code到底在做甚麼,是不一定要自己從頭做啦,但是必須還是要有這些基礎知識背景去做些分析,這就是個很好的例子。


個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:


本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章




2022年1月19日 星期三

【 以基礎電路角度看學術界/大學資訊領域在AIoT/IoT/嵌入式系統應用方向的問題,以及技職體系的關聯性】

 [以基礎電路角度看學術界/大學資訊領域在AIoT/IoT方向的問題,以及技職體系的關聯性]

學術界/大學裏頭 資訊領域的教授(大多是「電機」博士) 的學生/畢業生 所做的硬體電路,大多是慘劇一場(慘不忍睹),連訊號傳輸線的粗細都不知道會有影響 ,也看過有人把感測器的極細輸出訊號線或者電源線給亂折一通或綑成一綑 (看到真的會暈倒,但教授大多看不懂,所以不care),硬體電路大多亂做一通,包含許多這些領域的SCI期刊論文內容也是如此 (畢竟審查教授應該也沒有什麼電路經驗,雖然大多都是 電機工程博士)。 

從9年前接觸這些所謂的普通大學名校開始至今所看到的大多都是這樣。

不懂電機、不懂基本電路硬體觀念的「電機」博士教授,其實是真的很多。

實際原因是因為,號稱做資訊領域 的 電機博士教授,個人當年求學方向大多不在電路相關,大多是根本不碰電路理論基礎的,電路基礎會比 電子科電機科資訊科的高職生還差 (這是事實,了解過兩邊差一的人就會知道我在講啥),但他們在當教授之後,方向上可能會需要做系統(創意作品,例如AIoT/智慧物聯網類的系統/嵌入式系統應用),所以還是需要電路,但就只能叫很上層軟體背景的學生自己去弄 (大多是拿現成模組,但從中可以看出很多基礎觀念很「慘烈」,例如開發過程中的接線或量測之類的),所以就變成這樣了。於是就產生了上述情況。

又例如,在我個人接觸成功大學學生的經驗 (這幾年來協助指導成大多位研究所碩士生、大學部專題生、指導他們參加全國性的專業競賽以及他們的碩士論文題目和內容,我也在成大教授進行產學合作的公司兼任產品顧問、指導成大研究生完成產學合作案的技術開發,甚至輔導成大教授關於一些技術觀念基礎) ,我看過很多成功大學的研究所學生 (無論是成大大學部直升或從外校畢業來成大讀碩士班的都有、在讀大學時期大多都「修過」基礎的電路學、電子學的「課程/學分」,但其中很多人就好像跟完全沒修過基礎課程差不多!全部忘光光 或者在修什麼都不知道) ,他們其中有許多人完全不知道實際的交流電是怎麼一回事,看到我拿三用電表的交流檔位去量測教室或會議室的市電插頭的交流電,許多師生會怕(這些教授恐怕一輩子都沒親自量測過吧?),但其實,這些量測交流電壓訊號之類的事情,是我當年就讀高職一年級時期就常在做的,到後來就讀科技大學時期(大學階段),也曾經因為專題指導教授想要看一些題目功能需求,而經常會接觸到交流電 (包含一些實際的電路設計和製作)。

雖然這些硬體電路觀念,和我當年在成大碩士班畢業後到聯發科(晨星)當工程師所負責的機上盒、數位電視的OS系統軟韌體公版開發維護,似乎沒啥關係 (因為那個是偏向嵌入式Linux、嵌入式作業系統相關的軟韌體開發的工作)。但卻是我實際在技職體系的求學經驗,也是很實用的一些硬體電路相關基礎和觀念,其實在科技業開發軟韌體時,觀察很多同事的工作情況,也有很多與上述內容所呼應的相同感觸 (多數 普大畢業且走軟韌體方向的,大多缺乏硬體的實際基礎觀念和經驗)。

技職/高職學校的電子科、資訊科、電機科、控制科、冷凍科等科系的教育(理論與實作)大多偏向硬體電路 (統測電機與電子群的資電類和電機類),所以技職教育還是有特色和不可取代的地方,只要自己人不要自卑和內亂,一定有可以發揮之處。


個人簡歷: https://sites.google.com/view/wenliangsun/


2021年11月26日 星期五

軟韌體工程師,可以完全沒有任何硬體電路基礎背景嗎?

負責電腦系統底層系統的軟韌體工程師,可以完全沒有任何硬體電路基礎背景嗎?

舉個例子,

如果軟韌體工程師沒有一點硬體背景,碰到MCU/SoC晶片外部沒有或漏掉被上料(接上pull up resistor), I/O又沒有enable internal pull-up resistor,那I/O狀態如果又是open-drain output,許多週邊裝置根本連動都不會動,因為根本無法輸出digital high level voltage,例如I2C。

而對於應用功能開發而言,軟韌體工程師又是首當其衝。

就算去查軟韌體程式碼查到天荒地老都沒用,因為根本不是軟韌體程式碼的問題。

這是很基本的問題,但確實也是台灣業界常發生的問題,足以讓純軟體背景的工程師不知所措、浪費一堆時間。說真的這些是很浪費時間的事,但問題就出在基礎不紮實。

純軟體背景的主管們,如果只考應徵者一些關於資料結構、排序演算法之類的東西,對於上述這類問題來說,能有幫助嗎?還是只能期望每位硬體工程師每次都很給力?

2021年10月14日 星期四

【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款MCU? Subroutine/Function call實際上做了哪些事?

 👇延伸上次的GPIO基礎學習說明


❓許多初學者或工程師朋友們常會問我,想學好嵌入式系統基礎,到底該學ARM、8051還是PIC? 該學習幾位元的CPU平台?

🥸首先,我建議應該先了解這個問題是在「問什麼」,什麼是ARM?
ARM是CPU,而8051和PIC是MCU,朋友們可自行想想看,CPU和MCU是一樣的東西嗎?

又,假設初學者只有呼叫過(複製貼上、頂多改參數/引數) 人家所寫好的API (例如開源社群 或者 IC Design公司的軟韌體單位 所提供的API Library函數庫)來驅動MCU作事(完成功能)的話,

🔎我們以呼叫下列函數為例子 (不針對特定平台,但看函數名稱應該很清楚這在做啥):
GPIO_Setup(Pin_number, Output);
GPIO_Output(Pin_number, High);

無論你是使用什麼CPU based的MCU/SoC晶片為核心的板子(無論CPU是ARM、8051、MIPS、AVR、PIC MCU內的CPU),上述code確實能讓MCU的GPIO Port輸出數位訊號的1(高電位),

但是,如果只是呼叫這些函數的話,有讓你接觸到CPU架構嗎? 和CPU有什麼關係? 甚至很多人可能沒思考過,到底什麼是CPU?

初學者或沒思考過這些問題的工程師朋友們,也有可能會連上述這些範例程式碼,在MCU上電開始動作時,到底是被存放在哪裡的狀態下被CPU給提取和執行,可能都不清楚 。

🧐但我們試想一個問題,如果只是呼叫函數,而從來沒了解過背後的原理基礎,那是否一位受過基本實驗訓練的國中生、高中生就能作這些了? 對於系統開發設計的基礎知識與深度是否足夠?

恐怕有許多朋友從來沒有思考過這些問題。

‼本園區的 「嵌入式系統基礎原理與實務課程」,能藉由適合初學者奠定基礎觀念的8051 MCU (架構相對簡易清晰的微電腦平台) 作為教材,讓你了解CPU到底做了些什麼? 當然每款CPU之間會有差異,但是建立基礎觀念之後,許多觀念都是通用且可延伸的。

再次重申‼ 這個課程並不是只教你8051 MCU怎麼用,也不是只教8051,
而是以8051這款 架構相對簡易清晰的微電腦平台 (且資料完整豐富)作為實作/實驗/理論觀念驗證的實驗平台,

期望學員能在學習完課程後能奠定嵌入式系統(更精確來說是電腦底層觀念,不只是嵌入式系統)基礎,包含CPU指令集/行為、記憶體存取、基礎常見周邊裝置驅動應用、基本介面電子電路(類比&數位),

希望學員將這些學習內容消化吸收後,在未來於職場工作上遇到其它微電腦晶片平台時,可以有清晰的架構觀念,能舉一反三、能藉由紮實的基礎而在未來工作之中遇到其它平台時,能有自行舉一反三、擁有自學熟悉新平台的能力。

-------

🥸 再延伸上述的說明內容,以subroutine call或者function call為例

👉無論是哪款CPU,基本上都會有一些必須的暫存器,例如PC (Program Counter register,程式計數器)、 SP (stack pointer register,堆疊指標)、PSW (Program Status Word register,程式狀態字組),這些暫存器的用途為何?

👉堆疊(stack)是什麼時候需要使用? 呼叫subroutine(這邊是指組合語言的副程式)或者在C語言作function call時是如何被使用? 是如何被實現? CPU在此時做了哪些事?

👉當撰寫C語言去呼叫函數、或者撰寫組合語言呼叫副程式,CPU所執行的程式流程是怎麼跳 過去執行subroutine的?

👉中斷(Interrupt)發生時,又是如何使用堆疊來完成中斷機制? CPU所執行的程式流程是怎麼跳 過去執行ISR (Interrupt Service Routine,中斷服務程式)的?

👉以8051內的CPU指令集為例,CALL指令分為ACALL和LCALL,差別在哪? 而和Stack(堆疊)相關的PUSH/POP/RET/RETI指令是在做什麼的? 實際上做了哪些相關的事?

👉CPU在執行完subroutine或者ISR(中斷服務程式)之後要如何回家(回到主流程?) 如果堆疊之中這些被存放的值被意外地改掉,會發生什麼事?

再講些題外話,
👉如果用C語言撰寫MCU程式,你知道main()函數被執行之前做了什麼事嗎?

👉如果用C語言撰寫MCU程式,例如宣告變數 unsigned char i=1; 你知道這個i變數的物理實體設備空間實際上是什麼嗎? 知道實際上這個i=1是如何被實現的嗎?




🥸 再強調一次,如果只有經歷過呼叫現成的API的經驗,讓MCU會動就滿足,而從來沒了解過這些API背後的底層原理基礎的話,那是否一位受過最基本的實驗步驟訓練的國高中生就能做這些了? 讀到大學甚至碩、博士畢業,或者身為工程師的專業度在哪裡呢?

我想這些是很值得大家思考的事! 我認為專業領域的視野和深度,可以決定一位工程領域人員的實際專業價值。

‼課程進一步詳情請參見下方blog網頁的課程介紹👇:

2021年10月10日 星期日

【嵌入式系統基礎原理與實務課程】 GPIO單元之簡介推廣

 🥸 最近在本園區所開設的 「嵌入式系統基礎原理與實務課程」內,和幾位工程師學員講解到GPIO的部分,頗有感觸。


GPIO (General-Purpose Input/Output)的應用看似簡單,但其背後的原理可有著不少學問。

如果以呼叫現成的API函數的方式來達成之前demo影片中以GPIO驅動LED亮/滅的簡易功能,整個過程大概只要2分鐘 (例如如果使用Arduino UNO這種板子上就有現成LED的開發板,就連外接LED的動作和時間都可以省了,搭配digitalWrite這類的現成函數真的只要2分鐘就可以完成),但事情的完整真相真的「只有」這麼簡單嗎❓❓ 這樣就是了解GPIO了嗎❓

‼事實上‼ 其應用功能(表面)背後的韌體、與GPIO結構驅動原理(從CPU到記憶體單元中去讀到你寫好且被Compiler編譯完成的machine code到驅動GPIO周邊,GPIO的數位高低電位是如何輸出驅動或讀取,詳情是怎麼一回事),可以講解好幾個小時,

韌體開發並不是純軟體開發,如果是驅動周邊 (Peripheral周邊裝置,詳見註1)的軟韌體開發工程師來說,一位有心於研發工作的工程師是有必要去精進加強自己對於軟韌硬體的基礎知識和了解,

這些很可能是許多軟韌體工程師過去在學校課程內所沒學過、甚至到工作後也從沒去思考過的內容,課程希望帶給學員不同的技術視野並啟發思考。

❗ 本園區開設的課程的GPIO課程內容會包含:

👉介紹標準MCS51的Intel官方Datasheet GPIO的相關內容

👉從了解MCU從執行你所撰寫的C code (被C51 Compiler編譯為數位訊號碼,也就是0和1組成的、符合MCS51指令集的機械碼 實際上是長什麼樣子?) 與Assembly language(組合語言)的關係是什麼? 而這些machine code是被燒錄到哪裡? 又是如何被MCU內的CPU所執行? 和I/O周邊裝置的關係又是什麼?

👉GPIO Port內的運作原理是什麼? 如何從GPIO輸出數位的High & Low電位? 如何由GPIO讀入數位的的High & Low電位? (可舉一反三了解其它MCU的稍有不同的GPIO架構)

👉在一般常見的GPIO外部元件驅動基礎應用下,基礎MCU/SoC外部介面電子電路原理講解,這包含類比電路與數位電路的相關基礎知識,例如如何用BJT、MOSFET做簡單的開關應用、如何和MCU/SoC的GPIO搭配?

👉何謂上拉(Pull-up)/下拉(pull-down)電阻? 何謂開汲極(Open drain)?

👉為什麼Standard 8051 MCU的GPIO Port0作高電位輸出應用時,需要外加上拉電阻(pullup resister)才能使用?

👉Standard 8051 MCU的GPIO Port0和Port2是如何存取外部記憶體(雖然現代很少這樣用了,但就學習專業的角度而言仍有了解該原理的學習價值),Port0又是如何兼具存取external memory時的Address bus和Data bus功能?

👉MCU/SoC內的CPU是如何存取周邊的 (如課程介紹所述,我們不只介紹8051,只是把8051當成講解與實驗教材)、何謂memory map I/O? 何謂Port map I/O? 這兩種方式有何差異? 8051 MCU內的CPU去存取I/O是屬於哪種方式?

👉實際韌體撰寫/燒錄/電路接線實驗 等實作教學

👉在課程介紹完8051 MCU內部組織原理的各單元之後,還會有各式的外部元件驅動原理與實驗教學 (可參見課綱介紹)

藉由上述的方式,讓學員完整了解電腦系統(包含嵌入式系統)「韌體」開發的基礎紮實與本質。

下方講義內容中的8051 PORT架構原圖參考自Intel MCS51 user manual而繪製,而講義為個人整理編寫

課程講義內容

🔎註1: Peripheral就是周邊裝置,以MCU/SoC內部的來說,例如GPIO、UART、I2C、SPI、ADC、DAC、USB、.......(族繁不及備載)都是Peripherals,但現在很多年輕學生(不分政治立場)都只聽過「外設」 (外部設備),因為大陸的嵌入式系統技術文章都是這樣講,而台灣近年來很缺乏嵌入式底層技術詳細探討類的網路文章)

‼課程進一步詳情請參見下方blog網頁的課程介紹👇: