ARM的mbed快速原型開發(fā)解決方案將NXP LPC1768微控制器與支持組件和智能USB接口與基于云的工具配對,可以高效評估微控制器功能和應用原型。 mbed尋找可以優(yōu)化工作原型時間的技術和權衡,使設計人員能夠在設計周期的早期快速測試,評估和演示創(chuàng)意。
微控制器變得更小,功能更強大,功耗更低,更多的連接,但價格不斷下降。對于能夠成功采用該技術的新市場來說,這是一個巨大的機會。關鍵在于確定微控制器可以解決的新問題,并構建概念驗證,將創(chuàng)意轉化為成為潛在產(chǎn)品。
業(yè)界已為嵌入式工程師構建了出色的工具,可根據(jù)需要生成微控制器設計規(guī)范是已知的。但是,當任務是證明一個概念或定義規(guī)范時,即使對于有經(jīng)驗的工程師來說,風險和時間尺度通常也不會增加。結果是想法沒有得到嘗試;幾乎沒有迭代或設計空間探索;最終的設計也是原型,或者規(guī)范過于謹慎。鑒于在許多情況下,可以定義這些應用程序的想法,觀察和見解將來自其他問題領域的人,這些限制被放大。這有可能成為采用的真正障礙。
策略
mbed的基本目標是實現(xiàn)對微控制器功能的有效評估以及可應用的應用程序的原型設計。特別是,它旨在匹配產(chǎn)品設計其他方面的設計周期時間。有助于實現(xiàn)這一目標的策略(圖1)是尋找可以優(yōu)化工作原型時間的技術和權衡,而不是優(yōu)化設計本身。
圖1:mbed策略。
例如,微控制器的趨勢是以固定價格提高性能和內(nèi)存容量。雖然大多數(shù)工具專注于使用戶能夠在可以創(chuàng)建的應用程序的最終功能中利用它,但mbed卻專注于使用此性能和容量來減少設計挑戰(zhàn)。一個很好的例子是提供高級抽象,使得功能可以以實現(xiàn)效率和增加代碼大小為代價來訪問。
另一個關鍵目標是克服進入障礙;技術驗收模型(圖2)為實現(xiàn)這一目標提供了一個清晰的框架,突出了易用性和感知有用性。通過實驗和教育洞察技術,可以提高認知的實用性。原型設計方法自然支持用戶探索,同時使營銷和應用工程功能能夠輕松演示和展示技術。
圖2:技術接受度(Davis等,1989)。易于使用實際上非常依賴于背景;大多數(shù)好工具都很容易用于他們的預期任務。但對于不同的任務,結果不太可能相同。通過明確定義快速原型設計的背景,使設計權衡集中于易用性變得更有意義。對于熟悉現(xiàn)有專有架構和工具鏈的行業(yè)內(nèi)嵌入式開發(fā)人員而言,從專家到學習者的額外負面感覺可能令人望而生畏。僅這些因素就足以推遲探索轉向現(xiàn)代解決方案的好處。對于新用戶而言,恐懼,不確定性和懷疑同樣令人望而卻步。這使初始體驗變得至關重要;這些工具必須快速提供結果,投資少,建立信任并獲得任何進一步的持續(xù)投資。
入門
mbed的目標是讓新用戶盡快運行他的第一個項目,建立信心和信任在硬件和軟件工具鏈中。 mbed工具采用了一些新技術來實現(xiàn)這一目標,結果不言而喻;你可以在60秒內(nèi)開始。這一成就意味著沒有理由不進行實驗。
結果是通過兩項創(chuàng)新實現(xiàn)的;基于USB磁盤的編程器,用于硬件和編譯器工具,用作在Web瀏覽器中運行的基于云計算的Web應用程序。這些解決方案有一些明顯的好處,但有些并不是立竿見影的。
預先確定的優(yōu)點是無需設置或安裝。對于許多人來說,這只是一個令人愉快的驚喜,允許在沒有行政職責的情況下即時訪問。但對于其他在許多教育和工作場所環(huán)境中都有鎖定計算機系統(tǒng)的人而言,這可能是能否測試微控制器之間的區(qū)別。
IDE簡單但功能強大,可以讓它走出方式并做它的設計 - 編輯和編譯代碼。通過預先配置的所有內(nèi)容,它可以在任何平臺上開箱即用,包括PC,Mac或Linux。這種即時無障礙訪問使工具更有信心,使用戶能夠在需要使用或演示它們時隨時取出它們。
現(xiàn)在,通??梢栽诙嗯_計算機上工作,在線方法成為一個特別的優(yōu)勢。您不僅可以避免多次安裝的問題并保持同步,而且無論您身在何處,您的在線工作空間都隨身攜帶。
微妙的優(yōu)點是您看不到的東西。您無需做出決定,因為已經(jīng)為這項任務提供了最合適結果的選項和配置。
已經(jīng)完成了大部分硬件和軟件基礎工作。這些工具非常輕巧,從任何機器上都可以登錄,從頭開始創(chuàng)建項目,并在幾分鐘內(nèi)測試或修改一些東西;這種靈活性會對工作方式產(chǎn)生重大影響。簡化設置意味著一切都很容易重現(xiàn)。
結合單一硬件和庫模型,每個其他mbed用戶都在相同的環(huán)境中進行開發(fā)。這使得社區(qū)支持變得更加容易,因為人們可以在共同的背景下分享問題和疑問。
圖3:在線編譯器。
快速原型設計
mbed的硬件和軟件組件的架構和實現(xiàn)在原型設計方面提供了獨特的優(yōu)勢。
mbed微控制器硬件封裝了恩智浦LPC1768微控制器,支持元件和智能USB接口采用實用的40引腳0.1“間距DIP外形,非常適合在無焊接面板,條板和通孔PCB上進行試驗。為了支持暴露的接口,mbed C/C ++庫提供了高 - 微控制器外圍設備的電平接口,實現(xiàn)清晰,緊湊,API驅(qū)動的編碼方法。這種組合可立即連接外圍設備和模塊,用于基于微控制器的系統(tǒng)設計的原型設計和迭代,為開發(fā)人員提供更多創(chuàng)新和更多的自由圖4顯示了基本的mbed微控制器引腳排列,指示了接口資源的可用性和位置。接口指示特德匹配mbed庫中的那些。這突出了它們共同開發(fā)的一些主要優(yōu)點。 API提供抽象的外圍接口,而不是特定于實現(xiàn)。這些庫使用面向?qū)ο螅梢院芎玫赜成涞接行蔚奈锢碛布Y源。硬件,庫和文檔共享相同的接口命名和概念。
圖4:mbed微控制器引腳排列。
硬件和軟件之間的對齊使得自然編程風格能夠捕獲意圖,這對于快速實驗和迭代至關重要。
例如,mbed避免了需要通常的多級間接引腳和資源分配需要。這些往往會失去意義并引入錯誤。
#include“mbed.h”//mosi,miso,sclkSPI myspi(p5,p6,p7);
int main(){//設置9 -bit SPI @ 1MHz
myspi.frequency(1000000);
myspi.format(9); int response = myspi.write(0x8F);
圖5:配置并寫入a SPI器件。
圖5中的SPI示例演示了如何設置SPI主接口。首先,創(chuàng)建一個SPI對象并將其綁定到所需的引腳(mosi,miso和sclk),如圖4所示。請注意,當物理連接器件時,此表達式現(xiàn)在同樣有用 - 規(guī)范已捕獲物理連接。
接下來,在執(zhí)行寫/讀事務之前配置SPI對象(myspi)的頻率和位格式。 SPI對象上的方法定義明確,界面直觀,操作獨立于底層硬件的低級設置或要求實際上,要更改本例中使用的SPI端口,只有引腳名稱會需要改變。這有助于將設計的物理方面(使用的資源以及它們?nèi)绾伪还潭?的修改分離到控件(它們的作用)。
圖6中顯示了捕獲意圖的類似示例。在這種情況下,每次在數(shù)字輸入引腳上發(fā)生上升沿中斷時,都會調(diào)用一個函數(shù)。中斷是一個簡單的概念,但設置和正常運行非常復雜。使用mbed,代碼在概念上非常簡單。創(chuàng)建一個可以產(chǎn)生中斷的引腳,并將一個函數(shù)附加到該引腳的上升沿。
#include“mbed.h”中斷按鈕(p5);
DigitalOut LED(LED1); void flip(){
led =!led;
}
int main(){//附加翻轉到p5邊緣 button.rise(& flip); //徘徊永遠
while(1);
圖6:將函數(shù)附加到引腳中斷事件。
InterfaceFunctionDigitalIn
DigitalOut
DigitalInOut
InterruptIn
AnalogIn
AnalogOut
PwmOut
串口
SPI
I²C
CAN
以太網(wǎng)
定時器
Ticker
超時
讀取數(shù)字輸入引腳的狀態(tài)《 br》寫入數(shù)字輸出引腳的狀態(tài)
讀取和寫入雙向數(shù)字引腳
在引腳上升沿/下降沿觸發(fā)功能
讀取模擬輸入引腳上的電壓
控制模擬輸出引腳上的電壓
控制脈沖寬度調(diào)制輸出引腳
與串行(UART)設備通信
與SPI從設備通信
與I²C從設備通信s
在CAN總線上通信
讀寫以太網(wǎng)數(shù)據(jù)包
通用計時器
以固定間隔調(diào)用函數(shù)
7:mbed庫接口。
庫是使用整個方法構建的(參見圖7),它允許開發(fā)人員專注于應用程序邏輯而不是實現(xiàn)細節(jié)。
mbed庫建立在低端之上ARM®Cortex™微控制器軟件接口標準(CMSIS),是Cortex-M處理器系列獨立于供應商的硬件抽象層。與CMSIS相比,mbed庫提供了一個非常高級的API,專注于為外圍設備的基本控制提供抽象接口。這種結構為用戶提供了一種自然的方式,可以隨時隨地從mbed庫中受益,同時添加在CMSIS上構建的定制代碼,他們需要支持未提供的功能。特別是,這使得在原型設計時僅能在關鍵或差異化方面集中精力。除了mbed庫之外,mbed Community外圍庫是用于控制連接到微控制器的外圍設備(例如傳感器,執(zhí)行器,LCD和其他模塊)的貢獻代碼的擴展基礎。這些通常構建在mbed庫之上,使系統(tǒng)能夠快速連接,重點關注邏輯和功能而不是驅(qū)動程序。這些庫可以由mbed社區(qū)中的任何人提供,并且隨著時間的推移將由來自第三方供應商的中間件補充。
圖8:mbed庫體系結構。
應用程序示例
為了演示如何使用mbed實現(xiàn)簡單的應用程序?qū)嶒灒韵率纠菔玖擞蒊nternet數(shù)據(jù)庫控制的硬件設備。
圖9中的示例程序?qū)崿F(xiàn)一個系統(tǒng),該系統(tǒng)在屏幕上顯示消息并根據(jù)HTTP請求的結果移動伺服電機。該解決方案不太可能是最佳的,強大的或完整的,但足以使概念有效。
原型可以實現(xiàn)硬件的迭代,互聯(lián)網(wǎng)應用的早期開發(fā),新市場的探索或提供承諾的案例項目。通過使用可訪問的方式來測試想法,mbed有助于降低與產(chǎn)品開發(fā)相關的風險,并且可以更頻繁地將高級微控制器設計到應用程序中。
#include“mbed.h”#include“HTTPClient.h”
#include “MobileLCD.h”MobileLCD lcd(p5,p7,p8,p9);
//SPI LCD //以太網(wǎng)客戶端
HTTPClient http; //R/C伺服
PwmOut伺服(p21); int main(){//20ms伺服周期
servo.period(0.020);
char result [128]; while(1)
{
http.get(http://a.com/stat.php“,result); lcd.printf(”狀態(tài)為%s n,結果); //定位伺服,1-2ms脈沖寬度
float percent = atof(result);
servo.pulsewidth(0.001 *%); //每分鐘更新
wait(60);
圖9:從互聯(lián)網(wǎng)app控制屏幕和伺服。
結論
對快速原型設計的關注使mbed具有廣泛的吸引力。對于剛接觸嵌入式應用的工程師,mbed將使他們能夠首次實驗和測試產(chǎn)品創(chuàng)意。對于經(jīng)驗豐富的工程師,mbed提供了一種在概念驗證階段提高工作效率的方法。對于市場營銷,分銷商和應用工程師,mbed為微控制器的演示,評估和支持提供了一致的平臺。因此,mbed工具將幫助不同的受眾利用NXP LPC1768等高級微控制器帶來的機會。