1.硬件电路

2.  数据协议采用单线归零码的通讯方式, 像素点在上电复位以后, DIN端接受从控制器传输过来的数据, 首先送过来的24bit数据被第一个像素点提取后, 送到像素点内部的数据锁存器, 剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点, 每经过一个像素点的传输, 信号减少24bit。 像素点采用自动整形转发技术, 使得该像素点的级联个数不受信号传送的限制, 仅仅受限信号传输速度要求 。

图片来自网络-

3.程序处理

/*************************************************************/
//SIO Functions
//驱动RGB LED(ws2812), RGB DATA = 24bit; 驱动数据输出排列方式:GRB
/*************************************************************/
void SIO_CONFIG(void)
{SIO_DeInit();//SIO_IO_Init(SIO_PB01);          //配置IO为SIO模式//tx clk =4MHz, Ttxshift = 1/4 = 250ns;发送每bit时间是250nsSIO_TX_Init(SIOCLK_EN,11);       ////TXCR1  TXCR0--空闲输出L//TXBUFLEN = 8-1  TXCNT =24-1// D0 D1 不使用//默认电平为低SIO_TX_Configure(SIO_IDLE_LOW,SIO_TX_LSB,7,23,0,0,SIO_OBH_4BIT,SIO_OBL_4BIT,7,1);
}void SIO_TXBUF_Send(CSP_SIO_T *sio,const uint32_t *pwData, uint32_t hwSize)
{uint32_t  i;for(i = 0; i < hwSize; i++){sio->TXBUF = pwData[i];while(!(sio->RISR &SIO_TXBUFEMPT));}while(!sio->RISR &SIO_TXDNE);sio->ICR = SIO_TXDNE;
}/***************************************************/
//send
/**************************************************/
//rgb 原始数据
uint8_t byDipData[24*3] =
{//R        G       B0x07,  0x00,   0x00,//rgb10x00,    0x07,   0x00,//rgb20x00,    0x00,   0x07,//rgb30x00,    0x07,   0x00,//rgb40x07,    0x00,   0x00,//rgb50x00,    0x07,   0x00,//rgb60x00,    0x00,   0x07,//rgb70x00,    0x07,   0x00, //rgb80x07,   0x00,   0x00,//rgb90x00,    0x07,   0x00,//rgb100x00,   0x00,   0x07,//rgb110x00,   0x07,   0x00,//rgb120x07,   0x00,   0x00,//rgb130x00,   0x07,   0x00,//rgb140x00,   0x00,   0x07,//rgb150x00,   0x07,   0x00, //rgb160x07,  0x00,   0x00,//rgb170x00,   0x07,   0x00,//rgb180x00,   0x00,   0x07,//rgb190x00,   0x07,   0x00,//rgb200x07,   0x00,   0x00,//rgb210x00,   0x07,   0x00,//rgb220x00,   0x00,   0x07,//rgb230x00,   0x07,   0x00, //rgb24
};static uint32_t sio_led_data_conver(uint8_t byData)
{uint8_t i;uint32_t wData = 0xaaaa;for(i = 0; i < 8; i++){if(byData & 0x80)wData |= (0x01 << (2*i));byData = byData << 1;}return wData;
}static void set_led_rgb_store(uint32_t *pwLeddData,uint32_t hwLedNum)
{//led*(pwLeddData+hwLedNum*3) = sio_led_data_conver(byDipData[hwLedNum*3+1]) ;      //G*(pwLeddData+hwLedNum*3+1) = sio_led_data_conver(byDipData[hwLedNum*3]);      //R*(pwLeddData+hwLedNum*3+2) = sio_led_data_conver(byDipData[hwLedNum*3+2]);       //B
}void led_rgb_display(uint8_t *byColData, uint32_t hwLedNum)
{uint32_t i;uint32_t wRgbData[72];for(i = 0; i < hwLedNum; i++)       //hwLedNum = 8{set_led_rgb_store(wRgbData,i);}for(i = 0; i < hwLedNum; i++){SIO_TXBUF_Send(SIO0, &wRgbData[3*i],3);}
}/***************************************************/
//main
/**************************************************/
int main(void)
{delay_nms(1000);APT32F102_init();//while(1){SYSCON_IWDCNT_Reload();//....led_rgb_display(byDipData, 24);//发送输出测试delay_nms(1000);//....}
}

0x07,    0x00,    0x00,//rgb1  此处是对应编码格式。

bit1                                                         bit 0

        

符合时序

APT32F102-SIO模块控制WS2812相关推荐

  1. 利用硬件SPI控制WS2812,驱动1024颗灯珠

    " 简 介: 利用ESP32中的硬件SPI控制WS2812的显示.使用了高频三极管9018 作为输出接口反向器,确定合适的电阻参数,验证了驱动方案的硬件和软件的可行性. 关键词: WS281 ...

  2. 基于STM32的ESP8266模块控制多路继电器

    基于STM32的ESP8266模块控制多路继电器 1.视频讲解 基于STM32单片机ESP8266物联网阿里云MQTT多路继电器控制 物联网视频教程STM32+ESP8266 2.实物设计 ESP82 ...

  3. Arduino人体红外模块控制

    Arduino人体红外模块控制 示例代码 /** Arduino UNO R3(或Arduino Nano)连接红外人体感应模块检测是否有人*/int irSensorPin = 3;//Arduin ...

  4. 【STC15控制WS2812 RGB彩灯级联】

    STC15控制WS2812 RGB彩灯级联 下面是基于STC15F2K60S2的WS2812RGB彩灯级联测试. 一.WS2812介绍 引脚 工作时序 注意 当我们使用WS2812控制RGB彩灯的时候 ...

  5. Arduino控制WS2812灯带(灯环)

    设计者:STCode(公众号同名) Arduino控制WS2812灯带(灯环) 1) WS2812灯 WS2812灯带 WS2812灯环 WS2812是一个集控制电路与发光电路于一体的智能外空LED光 ...

  6. 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码

    树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 文章目录 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 一. Servo Driver ...

  7. 最简单DIY基于ESP8266的智能彩灯⑦(APP通过彩虹调色板和WIFI控制WS2812彩灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...

  8. 【TB-02模组专题⑤】微信小程序通讯TB02 模块控制 STM32 单片机LED灯

    本<安信可ble mesh蓝牙模组TB-02模组专题>系列博客学习由官方博客 CSDN安信可博客 潜心所力所写.如有不对之处,请留言,我们及时更改. 1.BLE MESH开发环境linux ...

  9. ESP32使用外设RMT控制WS2812灯条

    目录 一.简介 二.所需材料 三.官方例程 四.使用方法 4.1 RMT初始化 4.2 WS2812初始化 4.3 点亮WS2812 五.LED颜色渐变 5.1 第一种实现方法 5.2 第二种实现方法 ...

最新文章

  1. 最快捷的Linux命令查询工具来了:「我该怎么做XX」,一句话自动返回操作指南...
  2. 1971 John McCarthy--人工智能之父和LISP语言的发明人(ZT)
  3. 基于Xml 的IOC 容器-解析配置文件路径
  4. 使用泛型解决之前的问题
  5. android studio adb 命令行,Android Studio如何配置adb以及经常使用命令
  6. mcrypt拓展_【PHP】Mcrypt 扩展模块安装及使用
  7. 基于DCT系数的实时监控中运动目标检测
  8. Python机器学习:评价分类结果005precisoion-Recall的平衡
  9. 设计灵感图片,到哪里搜索!看这里!
  10. docker 保存 环境持久化_为什么 Docker 适合微服务架构?
  11. 中国数据中心加速卡市场趋势报告、技术动态创新及市场预测
  12. 获取支付宝小程序链接
  13. 关于XAMPP Apache 启动失败的问题
  14. 为了下一代,抖音真的该关了---读<<我观察到的牛人有这三个特质>>有感
  15. yii2 aliases web.php,Yii2的深入学习--别名(Aliases),yii2aliases
  16. Android WebView播放视频并支持全屏
  17. 【笔记】位图(.bmp)和矢量图(Vector):位图是点阵图或光栅图,使用像素的一格一格来描述图像,放大以后每一个像素看就像是一个个的马赛克;矢量图是使用直线和曲线来描述图形,可以无限方法,不会失真
  18. 带货直播源码,浅谈直播实现过程和技术
  19. linux挂nas盘步骤,linux下需要将nas盘挂
  20. 使用三丰云免费云主机安装cyberpanel面板并创建wordpress站点

热门文章

  1. vs插件html,VSCode插件推荐-html实时加载插件-live server
  2. 软件测试中文电子版姚静_软件测试[(美)ron patton]读书笔记
  3. SQL学习(2):大厂真题实例-视频平均播放进度
  4. STM32F4(正点原子)学习笔记(一):GPIO及其小实验
  5. 【两行代码——最简单装X 哈哈哈】
  6. Collection集合入门
  7. 【开源库推荐】go-linq 强大的语言集成查询库如,ORM一般丝滑处理内存数据
  8. oracle minus 是什么意思,oracle minus用法
  9. 使用java进行本地文件全盘搜索
  10. CorelDraw 课程标准