SDK 新工具 Cube 是一個(gè)圖形化的初始化代碼生成器,可為桃芯各種芯片型號(hào)生成 C 代碼。
關(guān)鍵特性
這是一個(gè)交互式工具,輔助開發(fā)者正確配置芯片。各種特性總結(jié)如下:
- 支持各種芯片型號(hào)
- 以最直觀的方式完成外設(shè)和時(shí)鐘樹配置
- 豐富、易用的圖形界面
- 啟發(fā)式、交互式設(shè)計(jì)
- 無需文檔,使用方法一目了然
- 自動(dòng)檢查,減少錯(cuò)誤
- 管腳沖突
- 參數(shù)范圍
- 低調(diào)
- 生成的代碼匯總于一個(gè)文件
- 由開發(fā)者決定是否使用它生成的代碼
- 不會(huì)搞亂開發(fā)者的工程設(shè)置
- 極快的運(yùn)行速度
- 所有的檢查都是實(shí)時(shí)進(jìn)行
- 對(duì)于運(yùn)行環(huán)境要求低
- 與其它基于 Eclipse 的工具相比,效率不可同日而語
- 生成的代碼更高效
- 對(duì)于某些外設(shè)直接輸出“計(jì)算”后的代碼
- 比調(diào)用驅(qū)動(dòng)程序代碼更短、速度更快
在 Wizard 里右鍵單擊一個(gè)項(xiàng)目,從快捷菜單中選擇“Edit with Cube…”即可打開 Cube。Cube 生成的代碼保存在項(xiàng)目里的 /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()
下面通過幾個(gè)具體的場(chǎng)景介紹 Cube 的使用:
使用場(chǎng)景 1. 硬件工程師設(shè)計(jì)天線陣
比如現(xiàn)在要用 ING91880C 設(shè)計(jì)一塊天線陣,天線開關(guān)連哪個(gè) IO 腳?新建一個(gè) ING9188xx 的工程,打開 Cube,將型號(hào)選為 ING91880C,點(diǎn)擊 Antenna,再點(diǎn)擊菜單 Configure,彈出天線開關(guān)編輯窗口。點(diǎn)擊 Enable All,可以用做天線開關(guān)的 IO 腳一目了然:
使用場(chǎng)景 2. 硬件工程師設(shè)計(jì)LED指示燈
比如現(xiàn)在要用 ING91680A 設(shè)計(jì)一個(gè)產(chǎn)品,其中用到 LED 指示燈,打算使用 PWM 控制閃爍??梢允褂媚膫€(gè) IO 腳?新建一個(gè) ING9168xx 的工程,打開 Cube,將型號(hào)選為 ING91680A,點(diǎn)擊 PWM,再點(diǎn)擊菜單 Configure,彈出 PWM 編輯窗口。馬上就可以直觀檢查哪些管腳可用作PWM 輸出:
假設(shè)硬件工程師選定使用 IO 16 控制 LED 燈,通知軟件工程師。
使用場(chǎng)景 3.軟件工程師實(shí)現(xiàn) LED 燈的 PWM 控制
軟件工程師繼續(xù)使用 Cube 編輯 PWM。假設(shè)軟件工程師要使 LED 的初始狀態(tài)為 1 秒閃爍一次,占用比 50%。在 Easy 標(biāo)簽下,分別輸入頻率 1Hz,占空比 50%,—— 輸入數(shù)據(jù)時(shí)回車生效。這時(shí),從驗(yàn)證窗口內(nèi)馬上可以看到存在兩處錯(cuò)誤:PWM 的 PERA、HIGH 兩個(gè)數(shù)據(jù)都超出范圍了, 它們最多支持 20 個(gè)比特,即最大為 0xfffff。
由于 PWM 分頻比例有限,如果降低 PWM 的工作頻率,就能獲得更低頻的輸出。切換到時(shí)鐘樹頁面,我們發(fā)現(xiàn) PWM 有兩種時(shí)鐘可選:一為從 Slow Clk 分頻,一為使用 CLK 32k。讓我們直接使用 CLK 32k。
回到 PWM 編輯窗口 Channel 0 的 Easy 標(biāo)簽,這時(shí),驗(yàn)證窗口提示一切正常:
編譯下載程序,連接必要的硬件,即可看到 LED 燈在按要求閃爍。
打開 setup_soc.cgen 文件,可看到最末尾幾行的內(nèi)容為:
// dump PINCTRL registers
APB_PINCTRL- >OUT_CTRL[4] = 0x00001522; // 0x00001547
這是 Cube 對(duì) PINCTRL_SetPadMux(16, IO_SOURCE_PWM0_A)
做了“計(jì)算”后得出的結(jié)果, 顯然比在芯片里執(zhí)行 PINCTRL_SetPadMux(16, IO_SOURCE_PWM0_A)
效率更高。這對(duì)于 ING916XX 系列為重要:因?yàn)?PINCTRL 配置需要查一張復(fù)雜的表格,(https://github.com/ingchips/ING918XX_SDK_SOURCE/blob/07ffc140a28b86dfeda95cc9ea1f560e2b5adeae/src/FWlib/peripheral_pinctrl.c#L265)每次睡眠醒來都需要重新配置, 所以使用 Cube 既可以減小程序體積,對(duì)于降低功耗也有一定好處。
使用場(chǎng)景 4.軟件工程師借助 TIMER 實(shí)現(xiàn) LED 燈的 PWM 控制
由于某些原因,PWM 模塊另有它用,軟件工程師決定改用硬件定時(shí)器輸出 PWM 波形控制 LED 燈。查閱 PinCtrl 模塊的文檔可知, 萬幸 ,IO 16 可用于硬件定時(shí)器 PWM 波形的 A 路輸出。
選用 TIMER2 的 Channel 0 輸出 PWM 信號(hào),從編輯窗口發(fā)現(xiàn)計(jì)數(shù)器長(zhǎng)度僅用 16 比特,切換到時(shí)鐘樹窗口, 將 TIMER2 的時(shí)鐘切換為 32k。這樣,兩個(gè)計(jì)數(shù)數(shù)各配為 16000 就可以輸出 1 秒為周期,占空比 50% 的 PWM 波形了:
這個(gè)編輯窗口還出現(xiàn)了一個(gè)“陌生”的 “Park Value”,將鼠標(biāo)移動(dòng)到 “?” 上可以了解其功能。編譯下載程序,即可看到 LED 燈在按要求閃爍。
文章來源 桃芯科技
-
led
+關(guān)注
關(guān)注
242文章
23826瀏覽量
673632 -
芯片
+關(guān)注
關(guān)注
459文章
52464瀏覽量
440216 -
藍(lán)牙
+關(guān)注
關(guān)注
116文章
6074瀏覽量
173904 -
PWM
+關(guān)注
關(guān)注
116文章
5491瀏覽量
219213
發(fā)布評(píng)論請(qǐng)先 登錄
三門檻阻礙“寬帶中國(guó)” 潛力有效釋放
零門檻踏入以太網(wǎng)的世界,行走物聯(lián)網(wǎng)江湖
每個(gè)人都可以有個(gè)收音機(jī) 0門檻搞定收音機(jī)電路
干貨!Android之藍(lán)牙驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn)
在FireFly RK3288開發(fā)板上運(yùn)行Flint OS是怎樣的體驗(yàn)?
Android之藍(lán)牙驅(qū)動(dòng)開發(fā)總結(jié)
STM32H7打破CoreMark2000分門檻,喜歡STM32的嵌友可以上手了
ShineBlink是什么?有何作用
機(jī)智云邊緣操作管理系統(tǒng)及邊緣服務(wù)器滿足企業(yè)全球化需求
采用百度飛槳EasyDL完成指定目標(biāo)識(shí)別
4G氣象站的設(shè)計(jì)與實(shí)現(xiàn)
低代碼快速開發(fā)智能產(chǎn)品新系統(tǒng)

標(biāo)普云DeepSeek一體機(jī)發(fā)布:零門檻部署企業(yè)DeepSeek
運(yùn)動(dòng)控制模塊:Delta機(jī)械手柔性上下料開發(fā)零門檻!

評(píng)論