0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RA2E1通过SPI驱动灯带

RA生态工作室 2022-01-04 14:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

poYBAGG2ot-AGNHBAABs_TTBnPY753.png



1.概述


本期分享的是使用RA2E1通过SPI的MOSI脚产生WS2812的控制时序,实现灯带控制的效果。

2.灯带介绍


WS2812是24位(1600万)色LED灯源芯片,集成了信号整形控制、电源反接保护等功能,5V安全供电,性价比高,在智能灯带市场中应用非常广泛。芯片以级联的方式串接起来,每颗灯源可单独寻址控制,根据需要的长度和间距,定制出各种显示效果,如直线灯带、环形、点阵屏等。很多创客喜欢用WS2812彩灯DIY一些酷炫的项目,可以说网上关于WS2812的资料是比较丰富的。有用不同的控制核心实现控制,以及通过不同的方式进行控制。我们选用RA的SPI(默认使能DTC)MOSI口实现WS2812控制时序的输出。

WS2812需要的时序是这样的:

c01ce818-6b23-11ec-ad3b-dac502259ad0.png

c02bd9ea-6b23-11ec-ad3b-dac502259ad0.png

需要注意的是不同厂家的产品时序略有差别,实际需要根据手册调整代码,以产生对应控制波形。

3.软件配置

e2studio中如下配置RA2E1的SPI:

c03e4aee-6b23-11ec-ad3b-dac502259ad0.png

8M的SPI波特率,一个位的时间等于1s ÷ 8 × 10^6,为0.125μs。

WS2812需要的0码对应SPI发送 0b 1100 0000

WS2812需要的1码对应SPI发送 0b 1111 1000

设置SPI发送下面数据:

c0487aa0-6b23-11ec-ad3b-dac502259ad0.png

4.烧录测试

烧录后实际测一下P213引脚波形

复位

c05a82b8-6b23-11ec-ad3b-dac502259ad0.png

0码

c064f022-6b23-11ec-ad3b-dac502259ad0.png

1码

c072ab54-6b23-11ec-ad3b-dac502259ad0.png

实际效果

c08311ec-6b23-11ec-ad3b-dac502259ad0.gif

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
    mcu
    +关注

    关注

    147

    文章

    18605

    浏览量

    387041
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9499

    浏览量

    388708
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113323
  • 瑞萨电子
    +关注

    关注

    38

    文章

    2949

    浏览量

    74097
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【瑞萨RA6E2】+1、初识RA6E2芯片及芯片参数

    低功耗模式下数据保持 通信接口 RA6E2提供丰富的外设接口,满足多种通信需求: USB 2.0全速模块 :支持设备控制器 CAN-FD :支持高速CAN通信 Quad SPI :用于连接外部串行
    发表于 11-11 19:19

    【瑞萨RA6E2】点亮 WS2812 全彩点阵屏

    通过单总线方式控制,只需一个 IO 口,就可以点亮数千个珠。 这里使用 RA6E2 点亮 WS2812 珠,效果如下: WS2812 可以使用 IO 模拟时序控制,也可以使用
    发表于 11-05 08:36

    【瑞萨RA6E2】PWM 驱动舵机

      本篇使用 RA6E2 的 PWM 输出,来驱动舵机转动,使用 RA6E2 驱动舵机非常方便,只要配置好 GPT PWM 模块,就能轻松实现角度控制。 硬件准备
    发表于 11-04 00:03

    基于RT-Thread的EK-RA2E2 设备驱动移植与应用 | 技术集结

    目录前言环境配置HelloRT-ThreadGPIO输入与中断I2C主机驱动SPI主机驱动ADC设备驱动PWM设备
    的头像 发表于 10-05 10:06 5729次阅读
    基于RT-Thread的EK-<b class='flag-5'>RA2E2</b> 设备<b class='flag-5'>驱动</b>移植与应用 | 技术集结

    【免费试用】瑞萨 RA6E2 开发板免费试用

    RA-Eco-RA6E2-64PIN-V1.0是一款基于100MHzArmCortex-M33内核架构的核心板,主控芯片为R7FA6E2BB3CFM。RA6E2组是RA6系列中最新的入
    的头像 发表于 10-01 10:15 433次阅读
    【免费试用】瑞萨 <b class='flag-5'>RA6E2</b> 开发板免费试用

    瑞萨RA2L1 MCU e² studio和FSP的使用指南

    本期“RA MCU众测宝典” 继续聚焦 “环境搭建” 专题,带大家走进【RA-Eco-RA2L1-48PIN-V1.0】的世界,查看e² studio和FSP的下载、安装及使用指南从零开始完成开发环境的配置。
    的头像 发表于 08-04 13:45 2431次阅读
    瑞萨<b class='flag-5'>RA2L1</b> MCU <b class='flag-5'>e</b>² studio和FSP的使用指南

    2.4 A / 2 A 双路独立闪光 LED 驱动器, TrueFlash™ skyworksinc

    电子发烧友网为你提供()2.4 A / 2 A 双路独立闪光 LED 驱动器, TrueFlash™相关产品参数、数据手册,更有2.4 A /
    发表于 07-30 18:30
    2.4 A / <b class='flag-5'>2</b> A 双路独立闪光<b class='flag-5'>灯</b> LED <b class='flag-5'>驱动</b>器,<b class='flag-5'>带</b> TrueFlash™ skyworksinc

    RA2L2#48MHz Arm Cortex-M23 入门级 USB 通用微控制器

    UART、CAN、无晶振 USB FS 以及 USB Type-C 接口。 RA2L2 可与 RA2L1 产品组、RA2E1 产品组和 RA2A1 产品组引脚和外围设备兼容,特别适用
    的头像 发表于 06-27 15:31 1153次阅读
    <b class='flag-5'>RA2L2</b>#48MHz Arm Cortex-M23 入门级 USB 通用微控制器

    瑞萨全新RA2L2 MCU 搭载48MHz ArmCortex-M23内核 超低功耗、支持CAN及USB-C

    电压范围,-40至125°C的宽工作温度范围,并具有丰富的外设,如 I3C、SSI、低功耗UART、CAN、USB FS,以及USB Type-C接口 。   RA2L2RA2L1系列、RA2E1系列和
    的头像 发表于 06-11 15:22 1252次阅读
    瑞萨全新<b class='flag-5'>RA2L2</b> MCU 搭载48MHz ArmCortex-M23内核 超低功耗、支持CAN及USB-C

    瑞萨RA0系列MCU喜添新成员RA0E2

    RA家族2024年推出全新的RA0超低功耗系列,继RA0E1产品后,新添成员RA0E2RA0E2具有出色的成本效益和超低功耗。此外,
    的头像 发表于 05-06 09:29 996次阅读
    瑞萨<b class='flag-5'>RA</b>0系列MCU喜添新成员<b class='flag-5'>RA0E2</b>

    新品 | RA0系列MCU喜添新成员RA0E2,0.25uA超低功耗待机,支持5v、125c

    RA家族2024年推出全新的RA0超低功耗系列,继RA0E1产品后,新添成员RA0E2RA0E2具有出色的成本效益和超低功耗。此外,
    的头像 发表于 05-01 08:15 1168次阅读
    新品 | <b class='flag-5'>RA</b>0系列MCU喜添新成员<b class='flag-5'>RA0E</b>2,0.25uA超低功耗待机,支持5v、125c

    【瑞萨RA2L1入门学习】+开箱评测

    R7FA2L1AB2DFL。RA2L1 产品组采用优化的制程和瑞萨电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。 本次收到的开发板印刷RA2L1RA2E1两个型号。 主打低
    发表于 03-09 07:40

    【瑞萨RA2L1入门学习】01. PWM 呼吸

    【实验资源】 开发板:RA-Eco-RA2L1-48PIN-V1.0 IDE:E2 Studio 下载工具:Renesas Flash Programme,用到USB转TTL模块 【e2s Hex
    发表于 03-07 11:43

    RA-Eco-RA4E2-64PIN-V1.0开发板试用】03、SPI驱动TFT屏幕

    命令脚使用GPIO控制 CS 片选脚 使用GPIO控制 BL 背光控制 直接IO输出高电平 观察原理图,在PMOD这块,正好有我们驱动屏幕所需的SPI功能所使用的引脚。接下来在e2s配置里就着重关注
    发表于 12-15 12:46

    瑞萨电子RA8E1RA8E2 MCU新品解读

    Arm Cortex-M85 RA8系列于2024年11月推出RA8E1RA8E2两款新产品。这两款新产品已正式量产上市,将高算力的RA8系列扩展到入门级领域的应用,降低BOM成本,
    的头像 发表于 12-09 10:35 1656次阅读
    瑞萨电子<b class='flag-5'>RA8E1</b>和<b class='flag-5'>RA8E2</b> MCU新品解读