在物聯網開發與STM32 嵌入式應用實踐中,RGB 燈是實現可視化交互、狀態指示的常用外設,而機智云 Gokit3 開發板作為物聯網開發的經典硬件平臺,其板載的 RGB 燈憑借 P9813 專用驅動芯片具備靈活的色彩控制能力。
本文聚焦Gokit3 開發板(MCU 模式,主控 STM32F103C8T6),以 HAL 庫為開發基礎,從 P9813 驅動芯片的工作原理入手,系統講解 RGB 燈的硬件特性,并完整解析 RGB 燈 HAL 庫驅動的移植過程,同時通過紅綠藍顏色輪詢的功能實現,讓開發者直觀掌握 RGB 燈的驅動開發與實際應用,文末還將附上本文涉及的源碼、原理圖等全套資料鏈接,助力快速上手開發。
01RGB和P9813驅動芯片原理
在Gokit3 的原理圖中,RGB 燈的驅動核心是P9813 芯片(圖中 U3),它是一款單總線控制的 RGB 全彩 LED 驅動芯片,專門用于簡化 RGB 燈的硬件控制 —— 僅需 2 根控制信號線,即可實現 RGB 顏色的精準調節。

引腳介紹:
9腳(VCC)接VCC5V+R5(3.6Ω電阻)芯片電源輸入(5V供電),R5是限流電阻,避免電源沖擊
4腳(GND)接GND芯片接地引腳,保證電源回路
1腳(DIN)接“DIN”接口(對應STM32PB9)串行數據輸入引腳:接收STM32發送的顏色控制數據(對應STM32中PB9)
2腳(CIN)接“TheKey”接口(對應STM32PB8)時鐘輸入引腳:接收STM32發送的同步時鐘信號(對應STM32中PB8)
5腳(R)、6腳(G)、7腳(B)接RGB燈的紅、綠、藍通道直接驅動RGB燈的三個顏色通道,輸出對應亮度的電流
14腳(COUT)、13腳(VOUT)懸空(未連接)級聯輸出引腳:用于多顆P9813串聯控制(Gokit3僅用1顆,故未使用)
12腳(MODE)接C18(100nF電容)→GND模式選擇引腳:通過電容下拉至GND,配置為“單線模式”(Gokit3用的單總線通信)
11腳(CLKSEL)接C18(100nF電容)→GND時鐘模式選擇引腳:電容下拉配置為“外部時鐘模式”(時鐘由STM32的PB8提供)
3腳(JEN)接R13(10KΩ電阻)→GND使能引腳:下拉至GND表示“使能芯片工作”(默認處于工作狀態)
10腳(VOUT)懸空(未連接)級聯電源輸出(同VCC,級聯時給下一顆芯片供電)
1、單總線通信,僅需2根線(時鐘SCL+數據SDA)即可控制,無需復雜硬件(如SPI/I2C)PB8=SCL、PB9=SDA,無外設初始化
2、24位顏色控制,紅(R)、綠(G)、藍(B)各分配8位數據,亮度范圍0~255R_MAX/G_MAX/B_MAX=255
3、內置反碼校驗,顏色數據高2位需傳輸反碼,
4、幀格式固定通信必須以“起始幀+數據幀+重復幀”完成
5、5V電壓兼容適配Gokit3的5V供電,無需額外電平轉換源碼無電平轉換邏輯
02Gokit3 板載的RGB 燈
1.Gokit3 板載 RGB 燈由 P9813 驅動芯片全彩 LED 驅動芯片控制,核心特性:
通信:僅需(原理圖上的SCL連PB8)+ (原理圖上的SDA連PB9)2 根線即可控制顏色
顏色編碼:24 位顏色數據(R/G/B 各 8 位,亮度范圍 0~255)
通信規則:
先發送32 個 0 作為起始幀,再發送 32 位顏色數據(含標志位 + 反碼 + RGB 值),最后重復發送顏色數據確保生效
03原理圖及實物圖


2、GPIO硬件配置(MCU 模式)
PA0:RGB 燈總開關,高電平使能(源碼中ledRgbControl函數首行置高 PA0)
PB8/PB9:推挽輸出模式,通過高低電平模擬 P9813 通信時序,無需硬件 SPI/I2C
04Gokit3的RGB燈源碼移植
本次使用的驅動文件為hal_rgb_led.h和hal_rgb_led.c這兩個RGB的驅動文件
頭文件:hal_rgb_led.h(宏定義 + 函數聲明)
源文件:hal_rgb_led.c(核心功能實現)
(1)PA0 初始化函數:rgbKeyGpioInit
void rgbKeyGpioInit(void)

解析:實現PA0 推挽輸出配置,為了兼容2.2
(2)延時函數:ledDelay

解析:給P9813 通信時序延時作用
(3)時鐘生成函數:clkProduce

解析:P9813 核心時序函數,通過拉低 / 拉高 PB8 生成時鐘信號,延時 40 個空循環保證時序滿足 P9813 要求。
(4)起始幀發送函數:send32Zero

解析:P9813 通信必須以 32 個 0 作為起始幀,此函數通過循環生成 32 個時鐘,且 SDA 始終為低,完成起始幀發送。
(5)反碼處理函數:takeAntiCode

解析:P9813 協議要求顏色數據高 2 位需傳輸反碼,此函數提取 R/G/B 值的高 2 位并取反,是官方驅動的核心協議適配邏輯。
(6)32 位數據發送函數:datSend

解析:按P9813 ,逐位發送 32 位顏色數據,每發送 1 位生成 1 個時鐘信號,是數據傳輸的核心函數。
(7)數據處理函數:dataDealWithAndSend

解析:將R/G/B 值組裝為 P9813 要求的 32 位數據格式(標志位 + 反碼 + 顏色數據),再調用datSend發送。
(8)RGB 初始化函數:rgbLedInit

解析:初始化PB8/PB9 為推挽輸出,發送起始幀并將 RGB 燈初始化為滅燈狀態,是驅動使用前必須調用的初始化函數。
(9)顏色控制函數:ledRgbControl

解析:對外提供的核心調用函數,參數為R/G/B 亮度值(0~255),調用:如果向亮什么顏色的燈就可以調用這個函數實現RGB亮燈,一個顏色的燈有255種亮度,三個顏色的燈組合起來可以實現任何顏色的亮燈。
05實現RGB幾個顏色燈輪轉效果(驅動移植)
整體過程:添加兩個RGB驅動文件---- 工程配置好---- 調用RGB初始化函數----調用亮燈控制函數實現亮燈----- 使用delay實現簡單幾個顏色輪轉。
1、驅動文件添加
將hal_rgb_led.h放入工程Inc文件夾,hal_rgb_led.c放入Src文件夾;
在Keil 中添加hal_rgb_led.c到工程,并配置頭文件路徑(確保#include"hal_rgb_led.h"不報錯)。
2、初始化調用
調用:rgbLedInit();實現初始化

3、調用RGB亮燈函數,實現任何顏色的亮燈(需要顏色組合)
以下各種顏色為例,實現亮燈循環。

編譯燒錄,觀察現象,可以看到RGB燈成功驅動起來了。


本文從RGB燈的應用場景與硬件基礎出發,深入剖析了板載P9813驅動芯片的工作原理,完整呈現了HAL庫驅動的移植流程,并通過紅綠藍顏色輪詢的實例實現,為開發者提供了從理論到實踐的全流程指導,助力大家快速掌握物聯網開發中RGB燈這一常用外設的驅動開發與應用技巧。
-
機智云
+關注
關注
3文章
647瀏覽量
27766 -
HAL
+關注
關注
2文章
75瀏覽量
13667 -
rgb燈
+關注
關注
0文章
11瀏覽量
2065
發布評論請先 登錄
4G模組接入機智云gokit3開發板
基于gokit3微信寵物屋與機智云的物聯網智能家居
基于gokit3微信寵物屋與機智云的物聯網智能家居
通過機智云GoKit3開發套件實現手機APP的遠程控制
機智云推出基于物聯網智能硬件開發套件GoKit3
gokit3是如何接入4G模組ML302-GC211轉接板的
機智云Gokit3開發篇:ST-Link燒錄MCU程序操作詳解
機智云Gokit3開發篇 — 搭建Gokit3工程(HAL庫版)
《機智云Gokit3開發篇》4 RGB燈的介紹與驅動移植(HAL庫)
評論