spi推5050 2811/2812 灯珠

一、关于彩灯:

1.引脚说明:

2.连接方式:

  • 灯珠采用级联形式:

        

3.数据传输:

  • 2812灯珠协议采用单极性归零码,每个码元必须有低电平,本协议的每个码元起始为高电平,高电平时间宽度决定“0”码或“1”码。
  • 书写程序时,码元周期最低要求为1.2µs。
  • “0”码、 “1”码的高电平时间需按照上表的规定范围, “0”码、 “1”码的低电平时间要求

小于20µs.

4.时序及传输方式:

 

 5.灯珠数据结构:

  •   每颗灯珠有24bit数据,高位先发,按照RGB或GRB顺序发送

二、关于spi:

  •  spi一次发送八位数据
  • 每八位spi数据是每组灯珠24位数据中的一位
  • 由时序和数据图可以大致得出:0码和1码的高电平比例为1:3。                                                              0码值为 1100 0000 (0xfc)                                                                                                      1码值为 1111 1100  (0xc0)
  • 周期是1.2us,共8bit数据,则1bit为0.15us
  • 设置spi的clk周期为0.15us的整数分之一(后续用逻辑分析仪抓波形修改)

三、简易程序编写

1.驱动灯程序:

/*******************************************/
/*
* 0码:1100 0000  0xc0
* 1码:1111 1100  0xfc
*/
/*******************************************/
#define SPI_BIT_DATA_H      0xfc
#define SPI_BIT_DATA_L      0xc0
static void Send_2812_24bits(u8 GData, u8 RData, u8 BData, u8 *rgb_flash_buff_ptr)
{
  u8 i;

  for (i = 0 ;i < 8 ; i++) {//g
    if (GData & 0x80) {
      rgb_flash_buff_ptr[i] = SPI_BIT_DATA_H;//0xfc
    } else {
      rgb_flash_buff_ptr[i] = SPI_BIT_DATA_L;//0xc0
    }
    if (RData & 0x80) {//r
      rgb_flash_buff_ptr[i + 8] = SPI
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值