加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關推薦
  • 電子產業(yè)圖譜
申請入駐 產業(yè)圖譜

逐飛科技基于NXP LPC55S69的IoT開發(fā)板簡介

2020/10/13
502
閱讀需 30 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

各位攻城獅好,由逐飛科技設計制作的全新的 IoT 開發(fā)板推出啦!這是一款基于恩智浦 LPC55S69 芯片設計的簡約而又不簡單的開發(fā)板,下面直接讓我們來看看這塊小小開發(fā)板都有些什么特別的地方吧!

一、LPC55S69 芯片怎么樣
首先來看看這個小板子的核心,了解下 LPC55S69 這顆芯片怎么樣。

LPC55S6x 家族是全球首款基于通用 Cortex-M33 的微控制器,并且它是第一款基于 40nm 工藝的 MCU,動態(tài)功耗僅僅 32μA/MHz。采用 Armv8-M 架構以及 TrustZone-M 和協(xié)處理器擴展,性能和高級安全功能達到新水平。

它的內核是雙核架構,由兩顆 Cortex-M33 組成。這里特別注意的是這兩顆內核有大小之分,Core0 內核是全功能的 Cortex-M33,而 Core1 則去除了 TrustZone、MPU、SAU、FPU、SIMD 等內核增強的功能。Armv8-M 架構允許客制化的協(xié)處理器,NXP 利用這一特性加入了 DSP 加速器 PowerQuad 和加密引擎 CASPER,分別從運算和安全兩個角度顯著提升 MCU 本身的性能。

這款 MCU 運行頻率高達 150MHz,擁有高達 640KB 的 FLASH,以及 320KB 的 SRAM。

1.1、安全性上:除了 TrustZone-M,還有 PRINCE 模塊對寫入到片上閃存的數據進行實時加密,擁有 AES-256 加密 / 解密引擎、安全散列算法 (SHA1/SHA2) 模塊,可以通過專用 SRAM 上的芯片指紋提供物理不可克隆功能(PUF),還擁有隨機數生成器(RNG)、唯一的 128 位設備識別序列號(UUID)、安全通用 IO。

1.2、模擬外設上:
1.ADC 是這次 LPC 的 MCU 升級最大的地方,ADC 升級到 16 位 1M 采樣率,具有 5 個差分通道對(或 10 個單端通道)以及多個內部和外部觸發(fā)器輸入,且支持 2 個獨立的轉換序列,同時擁有連接至 ADC 的內置溫度傳感器;

2. 具有 5 個輸入引腳和外部或內部基準電壓比較器;

同時通信接口上極為豐富:

1.8 組 FlexComm 接口,可以讓用戶靈活的配置得到最多 8 路串行接口UART、I2CSPI 任意組合,最多 8 個)或者 4 組全雙工模式的 I2S 接口。

2. 一個獨立高速 SPI 接口,最高可運行在 50MHz 的頻率,流暢刷一個小屏幕的 LCD 不再是夢想。

3.USB 接口一如以往的領先業(yè)界,一個高速 USB 和一個全速 USB 接口,均集成 PHY 以及支持主機和從機模式。

4.SDIO 接口也在以前的 LPC 基礎上做出了重大改進,安全的數字輸入輸出(SD/MMC 和 SDIO)卡接口, DMA SDIO 支持兩個卡。支持的卡類型為 MMC、SDIO 和 CE-ATA。支持 SD2.0 和 SR25。

1.3、數字外設上:
1.2 個 DMA 控制器,DMA0 控制器,具有 23 個通道和多達 22 個可編程觸發(fā)器;DMA1 控制器,具有 10 個通道和 16 個可編程觸發(fā)器;
2.1 個 CRC 引擎模塊,可使用支持 DMA 的 3 個標準多項式中的一個計算所提供數據的 CRC;

3. 最多 8 個通用 IO 可選為引腳中斷(PINT),由上升沿、下降沿或兩種輸入沿觸發(fā);

4. 兩組通用 IO 中斷(GINT)支持基于輸入狀態(tài)邏輯(AND/OR)組合的中斷;

1.4、并且定時器上還配備了:
1.5 個 32 位標準通用異步定時器 / 計數器,支持多達 4 個采集輸入和 4 個比較輸出,可選擇特定的定時器事件生成 DMA 請求;

2.1 個 SCTimer/PWM,具有 8 個輸入和 10 個輸出函數(包括捕獲和匹配),輸入和輸出可引至或引自外部引腳,內部引至或引自所選外設,在內部,SCTimer/PWM 支持 16 個捕獲 / 匹配,16 個事件和 32 個狀態(tài);

3.1 個 32 位實時時鐘(RTC), RTC 中的定時器可用于喚醒所有低功耗模式(包括深度節(jié)電模式),具有 1 ms 分辨率;

4.1 個多通道多速率 24 位定時器(MRT),可用于在多達 4 種可編程固定速率下重復生成中斷;

5.1 個窗口看門狗定時器 (WWDT),使用 1MHz 的 FRO 作為時鐘源;

6.1 個微節(jié)拍定時器,通過看門狗振蕩器運行,可用于將器件從睡眠和深度睡眠模式中喚醒;

7.1 個 42 位自運行 OS 定時器作為系統(tǒng)的連續(xù)時基,適用于任何低功耗的模式;

可謂外設豐富、功能強大,各位 MCU 玩家是不是想上手折騰一下了呢。

二、如何使用 IoT 主板快速入門
2.1、首先自然是硬件平臺

進入正題,首先我們需要一個配套的開發(fā)硬件,這里就需要 IoT 開發(fā)板上線了!這個開發(fā)板只有 54*78.75mm 的尺寸大小,比掌心還要小一點。雖然體積小巧,但該有的接口一個不少,接口形式豐富,涵蓋了所有的片上功能所需引腳。

兩個 Type-C 類型的全 / 高速 USB 接口,MICRO SD 形式的短體卡座一個,6 個 FlexComm,UART、I2C 和 SPI 任意組合,按需分配復用。

上述都是固定的接口,不能自行 DIY 接口接線,需要可以自定義的,功能又完備的接口?那擴展的 Arduino 接口怎么樣呢?

該 IoT 開發(fā)板拓展的 Arduino 接口上囊括了 GPIO、ADC、PWM、USART、I2C、高速 SPI 功能,不僅可以接入配套傳感器、自行拓展接線,也能接入部分 Arduino 接口的外設與器件,DIY 性能 MAX。

豐富的接口搭配上配套的傳感器(持續(xù)更新增加中)等外設,就能涵蓋絕大多數的學習、原型階段開發(fā)的需求。

2.2、當前配套傳感器、模塊(后續(xù)也會持續(xù)新增添加):
1. 氣壓計 MS5611 模塊,一款高精度氣壓傳感器,量程 10~1200mbar,精確度(25℃,750mbar)±1.5mbar,電源 1.8V~3.6V;

2. 溫濕度計 SHT31 模塊,量程 0~100%RH/-40~125℃(精度±2% RH/±0.2℃),電源 2.15V-5.5V,能耗 4.8μW (在 2.4 V 時低重復性, 1 次 / 秒);

3. 激光 TOF 測距 VL53L0X 模塊,絕對范圍 2M,精度(23℃電壓 2.8V 下不含蓋板玻璃測試)典型偏移為±10mm,電源電壓 2.6V~3.5V;

4.2.4 寸的 TFT 彩色屏幕,以及可選的配套 FT6336 驅動的電容觸摸屏,支持最多兩點觸控;

5.ESP8266,應用比較廣泛、功能也比較齊全的一款 WIFI 模塊。

重點介紹:這塊開發(fā)板上有一個全新的接口形式:FlexComm 接口,這是為了統(tǒng)一傳感器接口而定義的一種新的 2*5pin 接口,與 LPC 系列的 FlexComm 外設對應,可以復用成 UART、I2C、SPI 或者 I2S 功能。

接口具有防呆設計,即使插反也不會導致傳感器損壞,含有 5V 以及 3.3V 供電接口,GND 對腳設計。上述的配套硬件的傳感器皆為使用 FlexComm 接口設計,可以直接插在任意一個 FlexComm 接口上使用。

使用這個接口,統(tǒng)一外設接口形式,設計時可以根據不同需求進行定制,這樣可以將傳感器設計成 Plug-in Card 形式,對于可拓展性、復用性與升級系統(tǒng)有相當良好的支持。

這個接口目的是達成傳感器的接口統(tǒng)一,從而向著可以實現傳感器自動識別的方向實現真正意義上的統(tǒng)一性與標準化。試想,如果可以實現升級項目產品而不用在硬件傳感器連接上改動,只用替換掉器件升級產品固件即可,甚至可以進一步實現固件不變,產品固件自動識別傳感器進行數據采集,是不是很有吸引力。

2.3、開源軟件資料
IoT 主板可以直接使用 NXP 官方 SDK 進行學習、開發(fā)哦,只需要按照 IoT 主板引腳進行細微調整即可。像 USB、SD-Card 這類的較為復雜的接口,雙核協(xié)作以及各類安全性的外設與模塊的使用,官方的 SDK 已有完善的 Demo 和說明,同時相關 SDK 的問題還能在恩智浦社區(qū)發(fā)帖提問哦。

當然,為了更方便的使用這塊開發(fā)板,逐飛科技精心編寫了“逐飛”風格的基于官方 SDK 進行二次開發(fā)的接口庫,封裝了常用的一部分外設驅動,并附上了說明注釋詳盡的 Demo,同時也對配套硬件有完善的驅動庫,以及使用的 Demo。已經包含的外設接口有 ADC、CTimer、GINT、PINT、GPIO、HSPI、FlexComm、SCTimer、UTICK 定時器,基本覆蓋了 IOT 主板上接口的所有功能需求。

Gitee 開源鏈接:https://gitee.com/seekfree/LPC55S69_Library

說明:開源軟件資料主要針對芯片的常用模塊進行編寫,更適合配合逐飛的 LPC55S69 核心板進行擴展開發(fā)使用,IoT 部分的應用 demo 需要聯系逐飛科技獲取相關軟件資料。

封裝完成的接口調用方便簡潔,例如 Ctimer 的調用,三種功能初始化:

//BOARD_InitPins();?? ??? ??? ??? ??? ??? ??? ??? ?// 引腳初始化

pin_param_t?config;?? ??? ??? ??? ??? ??? ??? ??? ?//?管腳配置結構體??

zf_gpio_get_default_config(&config);?? ??? ??? ??? ?//?獲取默認設置??

zf_gpio_init(PIO1,?PIN03,?&config,?PIN_DIR_OUT);?? ?//?默認輸出初始化一個測試用?LED??

config.param_bit.pin_param_func?=?PIN_FUNC_3;?? ??? ?//?切換到?FUNC3??

zf_gpio_init(PIO1,?PIN02,?&config,?PIN_DIR_OUT);?? ?//?CT0-MAT3?PWM?輸出??

zf_gpio_init(PIO1,?PIN15,?&config,?PIN_DIR_IN);?? ?//?CT_INP07_P1_15?輸入??

//?定時器模式初始化?設置?周期通道?頻率

zf_ctimer_timer_init(CTM_0,?CTM_CH_0,?10000);

zf_ctimer_pwm_setup(CTM_0,?CTM_CH_3);?? ??? ??? ??? ?//?啟動?PWM??

zf_ctiemr_start(CTM_0);?? ??? ??? ??? ??? ??? ??? ?//?啟動定時器??

//?初始化為輸入捕獲

zf_ctimer_capture_init(CTM_1,?CTIMER_TIMER_MODE_CAP_RISING_EDGE,?CT_INP07_P1_15);?

zf_ctiemr_start(CTM_1);?? ??? ??? ??? ??? ??? ??? ?//?啟動定時器??

//?定時器模式初始化?設置?周期通道?頻率

zf_ctimer_timer_init(CTM_2,?CTM_CH_0,?100);

zf_ctimer_intterupt_enable(CTM_2,?ctiemr2_handler);//?設置定時器中斷??

zf_ctiemr_start(CTM_2);?? ??? ??? ??? ??? ??? ??? ?//?啟動定時器??

調用接口如上即可完成 Ctimer 0 的 PWM 輸出、Ctimer 1 的輸入捕獲以及測試用 LED 引腳的初始化。BOARD_InitPins 函數為兼容 MCUXpresso Config Tools 軟件輸出的引腳配置文件的接口,用戶可以使用 MCUXpresso Config Tools 進行快捷的引腳配置,然后直接導入到工程即可。

并使能 Ctimer 0 的輸出通道 3 產生一個 10KHz 的 PWM 輸出;啟動 Ctimer 1 的輸入通道 7 為上升沿信號輸入捕獲;并且使 Ctimer 2 產生一個頻率為 100Hz 的中斷觸發(fā),并且將中斷處理指向為用戶自定義的中斷服務函數 ctimer_handler。

而傳感器、外設等的調用同樣簡單:

uint32_t data;

BOARD_InitPins();?? ??? ??? ??? ??? ??? ??? ?// 引腳初始化

vl53l0x_init(IIC_DEMO);?? ??? ??? ??? ??? ??? ?// VL53L0X 初始化 IIC

vl53l0x_start_continuous(IIC_DEMO,?100);?? ??? ?// 設置采樣間隔時間 ms 開始連續(xù)測距

while(1)

{

?? ?data = vl53l0x_read_range_continuous_millimeters(IIC_DEMO);?

?? ?PRINTF("nvl53l0x_read: %d.%dcm.", data_buffer/10, data_buffer%10);

?? ?delay_ms(1000);

}

使用 MCUXpresso Config Tools 進行快捷的引腳配置,導入到工程,然后直接調用 BOARD_InitPins 完成 IIC 引腳的配置,之后調用獲取數據的接口即可。

同時,我們還在開源庫中移植了 RT-Thread,并提供了一個移植 Demo 供參考學習。RT-Thread 使用 finsh 控制臺插件,支持 MSH 命令行操作,對于調試、log 管理、消息查詢是一大利器。

2.4、針對 IOT 主板的軟件接口庫
逐飛科技還為 IoT 主板配備了專門的的 IoT 庫,能完全適配各個物理接口,在庫中有軟件接口實現,并且有非常詳細的傳感器 Demo 說明,用來入門相當省時省力哦!同時還可以用作參考,深入對 SDK 接口與芯片的理解。(Tips. 配套 IoT 庫會持續(xù)更新哦)

舉例說明:同樣的 Ctimer 輸出 PWM,會有什么不一樣呢?來看一下:

//?先設置頻率?因為每個?CTIMER?模塊只能有一個頻率

arduino_ctimer_pwm_set_freq(ARDUINO_PWM_CTM0,?10000);

//?再設置管腳?對齊方式有效電平無法選擇?對應管腳請看主板背面絲印

arduino_pwm_ctimer_init(ARDUINO_PIN_D02);

這里并沒有引腳初始化相關的語句,就已經完成了所有的配置,可以輸出 PWM 了。接下來再看看 ADC 采樣:

int?main(void)

{

????//?IOT?主板初始化 設置時鐘?150Mhz?并且開啟?USART7?的 debug 輸出

IoT_board_init(CLOCKPLL150M,?BOARD_USART7_DEBUG_ENABLED);

????//?初始化?ADC?采集管腳

arduino_adc_sample_default_init(ARDUINO_PIN_A01);

//?初始化?ADC?差分對管腳

????arduino_adc_diff_default_init(ARDUINO_ADC_DIFF_A2_A3);?

????while?(1)

{

//?采集?ADC?電壓

?????????PRINTF("nADC?get?data:?%d.",?arduino_adc_get_voltage(ARDUINO_PIN_A01));?

//?采集?ADC?差分電壓

?????????PRINTF("nADC?get?diff_data:?%d.",?arduino_adc_get_diff_voltage(ARDUINO_ADC_DIFF_A2_A3));

????????delay_ms(1000);

????}

}

這里通篇沒有引腳初始化,僅有對應 IoT 主板上的引腳編碼,直接調用 IoT 庫的功能接口,即完成了所有的初始化,可以正常進行使用了。對于開發(fā)者來說,是不是方面了很多呢,下圖是庫函數實現的基本邏輯,供參考理解。

該 IoT 開發(fā)庫適用于快速上手、快速入門,可以在較短的時間內實現開發(fā)效果與展現運行現象。同時,這也是基于逐飛 LPC55S69 開源庫以及 SDK 來封裝實現的,這既可以說是針對 IoT 主板的 IoT 接口庫,也可以說是為了實現 FlexComm 與 Arduino 接口統(tǒng)一而封裝的接口。
IoT 庫封裝了繁瑣的 IO 分配、初始化部分,將各個功能外設的接口調用、功能處理清晰化。用戶可以從 IoT 庫開始,快速體驗到 IoT 主板的功能的強大與便捷,再研究學習內部驅動與結構,進一步應用于產品開發(fā),循序漸進。

三、為什么叫 IOT 開發(fā)板?
既然叫 IoT 開發(fā)板,自然是要奔著 IoT 開發(fā)方向前進的!這塊 IoT 主板的目標就是一塊綜合性的 IoT 開發(fā)套件的基礎,也就是可以通過 FlexComm 接口拓展、替換、升級功能的 IoT 項目應用的目的。

舉個例子,在這塊主板上,使用一個 FlexComm 來接入 ESP8266 模塊,用以與云服務器通信,此時可以通過云端 OTA 支持進行空中下載升級固件,在需要升級硬件傳感器時,僅需要升級固件并替換、接入通用 FlexComm 接口的傳感器即可。這只是一個簡單的例子,具體的應用可以根據實際需求進行創(chuàng)新拓展。

IoT 庫當前編入了一個簡易的 MQTT 協(xié)議處理,可用于連接物聯網云端服務器,可用于對接 ALI 云,ALI 云是當前實用性強、適用范圍廣、上手也比較簡單迅速的一個選擇,相關資料支持與配套環(huán)境都相對齊全。

//------------------------------------------------------------------------

//??@brief??????與服務器建立?TCP?連接并與對應設備完成對接??

//??@param??????message?????????設備三元組??

//??@return?????bool????????????是否成功與服務器建立?TCP?連接并對接到對應設備??

//------------------------------------------------------------------------

bool?mqtt_aliyun_init?(aliyun_device_message_t?*message)

{

????//?設置?FlexComm_index

????aliyun_device.Index?=?message->Index;

????//?設置?productkey

????mqtt_set_productkey(message->productkey,?message->productkey_len);

????//?設置?devicename

????mqtt_set_devicename(message->devicename,?message->devicename_len);

????//?設置?devicesecre

????mqtt_set_devicesecre(message->devicesecre,?message->devicesecre_len);

? ? //?初始化服務器連接參數?連接服務器

????if(!mqtt_aliyun_tcp_init())

????????return?false;

????return?true;

}

那怎么入門物聯網呢?IoT 庫中提供了一個簡易的 ALI 云連接通信 Demo,向各位有意開始學習、準備實踐的客戶提供一個入門參考,附有說明文檔。

aliyun_device_message_t?aliyun_init_t;?? ??? ??? ??? ??? ?//?新建一個參數結構體

aliyun_init_t.Index?=?IOT_FLEXCOMM_0;?? ??? ??? ??? ??? ?//?指定使用的?FlexComm

memset(aliyun_init_t.productkey,?0,?32);?? ??? ??? ??? ?//?清空?productkey

memcpy(aliyun_init_t.productkey,?"a13WwZVmHl6",?11);?? ?//?寫入?productkey

aliyun_init_t.productkey_len?=?11;?? ??? ??? ??? ??? ??? ?//?寫入?productkey?長度

memset(aliyun_init_t.devicename,?0,?32);?? ??? ??? ??? ?//?清空?devicename

memcpy(aliyun_init_t.devicename,?"device_demo",?11);?? ?//?寫入?devicename

aliyun_init_t.devicename_len?=?11;?? ??? ??? ??? ??? ??? ?//?寫入?devicename?長度

memset(aliyun_init_t.devicesecre,?0,?32);?? ??? ??? ??? ?//?清空?devicesecre

//?寫入?devicesecre

memcpy(aliyun_init_t.devicesecre,?"af27d6b2368ce1a10fa95f7762d414a6",?32);?

aliyun_init_t.devicesecre_len?=?32;?? ??? ??? ??? ??? ?//?寫入 devicesecre 長度??

rt_kprintf("aliyun_init?start.rn");?? ??? ??? ??? ??? ?//?RTT?控制臺輸出?log??

if(!mqtt_aliyun_init(&aliyun_init_t))?? ??? ??? ??? ??? ?//?ali?云連接??

{??

????rt_kprintf("aliyun_init?error.rn");?? ??? ??? ??? ?//?RTT?控制臺輸出?log??

????while(1);??

}

rt_kprintf("aliyun_init?success.rn");?? ??? ??? ??? ?//?RTT?控制臺輸出?log?

?

怎么樣,各位攻城獅,看小編嘚吧嘚了這么多,是否想要親自上手把玩一下呢? 購買渠道某寶,大家自行搜索即可,購買可享 NXP 聯合推廣價。

恩智浦

恩智浦

恩智浦半導體創(chuàng)立于2006年,其前身為荷蘭飛利浦公司于1953年成立的半導體事業(yè)部,總部位于荷蘭埃因霍溫。恩智浦2010年在美國納斯達克上市。恩智浦2010年在美國納斯達克上市。恩智浦半導體致力于打造全球化解決方案,實現智慧生活,安全連結。

恩智浦半導體創(chuàng)立于2006年,其前身為荷蘭飛利浦公司于1953年成立的半導體事業(yè)部,總部位于荷蘭埃因霍溫。恩智浦2010年在美國納斯達克上市。恩智浦2010年在美國納斯達克上市。恩智浦半導體致力于打造全球化解決方案,實現智慧生活,安全連結。收起

查看更多

相關推薦

電子產業(yè)圖譜

恩智浦半導體(NXP)致力于通過先進的安全連結解決方案為人們更智慧安全、便捷的生活保駕護航。作為全球領先的嵌入式應用安全連結解決方案領導者,恩智浦不斷推動著安全互聯汽車、工業(yè)與物聯網、移動設備及通信基礎設施市場的創(chuàng)新。