CH585的SPI驱动WS2812

news/2025/1/10 14:41:52/文章来源:https://www.cnblogs.com/JayWellsBlog/p/18663971

目录

链接: https://pan.baidu.com/s/1Su5dgmVWLre5kH2fYiGwQQ?pwd=wch6

CH573系列/583系列/592系列MCU,在使用SPI模拟WS2812波形时,MISO-PA15引脚上的实时电平,会影响MOSI-PA14引脚上的空闲电平状态,故建议SPI驱动WS2812的场景下,固定PA15的电平,不要接其他外设。
异常场景:当PA15引脚上为高电平时,PA14一组波形输出完,空闲态也变为高电平,会影响WS2812识别下一组波形的起始值。

 

CH585系列,实测SPI0已改良,PA14在输出一组DMA波形后,空闲电平始终为低电平,驱动不受PA15实时电平的影响,释放出PA15可以接其他外设。使能SPI后,PA14的GPIOset/reset接口失效,空闲电平固定为低电平;失能SPI后可以正常输出拉高/拉低PA14。

驱动WS2812主要函数:

/** 将GRB灰度转换为通过SPI的DMA发出的比特流。每个WS2812灯珠需要12个字节来驱动。* uint8_t *grb_pdest:  SPI缓存数组* uint8_t *grb_psrc:   GRB灰度* uint16_t len:        灯珠数量* */
void grb_scale_2_spi_buff(uint8_t *pdest_grb, uint8_t *psrc_grb, uint16_t len)
{memset(pdest_grb, 0, len*3*4);     //数组清零
//  G/R/B驱动中的一个编码位用4个SPI位表示。每种色彩8个编码位,需要4字节。驱动G/R/B共24个位,故需要SPI波形中的96个位即12个字节来表示。for(uint16_t i=0; i<len; i++){for(uint8_t j=0; j<3; j++)  //G/R/B三种色彩轮流配置
        {for(uint8_t k=0; k<4; k++)  //每种色彩8位灰度,用4个字节表示
            {for(uint8_t m=0; m<2; m++)  //每个字节包含两个ws2812编码位
                {if( psrc_grb[3*i + j] & (0x80 >> (2*k + m)) ){pdest_grb[3*4*i + 4*j +k] |= (GRB_CODE_1 >> (m*4));//PRINT("1 ");
                    }else{pdest_grb[3*4*i + 4*j +k] |= (GRB_CODE_0 >> (m*4));//PRINT("0 ");
                    }}//PRINT("%x ", spi_grb_buff[3*4*i + 4*j +k]);
            }}//PRINT("\n");
    }//PRINT("\n");
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/867150.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业微信客服系统-实现对接微信客服接口与分配客服功能-实现GPT回复功能

企业微信客服是有对外的接口的,可以将用户发过来的消息传递给我们系统(注意,这里说的是企业微信客服,不是企业微信员工,也不是个人微信,这三个不是一回事)。并且,我们系统还可以实现,多个微信客服入口,分配到多个我们客服坐席,客服不在线时,可以分配给别人。微信客…

异地多活架构如何设计:活好你也好【转】

异地多活是分布式系统架构设计的一座高峰,当业务系统走到需要考虑异地多活这一步,其体量和复杂度都会达到很高的水准。接入层、逻辑层、数据层的三层架构,基本上是每个业务都会拥有的基础架构形态,而三层架构的关键在于数据层,本文将从数据层切入探讨异地多活对于基础架构…

一文告诉你什么是WBS——附应用方案

通过这些,结合板栗看板使用WBS可以极大地提高项目管理的效率和透明度,确保项目按时完成并达到预期目标。一、定义与原理 WBS(Work Breakdown Structure),即工作分解结构,是一种项目管理方法,它将一个复杂的项目或任务按照一定的原则分解成更小、更具体的部分,以便于管理…

思维导图xmind如何安装?附安装包

前言 大家好,我是小徐啊。我们在Java开发中,有时候是需要用到思维导图的,这可以帮助我们更好的理清思路,提高开发的效率。而说到思维导图,最有名的就是xmind了,它的功能十分强大,几乎是思维导图里面最强大的那一个。但是,默认只能使用初级功能,高级功能需要额外再开通…

网络是怎样连接的PDF免费下载

计算机网络概论图解趣味版,计算机网络基础,程序是怎样跑起来的,计算机是怎样跑起来的姊妹篇,Wireshark网络分析就这么简单作者林沛满作序推荐日文版重印32次。本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了…

敏捷转型时代:PSM 认证如何助力职业发展?

在现代职场中,敏捷正在深刻改变组织的工作方式。作为一种强调适应变化、快速响应和持续交付价值的理念,敏捷已经从软件开发扩展到几乎所有行业,而Scrum 是应用最广泛的敏捷框架。在团队管理和跨部门协作中,Scrum Master 扮演着不可或缺的角色,帮助团队在动态环境中实现高效…

龙哥量化:麦语言、宽语言例题转换学习

如果您需要代写技术指标公式, 请联系我。 龙哥QQ:591438821 龙哥微信:Long622889 也可以把您的通达信,文华技术指标改成TB交易开拓者、金字塔、文华8的自动交易量化策略定义一个变量,名为AA,出收盘价与开盘价的差,要求指标线以独立坐标方式显示,指定指标线颜色为红色。…

整车刷写工具 - DPS

当代汽车行业的技术发展日新月异,ECU控制器的更新迭代频率也在不断攀升,如何能高效、安全地刷新ECU程序成为行业内共同关注的话题。对此,经纬恒润自主研发了一款刷写工具INTEWORK-DPS(Diagnostic Programing System),满足整车厂和零部件供应商的工程师刷写需求。概述当代汽…

一个适用于 .NET 的开源整洁架构项目模板

前言 项目架构模式在软件开发中扮演着至关重要的角色,它们为开发者提供了一套组织和管理代码的指导原则,以提高软件的可维护性、可扩展性、可重用性和可测试性。今天大姚给大家分享一个适用于 .NET 的开源整洁架构项目模板。 .NET常见的几种项目架构模式 https://mp.weixin.q…

ETL之kettle版本安装包免费下载地址

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群,一起学习,共同进步。由于群内人员较多无法直接扫描进入,公众号后台加我微信入群,备注kettle/hop。 1、群里经常有小伙伴询问kettle安装包或者私下找我要,今天群里的三倍镜大佬分享了一个kettle全家桶版本,今天我整理下…