1.概述
本期分享的是使用RA2E1通過SPI的MOSI腳產生WS2812的控制時序,實現燈帶控制的效果。
2.燈帶介紹
WS2812是24位(1600萬)色LED燈源芯片,集成了信號整形控制、電源反接保護等功能,5V安全供電,性價比高,在智能燈帶市場中應用非常廣泛。芯片以級聯的方式串接起來,每顆燈源可單獨尋址控制,根據需要的長度和間距,定制出各種顯示效果,如直線燈帶、環形、點陣屏等。很多創客喜歡用WS2812彩燈DIY一些酷炫的項目,可以說網上關于WS2812的資料是比較豐富的。有用不同的控制核心實現控制,以及通過不同的方式進行控制。我們選用RA的SPI(默認使能DTC)MOSI口實現WS2812控制時序的輸出。
WS2812需要的時序是這樣的:
需要注意的是不同廠家的產品時序略有差別,實際需要根據手冊調整代碼,以產生對應控制波形。
3.軟件配置
e2studio中如下配置RA2E1的SPI:
8M的SPI波特率,一個位的時間等于1s ÷ 8 × 10^6,為0.125μs。
WS2812需要的0碼對應SPI發送 0b 1100 0000
WS2812需要的1碼對應SPI發送 0b 1111 1000
設置SPI發送下面數據:
4.燒錄測試
燒錄后實際測一下P213引腳波形
復位
0碼
1碼
實際效果
5.例程獲取
歡迎follow我們的gitee倉庫獲取更多示例代碼及相關資料:https://gitee.com/ramcu/ra-eco-ra2-e1-48-pin
模塊已接口化實現,方便調用
/*
* ws2812.h
*
* Created on: 2021年12月21日
* Author: ramcu
*/
#ifndef WS2812_H_
#define WS2812_H_
#include "hal_data.h"
#define NUMPIXELS (16)
#define NUMRES (60)
#define SPIBUFL ((NUMPIXELS) * 3 * 8 + NUMRES)
void ws2812Init(void);
void show(void);
void clear(void);
void setPixelColor(uint16_t n, uint8_t g, uint8_t r, uint8_t b);
#endif /* WS2812_H_ */
/*
* ws2812.c
*
* Created on: 2021年12月21日
* Author: ramcu
*/
#include "ws2812.h"
static uint8_t spidate[SPIBUFL] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, 0xf8, \
0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, 0xf8
};
void ws2812Init(void)
{
R_SCI_SPI_Open(&g_spi0_ctrl, &g_spi0_cfg);
}
void show(void)
{
R_SCI_SPI_Write(&g_spi0_ctrl, spidate, SPIBUFL, SPI_BIT_WIDTH_8_BITS);
R_BSP_SoftwareDelay(80, BSP_DELAY_UNITS_MICROSECONDS);
}
void clear(void)
{
memset(& spidate[NUMRES], 0xc0, (NUMPIXELS) * 3 * 8);
}
void setPixelColor(uint16_t n, uint8_t g, uint8_t r, uint8_t b)
{
if (n < NUMPIXELS) {
uint8_t *p;
p = &spidate[NUMRES + n * 24];
for(uint8_t i = 0; i < 8; i++)
{
*(p + i) = (0 == (g & (1 << (7 - i)))) ? 0xc0 : 0xf8;
}
for(uint8_t i = 0; i < 8; i++)
{
*(p + i + 8) = (0 == (r & (1 << (7 - i)))) ? 0xc0 : 0xf8;
}
for(uint8_t i = 0; i < 8; i++)
{
*(p + i + 16) = (0 == (b & (1 << (7 - i)))) ? 0xc0 : 0xf8;
}
}
}
void hal_entry(void)
{
/* TODO: add your own code here */
ws2812Init();
while(1)
{
clear();
for(uint8_t i = 0; i < NUMPIXELS; i++)
{
setPixelColor(i, 0, 0, i + 4);
show();
R_BSP_SoftwareDelay(50, BSP_DELAY_UNITS_MILLISECONDS);
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
mcu
+關注
關注
146文章
17173瀏覽量
351629 -
ARM
+關注
關注
134文章
9107瀏覽量
367955 -
開發板
+關注
關注
25文章
5080瀏覽量
97678 -
瑞薩電子
+關注
關注
37文章
2868瀏覽量
72241
發布評論請先 登錄
相關推薦
瑞薩電子RA8E1和RA8E2 MCU新品解讀
Arm Cortex-M85 RA8系列于2024年11月推出RA8E1和RA8E2兩款新產品。這兩款新產品已正式量產上市,將高算力的RA8系列擴展到入門級領域的應用,降低BOM成本,
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】開發板介紹和環境搭建
A72DFL為主控芯片,擁有豐富的外設,集成度高功能非常強大,具有優越的性能和低功耗。
RA2E1 產品群是 RA 系列的入門級單芯片微控制器,基于48 MHz Arm? Cortex?-M23 內核,具有高**達
發表于 11-09 17:16
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】開發板介紹&環境搭建
A72DFL為主控芯片,擁有豐富的外設,集成度高功能非常強大,具有優越的性能和低功耗。
RA2E1 產品群是 RA 系列的入門級單芯片微控制器,基于48 MHz Arm? Cortex?-M23 內核,具有高**達
發表于 11-09 17:09
瑞薩電子推出RA8E1和RA8E2微控制器產品群
Arm Cortex-M85處理器的MCU,實現市場領先的6.39 CoreMark/MHz(注)性能。新款RA8E1和RA8E2 MCU在保持同等性能的同時,通過精簡功能集降低成本,成為工業和家居自動化、辦公設備、醫療保健和消
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】(第二篇)串口打印+SPI_OLED顯示
串口打印
想要使用微庫就必須將主堆棧設置大于0x1000(4K),就是這個東西,之前沒有注意一直編譯報錯[難過]
通過手冊可以得知R7FA2E1A72DFL并沒有獨立的UART,而是使用的SCI
發表于 11-09 01:30
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】簡介、環境搭建、工程測試
、主控,其次介紹了 Renesas 官方 e2 studio 編譯環境的配置,最后給出新建閃燈工程,以及固件燒錄測試。
開發板簡介
RA-Eco-RA2E1-48PIN-V1.0 開發板基于48
發表于 11-05 15:47
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】RA-Eco-RA2E1-48PIN-V1.0開發板基于Keil MDK環境搭建
RA-Eco-RA2E1-48PIN-V1.0開發板簡介。
以瑞薩R7FA2E1A72DFL為主控芯片,擁有豐富的外設,集成度高功能非常強大,具有優越的性能和低功耗。
RA2E1 產品群是
發表于 11-04 22:58
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】開箱點燈
RA-Eco-RA2E1-48PIN-V1.0開發板。這不僅為我的嵌入式開發學習提供了寶貴的實踐機會,也可以讓我深入理解了該開發板的功能和特性,同時,也給我們學校的教學研究提供了幫助。在申請、溝通過程中,我深感電子發燒友平臺的積極支持
發表于 10-26 22:47
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】2、SPI驅動LCD(ST7735)屏
本文描述用RA2E1分別用軟件和硬件SPI兩種方式驅動LCD(ST7735)屏。
一、軟件SPI驅動LCD
連線圖:
發表于 10-22 14:08
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】先來點個燈
收到瑞薩RA2E1開發板,十分小巧精致。
今天就來點個燈吧。
e2 studio(自帶FSP)軟件安裝就不贅述了,詳見:
【RA-Eco-RA0E1-32PIN-V1.0開發板試用】
發表于 10-18 22:50
【RA-Eco-RA2E1-48PIN-V1.0開發板試用】1、資料獲取、環境搭建及簡單驗證
需要注冊才可以下載
RA2E1的資料入口:
https://www.renesas.cn/zh/products/microcontrollers-microprocessors
發表于 10-18 13:07
【RA-Eco-RA0E1-32PIN-V1.0開發板試用】軟件驅動TFT屏幕
接上篇:【RA-Eco-RA0E1-32PIN-V1.0開發板試用】開發環境搭建及流水燈(附踩坑記錄) - 瑞薩單片機論壇 - 電子技術論壇 - 廣受歡迎的專業電子論壇! (elecfans.com
發表于 08-26 21:45
評論