總網頁瀏覽量

顯示具有 TI 標籤的文章。 顯示所有文章
顯示具有 TI 標籤的文章。 顯示所有文章

2025年9月13日 星期六

超越傳統教育:為工程師打造真實研發需求的課程

 



1. 先前替大學及碩士班就讀化工系畢業出身、曾任職於台達電,目前任職於另一家車用相關電子產品公司的跨電資軟韌體領域工程師 授課 。

2. 先前替目前任職於 一線 IC設計公司 (NAND Flash memory 控制晶片大廠)  慧榮科技 的 韌體工程師 (他過去曾長期任職於 廣達) 授課。

於授課過程之我的某些板書圖片記錄。




----------

課程內容 完全針對電子產品研發工程師學員的 產品研發需求 而 客製化設計,最直接 且 真實的 協助工程師學員,奠定其在研發工作上所需的核心基礎,屬於實際的實戰內容學習。

對於真正的工程研發而言,其基礎理論與實務本來就是一體的,並不是兩回事  (只是台灣社會有許多人不清楚何謂理論與實務。這些皆為教學之重點內容。 台灣的傳統教育體制內的大多數考試解題/授課照課本唸/照本宣科 那些稱不上 理論,而是應付了事 )。

-------

課程講解過程參考資料:

- 自製教材

- 自己的臉書網頁 過往於學生時代 (2011年7月 大二暑假 ) 自行設計開發 且 與同學一同製作 之MCU based電路實體照片

https://www.facebook.com/photo/?fbid=154471644628956&set=a.109703929105728

- Intel MCS-51 family user's manual

https://web.mit.edu/6.115/www/document/8051.pdf

- Atmel/Microchip AT89S51 MCU Datasheet

https://www.microchip.com/en-us/product/at89s51#Overview

- ARM Keil - User's Guides for Keil C51 Development

https://developer.arm.com/documentation/101655/0961/8051-Instruction-Set-Manual/Instructions/MOV?fbclid=IwY2xjawMx8QJleHRuA2FlbQIxMABicmlkETFNUUhoamdBS0dGZVNtY2JHAR5KuWynh64S2XcmvvgC-CVQStfh9l2l4nFLxvWqHnPx4f5AeYNYnntHXXj--w_aem_O4_rxtiI0PEpcqtIdXPExQ

- TI µA7800 SERIES POSITIVE-VOLTAGE REGULATORS

https://cdn.sparkfun.com/assets/1/7/7/3/2/LM7805.pdf

- LY聯騰 KT89S51 線上燒錄實驗板 (8051 MCU 開發板) 說明手冊 與 電路圖 (schematic)

https://www.ltc.com.tw/products/bomltkt89s5vb?srsltid=AfmBOooZuusrBkfAiEFdRNeWyWJxBKbLFHsmlawQjT9x6tyFgagBgRgL&fbclid=IwY2xjawMx8adleHRuA2FlbQIxMABicmlkETFNUUhoamdBS0dGZVNtY2JHAR46T9mb9z-2JenWuDs1K_szx3FBIbMxHPdCOHPse5unqb-2EA8lVI2nZfanHQ_aem_F1gKDgNy6rDVaNZgInpz0w

https://drive.google.com/file/d/1MmWRWqxhfUiBEfujWGVSJOf0JGUkh7C5/view?fbclid=IwY2xjawMx8axleHRuA2FlbQIxMABicmlkETFNUUhoamdBS0dGZVNtY2JHAR46T9mb9z-2JenWuDs1K_szx3FBIbMxHPdCOHPse5unqb-2EA8lVI2nZfanHQ_aem_F1gKDgNy6rDVaNZgInpz0w

- Atmel/Microchip Atmega8 MCU Datasheet

chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf

- 新唐 NuMaker-IoT-M487 開發板介紹網頁 

https://direct.nuvoton.com/tw/numaker-iot-m487?srsltid=AfmBOorztrVCvO1kPIt62zTAjD_qVtckf7x6Il0JIoZPRxIp6H7q8O15&fbclid=IwY2xjawMx8t5leHRuA2FlbQIxMABicmlkETFNUUhoamdBS0dGZVNtY2JHAR7gjLutzb92c4gGU4QgbSYts3e59BnNVEQstYi3FS3d1Xp4SGwsTBJl9jj7MQ_aem_rUqVoJZOnM4nAdVPrfqiGw

- 新唐 NuMaker-M2354 開發板介紹網頁

https://direct.nuvoton.com/tw/numaker-m2354?srsltid=AfmBOoo15I5EjKqitimSRuAQyli0MSAOZZkD6xBj5Gl9fQh_bkDvlyMi&fbclid=IwY2xjawMx8wRleHRuA2FlbQIxMABicmlkETFNUUhoamdBS0dGZVNtY2JHAR5Ketq1DhydfagZxtmTf5kH84BEEk9FjjLbMEakDQQsk8cpl9fAzyWB_NmclQ_aem_hFedm84kIcZ3ALwdxGFCCg

- 其它網路網頁圖片與資料

-----

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

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


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

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

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

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

2024年4月8日 星期一

【TI AM335x SoC系統晶片之GPIO驅動操作流程】


作者: 林普賢 ( sam91001200@gmail.com )、 孫文良( iws6645@gmail.com )


首先要去看開發板的電路圖。這裡以Beaglebone green wireless這塊開發板(dev. board)為例,在以下網址可以找到此開發板的電路圖[1]

https://wiki.seeedstudio.com/BeagleBone_Green_Wireless/

(註: 而我們實驗時所使用的Beaglebone green wireless與Beaglebone Black這兩塊板子上面的系統晶片SoC同為TI的AM3358,所以在此二塊開發板上,其驅動GPIO的方式是同理的。)

如果我們想要點亮開發板上的D5 LED,就必須尋找它連接的腳位(pin)。由下圖可以得知D5所連接的腳位(pin)GPIO1_24





這時候我們就可以在AM335xDatasheet[2]找到原來GPIO1_24PIN_NameGPMC_A8,並且腳位的模式需要選擇為7




現在我們已經知道要操作的腳位是GPMC_A8,接下來就是看Reference ManualGPIO feature去了解如何操作各個暫存器完成我們想要的功能。


由上面這張系統框圖可以看到,整個GPIO的操作其實不困難。給GPIO週邊提供時鐘、配置GPIO週邊的I/O方向、最後多工器選擇腳位的輸出由哪個週邊接管。有了這個系統框圖再搭配各個暫存器的說明,要自己寫出GPIO的裝置驅動程式相信不會太困難。

 

首先是圖中最左邊的Power & Clock,有玩過stm32的朋友一定很熟悉。沒錯,就是打開GPIO週邊的時鐘,沒有這個時鐘GPIO週邊是不會工作的。我們需要驅動LED的腳位是GPIO1_24,所以要操作CM_PER_GPIO1_CLKCTRL這個暫存器將GPIO1的時鐘打開。

 

操作記憶體地址這邊只講一次,其他暫存器的地址也是這樣查找的。在Reference Manual[3]我們尋找CM_PER_GPIO1_CLKCTRL應該找的到以下資訊:


可以看到CM_PER_GPIO1_CLKCTRL它的記憶體地址是基於CM_PER偏移了AC h,至於CM_PER的地址在哪裡呢? 可以在Memory Map的章節查到:



所以這樣我們就知道了CM_PER_GPIO1_CLKCTRL的記憶體地址,接下來要要看看需要設定這個暫存器的哪些內容。這裡需要操作Bit 18的欄位以及Bit [0:1],表示將時鐘致能開啟GPIO功能。對應的example code(先暫時不討論ioremap)如下:

static volatile unsigned int *CM_PER_GPIO1_CLKCTRL = 0x44E00000 + 0xAC;

*CM_PER_GPIO1_CLKCTRL = (1<<18) | 0x2;

接下來要講解GPIO週邊的暫存器操作,在裝置初始化的時候其實只需要操作GPIO1_OEoutput功能啟用就好,而GPIO1_CLEARDATAOUTGPIO1_SETDATAOUT都是在撰寫功能時才會進行操作。這裡只會講解GPIO_OE的操作方式,其餘兩個暫存器的操作方式也是同理。



可以看到上圖說明想要啟用GPIO1對應接腳需要對相對應的bit進行clear操作,對應的程式如下:

*GPIO1_OE &= ~(1<<24);                            // GPIO1_24設置為輸出模式

*GPIO1_CLEARDATAOUT = (1<<24);       // GPIO1_24(低電位)

*GPIO1_SETDATAOUT = (1<<24);           // GPIO1_24(高電位)

最後是GPMC_A8的腳位選擇功能。由於晶片的接腳有限,對於同一支腳位它可能被各個不同的週邊共享,但同一時間只能選擇一種功能進行操作。這裡我們需要的選擇一般的輸入輸出模式,所以需要將對應的暫存器賦值為7(先前有提及)。對應的程式如下:

*conf_gpmc_a8 = 7;

至此,所有涉及點燈的GPIO操作以及其對應的暫存器已講解完畢,如果手邊有基於AM335x系列處理器的開發板的朋友,可以趕緊來實戰看看驗證成果。


References: 

[1] Seeed Studio BeagleBone® Green Wireless Schematic

[2] AM3358 Datasheet

[3] AM3358 Technical Reference Manual


林普賢、孫文良

-----

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

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


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

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

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

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