|
发表于 2017-12-4 12:27:07
|
显示全部楼层
a0a.1 32b0c
本帖最后由 wolfgang2015 于 2017-12-4 13:34 编辑
自行选型一个STM32的单片机,要求输出4路可控制脉冲数的高速脉冲,必须要尽可能的节省CPU时间,而且不能频繁的进入中断(只需提供解决方案,不用代码)
说到脉冲可控,控制的方法很种类很多,频率、数量、脉宽等等,从脉冲控制方式诞生的开始就有多种技术来实现,从无集成电路方案的晶体管、电子管、555、8051、再到各种ARM,应用领域不可说不广从单路再到多路控制,特别是多路互补PWM在步进电机领域有很重要的使用。
个人认为本地题的关键词
第一层为:
4路、可控制、脉冲数、高速脉冲
第二层为:
节省CPU时间
第三层为:
不能频繁的进入中断
至于是否需要“多路正交“、"用脉冲来代替正弦波" 等都不是该题目明确表达的内容及含义,因此应排除指定用途,因此这题目的答案就不能按某特定用途的解决方式来解决。
输出脉冲,最简单的就是控制PIN脚的电平高低,再计数获得电平高低输出时间长短 和 这种波形的电平周期性来获得一定数量的脉冲信号。
高速脉冲信号:那么这就需要涉及到高速脉冲的测量,拿示波器是一个方法。达到一定频度的持续脉冲就是高速脉冲。另外的一个就是用MCU自身的定时器来测量高速脉冲。
如果要测量4路就需要4个定时器来测量(这是做产品时要考虑的,现在题目没有要求测量可不考虑这项内容,但做产品时需要考虑的更多)。
可控制、脉冲数:这里要求的是脉冲数量有要求。
利用外设手段来控制脉冲数量是重点
可控的因素有,MCU计数、计数器、数组等方法。都是计数的方法,这就是一些控制数量的方法;
利用定时器来计数,那么要在判断定时器数量要求。
数组来计数,利用数组的长度来计数。
从数量感知来说,可以在脉冲输出后感知计数,另外需要在脉冲源侧进行计数输出。
接着第二层说了:节省CPU时间,
这里就排除用MCU来计数的方法,需要利用外设计数,这里就有几种方法 计数器、DMA等方法节省CPU时间。
第三层不能频繁的进入中断
这里提到了中断,不能频繁进入,不是不能进入,而是计数时进入中断的频率不能太频繁。
1、利用输出后的感知来计数时,每次计数都是一次中断,占用大量的MCU中断所以不可取;
2、利用输出源的计数,用一个计数器来计算次数、用一个计数器来控制脉冲,这里有一种技术可以利用,就是溢出,出现了溢出中断,就停止发送脉冲。好方法。。。。
3、利用DMA数组+1的方法来发送,发送的次数限制,受数组的大小,这也是好方法。。。
当需要对2和3比较二者优劣时,就要分析两者边界问题上的影响:
1、中断与数组控制范围?
2、中断与数组控制触发的时间长短,是否对脉冲数量产生影响?
3、定时器与DMA的中断是否会被拦截屏蔽,拦截屏蔽后对脉冲数量输出是否有影响?
4、在中断相同优先级下,是否能准确控制脉冲数量?
|
|