当前位置: 首页 > 专利查询>彭增金专利>正文

微控制器中用定时器触发直接内存存取模块来产生特定电平序列的方法技术

技术编号:31793972 阅读:17 留言:0更新日期:2022-01-08 10:53
本发明专利技术公开了根据特定数据,在微控制器管脚输出特定序列的方法,在微控制器存储器中,分配一块区域,存储源数据,数据转换过程把特定数据转换为源数据,一个定时器的定时信号触发一个DMA把源数据搬运到微控制器输出模块的管脚控制寄存器。除了这个DMA外,没有其他途径给管脚控制寄存器数据。所述输出模块,可以是通用输入输出模块,对应的管脚控制寄存器是端口输出控制寄存器或端口位操作寄存器或端口位翻转寄存器;所述输出模块,可以是配置成PWM模式且PWM输出连接到输出管脚、同时给出定时触发信号的硬件定时器本身,对应的管脚控制寄存器是计数器自动重载寄存器、或计数器自动重载寄存器和通道x捕获/比较值寄存器。载寄存器和通道x捕获/比较值寄存器。载寄存器和通道x捕获/比较值寄存器。

【技术实现步骤摘要】
微控制器中用定时器触发直接内存存取模块来产生特定电平序列的方法


[0001]本专利技术涉及微控制器领域和通信
,尤其涉及微控制器在输出管脚上产生特定电平序列的方法。

技术介绍

[0002]智能外控集成LED光源(本专利技术中简称为SmartLed),型号如:WS2812B

2020、WS2812E、XL
‑‑
3535RGBC

WS2812B等,是新型的LED显示器件。只用一根信号线,即可控制几百上千的RGB七彩LED显示点。附图3、4、5,列举了几种SmartLed器件的控制信号规范。
[0003]SmartLed的控制信号规范,可用T0H_T0L/T1H_T1L来表达:WS2812B

2020的T0H(220ns

380ns)_T0L(580ns

1us)/T1H(580ns

1us)_T1L(580ns

1us),见附图14;WS2812E的T0H(220ns

380ns)_T0L(580ns

1us)/T1H(580ns

1us)_T1L(220ns

420ns),见附图15;XL

3535RGBC

WS2812B的T0H(200ns

400ns)_T0L(>800ns)/T1H(580ns

1us)_T1L(>200ns),见附图16。
[0004]微控制器的管脚上按SmartLed的控制信号规范的要求,输出一段高电平1和低电平0交替的电平序列,本专利技术中简称为SmartLed驱动序列。
[0005]这种SmartLed驱动序列,最小变化周期在200ns~300ns(纳秒),现在的微控制器的运行频率普遍数十MHz(指令周期几十ns),所以用NOP(空操作指令)进行软件延时+输出管脚操作指令,很容易输出符合规范要求的电平序列,这种方法一般称为软件延时。
[0006]然而,现在的微控制器,普遍会运行很多工作任务,用软件延时的方法,占用了全部的CPU时间,不允许被打断,否则输出的电平序列将不符合控制信号规范。
[0007]另一方面,现在大多数的微控制器,具有复杂的指令执行机制,造成每条指令的执行时间,可能都不一致,实现精确的软件延时,需要考虑到很多的因素。
[0008]现有技术中,也有用微控制器的硬件定时器的PWM模式、或微控制器的硬件SPI收发器,结合微控制器的DMA(直接内存存取模块),来输出符合控制信号规范的SmartLed驱动序列。然后现有技术在占用的微控制器DMA通道、硬件定时器、存储器内存缓冲区、CPU处理时间等资源方面,没有达到最优。
[0009]现有技术中使用硬件定时器的PWM模式,输出的SmartLed驱动序列,都是固定周期的,对某些型号智能外控集成LED光源,如WS2812B

2020,这不是最优的。最优的控制序列号,其电平时间T0H T0L T1H T1L,应该是控制信号规范的允许范围的中间值。而WS2812B

2020这样的,最优的驱动电平序列,Bit1(790+790=1580ns)的周期应该比Bit0(300+790=1090ns)长。
[0010]有的微控制器,没有并口输出模块。有的微控制器,PWM输出管脚不够某些场合应用。有的应用场合,微控制器的串口输出模块不够用。需要用GPIO实现这些输出模块的功
能。
[0011]直接内存存取模块,简称DMA,是微控制器中的一种内部硬件模块,用来不依靠CPU,自主读取一个地址范围的数据,写入到另外一个地址范围去。

技术实现思路

[0012]本专利技术的目的在于提供可以根据特定数据,在微控制器任意管脚输出特定序列的方案;提供根据特定数据,输出非固定周期的特定序列的方案;提供一些不占用CPU处理时间,而模拟一些并口、PWM、串口等外设模块的方案。
[0013]为达此目的,本专利技术揭示了以下技术方案:一种根据特定数据,在微控制器管脚输出特定序列的方案,包括步骤:在微控制器存储器中,分配一块区域,存储DMA1 的源数据1,一个数据转换过程把特定数据转换为源数据1,一个硬件定时器1的定时信号触发DMA1 把源数据1搬运到微控制器输出模块的管脚控制寄存器,除了DMA1外,没有其他途径给管脚控制寄存器数据。所述输出模块,可以是通用输入输出模块,对应的管脚控制寄存器是端口输出控制寄存器或端口位操作寄存器或端口位翻转寄存器;所述输出模块,可以是配置成PWM模式且PWM输出连接到输出管脚、同时给出定时触发信号的硬件定时器1本身,对应的管脚控制寄存器是计数器自动重载寄存器、或计数器自动重载寄存器和通道x捕获/比较值寄存器。
[0014]进一步的,所述特定序列有周期性,一个周期有K个管脚控制寄存器值,令源数据1为一个对应与特定序列一个循环周期的大小即K个管脚控制寄存器值,源数据1的一个循环周期即K个管脚控制寄存器值中,数据只有一个BYTE会变化。令DMA1为循环模式,一个数据转换过程2把特定数据转换为源数据2,使用另外一个硬件定时器2,每个循环周期触发一次另外一个DMA2,把源数据2以BYTE为单位搬运到源数据1的K个管脚控制寄存器值中变化BYTE的位置。
[0015]进一步的,令源数据1为一个对应与特定数据N个bit*2的大小,令DMA1为循环模式,在DMA1的半完成中断的DMA中断处理程序中把特定数据N个bit转换为源数据1的前半部分,在DMA1半完成中断的DMA中断处理程序中把特定数据接下来N个bit转换为源数据1的后半部分,循环中断处理程序,直到特定数据转换完毕。
[0016]进一步的,令源数据1为2个管脚控制寄存器大小,固定为置1数据和置0数据,令DMA1为循环模式,数据转换过程3把特定数据转换成源数据3,硬件定时器1的定时信号触发另一个DMA3,把源数据3搬运到硬件定时器1的计数器自动重载寄存器。
[0017]进一步的,对于选择端口输出控制寄存器作为管脚控制寄存器的场合,在开始发送之前读取端口输出控制寄存器的数据并保存为变量,在数据初始化过程和数据转换过程中,回写到源数据1的对应位,避免输出特定序列时,改变端口输出控制寄存器的非输出管脚相关位的内容;进一步的,如果需要在输出特定序列时,改变端口输出控制寄存器的非输出管脚相关位的内容,先改变源数据1的对应位,最后改变端口输出控制寄存器的非输出管脚相关位。
[0018]本专利技术的有益效果:本专利技术中,用微控制器的DMA进行数据搬运,输出SmartLed驱动序列等特定序列,释放出微控制器的CPU处理能力,能实现驱动智能外控集成LED光源和其他任务并行执行;
输出SmartLed驱动序列特定序列可以不受微控制器硬件限制,任意选择输出管本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.根据特定数据,在微控制器输出管脚,输出特定序列的方法,在微控制器存储器中,分配区域,存储DMA 的源数据,数据转换过程把特定数据转换为源数据,硬件定时器的信号触发DMA 把源数据搬运到微控制器输出模块的管脚控制寄存器,其特征在于,在输出所述特定序列的时间段内,仅由所述DMA给所述管脚控制寄存器搬运所述源数据,没有其他途径给所述管脚控制寄存器输送其他数据;所述输出模块是通用输入输出模块,或给出所述DMA的触发信号的、配置成PWM模式且PWM输出连接到输出管脚的所述硬件定时器本身,或给出所述DMA的触发信号的所述硬件定时器本身、另外一个被所述硬件定时器触发而搬运固定源数据到通用输入输出模块的端口输出控制寄存器或端口位操作寄存器或端口位翻转寄存器的DMA、结合在一起的模块;所述输出模块是通用输入输出模块时,所述管脚控制寄存器是端口输出控制寄存器或端口位操作寄存器或端口位翻转寄存器,所述把源数据搬运到微控制器输出模块的管脚控制寄存器的DMA仅有一个;所述输出模块是给出所述DMA的触发信号的硬件定时器本身时,管脚控制寄存器是计数器自动重载寄存器,或管脚控制寄存器是计数器自动重载寄存器和通道x捕获/比较值寄存器;管脚控制寄存器是计数器自动重载寄存器时,所述DMA仅有一个;管脚控制寄存器是计数器自动重载寄存器和通道x捕获/比较值寄存器时,有1个所述DMA搬运给予计数器自动重载寄存器所述源数据、另外一个所述DMA搬运给予通道x捕获/比较值寄存器所述源数据,或1个所述DMA既搬运给计数器自动重载寄存器所述源数据、又搬运给通道x捕获/比较值寄存器所述源数据;所述输出模块是给出所述DMA的触发信号的所述硬件定时器本身、另外一个被所述硬件定时器触发而搬运固定源数据到通用输入输出模块的端口输出控制寄存器或端口位操作寄存器或端口位翻转寄存器的DMA、结合在一起的模块时,管脚控制寄存器是计数器自动重载寄存器,所述DMA仅有一个。2.根据权利要求1所述的根据特定数据,在微控制器输出管脚,输出特定序列的方法,其特征在于,所述输出模块是通用输入输出模块,所述管脚控制寄存器是端口输出控制寄存器时,在输出所述特定序列之前,先保存端口输出控制寄存器的数据,所述数据转换过程把保存的数据,改变所述输出管脚对应的位后,回写到所述源数据中。3.根据权利要求1所述的根据特定数据,在微控制器输出管脚,输出特定序列的方法,其特征在于,在输出所述特定序列的时间段内,所述源数据的长度缩小到一个周期的长度,所述源数据的分为变化BYTE和其他保持不变的部分,所述DMA配置为使能循环模式;另外一个数据转换过程把特定数据转换为BYTE为单位的BYTE源数据,另外配置一个硬件定时器,触发另外一个DMA,以BYTE为单位把BYTE源数据搬运到所述源数据的变化BYTE。4.根据权利要求1所述的根据特定数据,在微控制器输出管脚,输出特定序列的方法,其特征在于,在输出所述特定序列的时间段内,所述源数据的长度缩小到N个周期的长度,所述DMA配置为使能循环模式;所述DMA的半传输完成中断处理程序,从所述特定数据取出N位的特定数据,填充到所述源数据的前一半;所述DMA的传输完成中断处理程序,从所述特定数据取出下N位的特定数据,填充到所述源数据的后一半。5.根据权利要求1所述的根据特定数据,在微控制器输出管脚,输出特定序列的方法,其特征在于,所述输出模块是给出所述DMA的触发信号的硬件定时器本身结合另外一个被
所述硬件定时器触发而搬运固定源数据...

【专利技术属性】
技术研发人员:彭增金
申请(专利权)人:彭增金
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1