11093|22

9795

帖子

24

TA的资源

版主

楼主
 

BlueNRG-1驱动WS2812B全采灯条模拟奥迪流水效果转向灯 [复制链接]

 
  本帖最后由 littleshrimp 于 2018-12-7 23:23 编辑

觉得“宝马”车的转向效果太LOW,用8颗WS2812B灯珠实现奥迪的转向效果


WS2812B的灯条网上有很多,驱动也随处可见



这种灯条用带DMA的SPI驱动起来很方便
WS2812B一颗灯珠的数据是24位,G、R、B分别占8位
是如果能把SPI的时钟设置成2.5MHz左右,那么发送100三个位可以表示WS2812B的一个0位,110可以表示一个1位
这样一颗灯珠可以使用24*3共9个字节控制
在代码里spi的频率可以像下边这样随便填



不过实际上和STM32类似,它只允许在SPI主时钟的基础上做固定的分频,即2的整数倍



SPI的时钟是16M,如果这样设置SPI_InitStructure.SPI_BaudRate = 2500000;得到的CPSR是2,,SCR是2,
根据公式16MHz / (CPSDVR * (1+SCR))得到2.66MHz,再降一档把把SCR设置成3的SPI频率又变成2M
虽然是2.66MHz对比数据手册也能满足要求找到2个同一家的数据手册,电平时间上居然也会有差别
还好都在范围内
WS2812B Datasheet.pdf (260.02 KB, 下载次数: 19) WS2812B-LED-datasheet.pdf (420.94 KB, 下载次数: 16)
附上WS2812B的驱动代码
  1. #include <stdint.h>

  2. #define WS2812B_BIT0 0x04 /*100*/
  3. #define WS2812B_BIT1 0x06 /*110*/
  4. #define WS2812B_RESET 0x00 /*000*/
  5. #define WS2812B_BIT(b,x) (((b & 1ul<<x) == 1ul<<x)?WS2812B_BIT1:WS2812B_BIT0)
  6. typedef struct
  7. {
  8.   uint8_t g;
  9.   uint8_t r;
  10.   uint8_t b;  
  11. }Color_t;

  12. typedef union
  13. {
  14.   Color_t color;
  15.   uint8_t bytes[3];
  16. }Color_Bytes_t;

  17. extern void RGBColorsToWS2812BBytes(uint8_t *buf,Color_Bytes_t *colors,uint16_t colorsLength);
复制代码



  1. #include "ws2812b.h"

  2. //buf的长度=colorsLength*9;
  3. void RGBColorsToWS2812BBytes(uint8_t *buf,Color_Bytes_t *colors,uint16_t colorsLength)
  4. {
  5.    int32_t i;
  6.    uint32_t bytes;
  7.    uint16_t j,k;
  8.    uint16_t buf_index = 0;
  9.    //读取数据超过原数组长度后退出
  10.    for(i=0;i<colorsLength;i++)
  11.    {     
  12.      for(j=0;j<3;j++)
  13.      {
  14.        bytes = 0;
  15.        for(k=0;k<8;k++)
  16.        {
  17.           bytes <<= 3;
  18.           bytes |= WS2812B_BIT(colors[i].bytes[j],7-k);
  19.        }
  20.        for(k=0;k<3;k++)
  21.        {
  22.          buf[buf_index++] = bytes >> (8 * (3 - k -1));
  23.        }
  24.      }
  25.    }
  26. }
复制代码


BlueNRG-1使用SPI DMA的方式驱动WS2812B灯条的工程文件
游客,如果您要查看本帖隐藏内容请回复





此内容由EEWORLD论坛网友littleshrimp原创,如需转载或用于商业用途需征得作者同意并注明出处





最新回复

好东西;有完整的吗   详情 回复 发表于 2024-7-18 16:20
点赞 关注(1)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复
举报

1903

帖子

0

TA的资源

版主

沙发
 
回复看看了
 
 
 

回复

1903

帖子

0

TA的资源

版主

板凳
 
很多好东西啊
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

4
 
学习学习
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

5
 
看看效果
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

6
 
瞻仰瞻仰。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
参考看看
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
自己DIY乐趣无限哈哈哈
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

9
 
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 

学习学习 DIY乐趣无限

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

11
 
学习学习
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(中级)

12
 

mark 新的驱动方式学到了 ,我用GPIO模拟的 驱动过

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

13
 

学习学习

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 

学习学习

 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

15
 

学习了,感谢分享

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 

学习学习

 
 
 

回复

291

帖子

0

TA的资源

一粒金砂(高级)

17
 

学习学习 DIY乐趣无限

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

18
 

学习学习

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

19
 
谢谢分享
 
 
 

回复

1

帖子

1

TA的资源

一粒金砂(初级)

20
 

想看看            

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表