接續上一篇博文: MediaTek Genio 130/130A 快速上手(五),我們已利用 SDK 實作了 UART 範例。
本篇將會帶大家實作另一個範例:SPI LED control
- 以 Genio 130A HDK 做開發
- Pin 腳選用及 Pinmux 設定
- 實作 Application function、CLI command
- 測試結果
範例:SPI LED control
SPI 介面廣泛的應用在周邊裝置的通訊及控制上,本篇博文利用 SPI 來控制 RGB LED 燈,實現 LED 點亮、色彩控制等功能。
** RGB LED 僅需要 SPI Clock 以及 MOSI 兩 pin 即可。
GPIO pin selection
參考由 AcSip 群登科技提供的 HDK User Guide,我們選用 GPIO_6、GPIO_9 作為 SPI0 的 Clock 以及 MOSI
hal pinmux 設定方式與前篇博文相同,都是呼叫 fundion hal_pinmux_set_function() 來完成
SPI Application & LED command
MediaTek Genio 130/130A SDK 的 SPI 提供 Polling mode 與 DMA mode 兩種模式,本篇將使用 Polling mode 實作。透過以下流程實作 Polling mode SPI 初始化以及資料收發的功能:
SPI Master 運作流程
SPI Master 初始化
SPI Master 資料收發
LED 控制部分,我們透過建立 CLI command 將 LED 控制命令串接到 SPI API function
Build image & flash
以下是本篇範例修改/新增的程式檔(參考)
需要修改的檔案
- GCC/feature.mk
- GCC/Makefile
- src/cli_cmd.c
- inc/spi_led.h
- src/spi_led.c
測試
我們將 Genio 130A HDK 重新啟動,在 console 可以查找到 SPI LED CLI command 以及說明
CLI command 範例
測試結果
相關資訊連結:
- MetiaTek Genio 130/130A : https://www.mediatek.com/iot/products/genio-130
- MTK Genio130/130A Non-NDA SDK(請參考下圖位置) : https://www.wpgdadatong.com/product-channel/Mediatek
參考來源