SDK 新工具 Cube 是一個圖形化的初始化代碼生成器,可為桃芯各種芯片型號生成 C 代碼。
關鍵特性
這是一個交互式工具,輔助開發(fā)者正確配置芯片。各種特性總結如下:
- 支持各種芯片型號
- 以最直觀的方式完成外設和時鐘樹配置
- 豐富、易用的圖形界面
- 啟發(fā)式、交互式設計
- 無需文檔,使用方法一目了然
- 自動檢查,減少錯誤
- 管腳沖突
- 參數(shù)范圍
- 低調(diào)
- 生成的代碼匯總于一個文件
- 由開發(fā)者決定是否使用它生成的代碼
- 不會搞亂開發(fā)者的工程設置
- 極快的運行速度
- 所有的檢查都是實時進行
- 對于運行環(huán)境要求低
- 與其它基于 Eclipse 的工具相比,效率不可同日而語
- 生成的代碼更高效
- 對于某些外設直接輸出“計算”后的代碼
- 比調(diào)用驅動程序代碼更短、速度更快
在 Wizard 里右鍵單擊一個項目,從快捷菜單中選擇“Edit with Cube…”即可打開 Cube。Cube 生成的代碼保存在項目里的 /data/setup_soc.cgen
文件內(nèi),Cube 本身的數(shù)據(jù)保存在 /data/cube_SERIES.dat
文件內(nèi),這里 SERIES 為芯片系列。
要使用 Cube 生成的代碼,只需 3 步:
- 在
main.c
里包含../data/setup_soc.cgen
;
這行代碼需要在#include "ingsoc.h"
之后。 - 在
setup_peripheral
函數(shù)里調(diào)用cube_setup_peripherals()
- 在
app_main
函數(shù)的開頭調(diào)用cube_soc_init()
下面通過幾個具體的場景介紹 Cube 的使用:
使用場景 1. 硬件工程師設計天線陣
比如現(xiàn)在要用 ING91880C 設計一塊天線陣,天線開關連哪個 IO 腳?新建一個 ING9188xx 的工程,打開 Cube,將型號選為 ING91880C,點擊 Antenna,再點擊菜單 Configure,彈出天線開關編輯窗口。點擊 Enable All,可以用做天線開關的 IO 腳一目了然:
使用場景 2. 硬件工程師設計LED指示燈
比如現(xiàn)在要用 ING91680A 設計一個產(chǎn)品,其中用到 LED 指示燈,打算使用 PWM 控制閃爍??梢允褂媚膫€ IO 腳?新建一個 ING9168xx 的工程,打開 Cube,將型號選為 ING91680A,點擊 PWM,再點擊菜單 Configure,彈出 PWM 編輯窗口。馬上就可以直觀檢查哪些管腳可用作PWM 輸出:
假設硬件工程師選定使用 IO 16 控制 LED 燈,通知軟件工程師。
使用場景 3.軟件工程師實現(xiàn) LED 燈的 PWM 控制
軟件工程師繼續(xù)使用 Cube 編輯 PWM。假設軟件工程師要使 LED 的初始狀態(tài)為 1 秒閃爍一次,占用比 50%。在 Easy 標簽下,分別輸入頻率 1Hz,占空比 50%,—— 輸入數(shù)據(jù)時回車生效。這時,從驗證窗口內(nèi)馬上可以看到存在兩處錯誤:PWM 的 PERA、HIGH 兩個數(shù)據(jù)都超出范圍了, 它們最多支持 20 個比特,即最大為 0xfffff。
由于 PWM 分頻比例有限,如果降低 PWM 的工作頻率,就能獲得更低頻的輸出。切換到時鐘樹頁面,我們發(fā)現(xiàn) PWM 有兩種時鐘可選:一為從 Slow Clk 分頻,一為使用 CLK 32k。讓我們直接使用 CLK 32k。
回到 PWM 編輯窗口 Channel 0 的 Easy 標簽,這時,驗證窗口提示一切正常:
編譯下載程序,連接必要的硬件,即可看到 LED 燈在按要求閃爍。
打開 setup_soc.cgen 文件,可看到最末尾幾行的內(nèi)容為:
// dump PINCTRL registers
APB_PINCTRL- >OUT_CTRL[4] = 0x00001522; // 0x00001547
這是 Cube 對 PINCTRL_SetPadMux(16, IO_SOURCE_PWM0_A)
做了“計算”后得出的結果, 顯然比在芯片里執(zhí)行 PINCTRL_SetPadMux(16, IO_SOURCE_PWM0_A)
效率更高。這對于 ING916XX 系列為重要:因為 PINCTRL 配置需要查一張復雜的表格,(https://github.com/ingchips/ING918XX_SDK_SOURCE/blob/07ffc140a28b86dfeda95cc9ea1f560e2b5adeae/src/FWlib/peripheral_pinctrl.c#L265)每次睡眠醒來都需要重新配置, 所以使用 Cube 既可以減小程序體積,對于降低功耗也有一定好處。
使用場景 4.軟件工程師借助 TIMER 實現(xiàn) LED 燈的 PWM 控制
由于某些原因,PWM 模塊另有它用,軟件工程師決定改用硬件定時器輸出 PWM 波形控制 LED 燈。查閱 PinCtrl 模塊的文檔可知, 萬幸 ,IO 16 可用于硬件定時器 PWM 波形的 A 路輸出。
選用 TIMER2 的 Channel 0 輸出 PWM 信號,從編輯窗口發(fā)現(xiàn)計數(shù)器長度僅用 16 比特,切換到時鐘樹窗口, 將 TIMER2 的時鐘切換為 32k。這樣,兩個計數(shù)數(shù)各配為 16000 就可以輸出 1 秒為周期,占空比 50% 的 PWM 波形了:
這個編輯窗口還出現(xiàn)了一個“陌生”的 “Park Value”,將鼠標移動到 “?” 上可以了解其功能。編譯下載程序,即可看到 LED 燈在按要求閃爍。
文章來源 桃芯科技
-
led
+關注
關注
242文章
23320瀏覽量
661863 -
芯片
+關注
關注
456文章
51011瀏覽量
425283 -
藍牙
+關注
關注
114文章
5840瀏覽量
170769 -
PWM
+關注
關注
114文章
5194瀏覽量
214347
發(fā)布評論請先 登錄
相關推薦
評論