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

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

3天内不再提示

【晶心科技ADP-Corvette-T1开发板试用体验】使用Arduino的SPI库,直接驱动WS2812B炫彩点阵板

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-11 11:31 次阅读

本文来源电子发烧友社区,作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2287848_1_1.html

效果演示(开发板体验视频,详见作者原帖子文章)

昨天我在 DFRobot Beetle ESP32-C3开发板开发板上,成功用 Adafruit NeoPixel 扩展库,驱动了WS2812B炫彩点阵。具体可见文章:Arduino编程控制WS2812B炫彩LED既然ADP-Corvette-T1开发板也能用Arduino,那应该可以把类似的程序,按照ADP-Corvette-T1开发板的Arduino支持,使用Adafruit NeoPixel 扩展库来驱动WS2812B。

说干就干,先在Adafruit NeoPixel 扩展库的Arduino开发环境中,安装Adafruit NeoPixel 扩展库,方法如下:
poYBAGKv8u6AMKDtAAMzO4CEeRM505.png


安装完成后,开发板选择ADP-Corvette-T1,然后点击编译。
没想到,杯具的事情发生了,错误提示:Adafruit NeoPixel 扩展库不支持该开发板。
不甘心,这么通用的WS2812B,一定要办法驱动起来。

仔细看了 ADP-Corvette-T1 的官方资料,了解到如下信息
poYBAGKv9EmAKbE0AAAxnuWe8AA802.png

在开发板上,提供了SPI数据传输接口,而WS2812B真是使用SPI来驱动的。

详细查看板子的定义:
pYYBAGKv8u-AW9_UAAthN4ClyXU969.png

IO11可复用为SPI/MOSI,刚好可以用作WS2812B的数据控制。

参考开头提供的文章,最终具体的连线如下:
poYBAGKv8vGABASGABPHxQlDoa4637.png


具体的实物连线如下:
pYYBAGKv8vSAH9plAFdgibYwXs858.jpeg


直接使用SPI底层设备来驱动,需要使用到Arduino官方的SPI库,其官方网址为:SPI - Arduino Reference

而在此之前,我还分享过另外一篇控制WS2812B的文章:Debian-StarFive下的SPI驱动WS2812B炫彩灯珠,在该篇文章中,就详细的说明了,想要控制,应该如何发送数据。
在上面的这篇分享中,控制的是单颗LED灯珠。在ADP-Corvette-T1开发板上,这次我们要控制8*8点阵共64颗LED灯珠。

通过对Arduino官方的SPI库资料的学习,最终完成了演示代码,实现了流水灯的效果。
在该演示代码中,同时包括:
1. 串口调试输出
2. 板载LED控制
3. SPI控制WS2812B

具体代码文件:
代码展示:
pYYBAGKv9i6AKVVvABecAPWHWHQ412.png


上述代码的具体说明:
1. 全局定义:
1). 使用SPI.h,确定使用SPI库
2). 定义灯珠、引脚信息
3). 定义要发送的数据信息;关于其具体的定义,可以查看Debian-StarFive下的SPI驱动WS2812B炫彩灯珠
4). 定义当前要点亮的灯珠
5. 定义lgiht_n函数,表示通过SPI发送控制数据,当前灯珠发送点亮数据,其他的发送熄灭数据;具体颜色,根据i值取余取前面定义的颜色。

2. 启动设置部分:setup()
1). 设置串口速度
2). 设置D13为输出,用于控制板载的LED3(在板子背面)
3). 定义SPI的传送参数;具体的参数说明,后面详细的说。

3. 循环部分:loop()
1). 串口输出当前要点亮的LED灯珠
2). 根据当前要点亮的灯珠序号取2的余,来亮灭LED3
3). 点亮指定的LED灯珠
4). 延时
5). 指向下一刻灯珠;如果达到最大,则从头开始。

在上面的代码中,SPI参数设置部分,尤为重要。
要设置SPI参数,有两种办法:
1). SPI.setClockDivider():相对于系统时钟设置SPI时钟分频器。
关于分频器的基本知识,我在定时器使用基础:使用系统时基定时器和基本定时器闪烁LED分享中,有讲过。
因为 ADP-Corvette-T1开发板 的最高频率为 96MHz,我们找一个接近 6.4MHz的分频。
分频器可以使用的系统定义为:
SPI_CLOCK_DIV2,SPI_CLOCK_DIV4,SPI_CLOCK_DIV8, SPI_CLOCK_DIV16,SPI_CLOCK_DIV32,SPI_CLOCK_DIV64,SPI_CLOCK_DIV128
在其中,16分之一接近6.4MHz,所以这里可以使用SPI_CLOCK_DIV16。
在该方式下,其他的参数使用默认值即可。

2). SPI.beginTransaction()
通过传入SPISettings()获取的定义参数来初始化SPI设备;
SPISettings()具体定义为:SPISettings(speedMaximum,dataOrder,dataMode)
其中:
speedMaximum:表示时钟
dataOrder:表示数据发送优先顺序,MSBFIRST表示高位优先,LSBFIRST表示低位优先。
dataMode:表示SPI的四种操作模式:
2.1) 模式0:默认值,时钟通常为低电平(CPOL = 0),数据在从低电平到高电平(前沿)(CPHA = 0)的转换时采样。
2.2)模式1时钟通常为低电平(CPOL = 0),数据在从高电平到低电平(后沿)(CPHA = 1)的转换时采样。
2.3)模式2时钟通常为高电平(CPOL = 1),数据在从高电平到低电平(前沿)(CPHA = 0)的转换时采样。
2.4)模式3时钟通常为高电平(CPOL = 1),数据在从低电平到高电平(后沿)(CPHA = 1)的转换时采样。

演示代码中,具体传入的为:SPISettings(6400000, MSBFIRST, SPI_MODE0),表示时钟为6.4MHz对应值,高位优先,操作模式为默认值。

编写好代码后,编译下载,就能运行起来:
poYBAGKv8vmAd57DAAqRTwFNl78041.png

打开串口,Ardunio的串口工监视器,就能看到串口输出的信息,会显示当前要点亮的灯珠;
把板子翻过来,可以看到背后的LED3在狂闪,因为代码中设置的delay为100毫秒,1秒得有10次。
再看WS2812B炫彩8*8点阵,灯珠按顺序点亮并熄灭。
具体效果,如视频所示。

如在前两篇分享的控制WS2812B的文章中所说,你可以根据自己的需要,让这块WS2812B炫彩8*8点阵呈现出更复杂的效果,行动起来吧!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 晶心科技
    +关注

    关注

    0

    文章

    104

    浏览量

    18233
  • 开发板试用
    +关注

    关注

    3

    文章

    301

    浏览量

    2136
收藏 人收藏

    评论

    相关推荐

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 1105次阅读
    迅为RK3568<b class='flag-5'>开发板</b><b class='flag-5'>驱动</b>指南Linux中通用<b class='flag-5'>SPI</b>设备<b class='flag-5'>驱动</b>

    迅为RK3568开发板SPI驱动指南-mcp2515驱动编写:读寄存器函数

    迅为RK3568开发板SPI驱动指南-mcp2515驱动编写:读寄存器函数
    的头像 发表于 01-20 14:43 286次阅读
    迅为RK3568<b class='flag-5'>开发板</b><b class='flag-5'>SPI</b><b class='flag-5'>驱动</b>指南-mcp2515<b class='flag-5'>驱动</b>编写:读寄存器函数

    用TMS2812开发板通过spi来控制ADS1299开发板的采集,波形非常紊乱是为什么?

    我用的是贵公司提供的ADS1299开发板,用信号发生器产生的正弦信号源作为输入信号,用TMS2812开发板通过spi来控制ADS1299开发板
    发表于 01-08 07:52

    【敏矽微ME32G070开发板免费体验】点亮WS2812B

    0001 1001 0000 0000 0000 1100]驱动方式 目前关于WS2812B大概有三种驱动方法: 1)GPIO配合机器空周期直接
    发表于 01-07 23:58

    有奖丨米尔 全志T536开发板免费试用

    米尔与全志合作发布的新品基于全志T536应用处理器的MYD-LT536-GK开发板免费试用活动来啦~~米尔提供了3块价值750元的MYD-LT536-GK开发板发起
    的头像 发表于 12-26 08:05 249次阅读
    有奖丨米尔 全志<b class='flag-5'>T</b>536<b class='flag-5'>开发板</b>免费<b class='flag-5'>试用</b>

    【敏矽微ME32G070开发板免费体验】开箱及环境搭建

    ,出厂设置驱动WS2812 RGB彩灯,显示很是酷。焊接好两旁的排针好后,闪灯效果见顶部视频。 三、环境搭建 使用Keil开发评测该开发板
    发表于 12-17 22:13

    如何用OpenCV进行手势识别--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。摘自优秀创作者-小火苗米尔基于全志T527
    的头像 发表于 12-13 08:04 829次阅读
    如何用OpenCV进行手势识别--基于米尔全志<b class='flag-5'>T</b>527<b class='flag-5'>开发板</b>

    基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED

    (FSP_SUCCESS== err); sci_spi_extended_cfg_tsci_spi_extended_cfg_t1; WS2812B
    发表于 11-22 21:34

    追加名额丨米尔瑞芯微RK3576开发板有奖试用

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动加码啦~~米尔追加了2块价值849元的MYD-LR3576开发板发起试用活动您不仅可以
    的头像 发表于 11-22 01:00 268次阅读
    追加名额丨米尔瑞芯微RK3576<b class='flag-5'>开发板</b>有奖<b class='flag-5'>试用</b>

    【RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux

    【RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux
    的头像 发表于 11-16 01:02 318次阅读
    【RA8D<b class='flag-5'>1</b><b class='flag-5'>试用</b>活动】RA8D<b class='flag-5'>1B</b>-CPKCOR<b class='flag-5'>开发板</b>移植linux

    Andes科技推出QiLai系统芯片和Voyager开发板

    高效能低功耗32/64位RISC-V处理器核心领导供货商暨RISC-V国际协会创始首席会员Andes 科技(TWSE:6533)今日宣布推出QiLai (奇莱)系统芯片(SoC)和Voyager开发板,以进一步加速大规模RI
    的头像 发表于 07-26 10:46 718次阅读

    在AvaotaA1全志T527开发板驱动WS2812 RGB LCD

    在 Avaota SBC 的开发板中,通常会有几个 WS2812 RGB LED 灯。例如 Avaota A1 的如下位置: 对于 AvaotaOS,提供了硬件的 LEDC(Light
    发表于 07-22 10:45

    【GD32F303红枫派开发板使用手册】第二十讲 SPI-SPI NAND FLASH读写实验

    通过本实验主要学习以下内容: •SPI通信协议,参考19.2.1东方红开发板使用手册 •GD32F303 SPI操作方式,参考19.2.2东方红开发板使用手册 •NAND FLAS
    的头像 发表于 06-20 09:50 1059次阅读
    【GD32F303红枫派<b class='flag-5'>开发板</b>使用手册】第二十讲 <b class='flag-5'>SPI-SPI</b> NAND FLASH读写实验

    STM32F030 MDA+PWM驱动ws2812b,起始的50US的低电平是怎么产生?

    STM32F030 MDA+PWM 驱动 ws2812b,起始的50US的低电平怎么产生? 现在dma+pwm,倒是可以产生一个800K hz的驱动数据,但是WS2812要求有50US
    发表于 04-12 07:23

    移植libmodbus到米尔-全志T113-i开发板

    测试开发板在工业领域的应用,modbus作为工业领域的一个重要协议,那好就移植libmodbus
    的头像 发表于 03-05 22:37 2747次阅读
    移植libmodbus<b class='flag-5'>库</b>到米尔-全志<b class='flag-5'>T</b>113-i<b class='flag-5'>开发板</b>