本发明专利技术涉及一种正弦波生成方法,包括:根据预设的离散点数量和数字信号频率,计算任意相邻两个离散点之间的时间间隔并将所述时间间隔设置为微控制单元的定时器计数值;根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求,将对应离散点的数据传输到微控制单元的SPI数据寄存器;将所述SPI数据寄存器中离散的波形数据传输到与SPI接口相连的外部数模转换器,生成连续的波形数据;当传输到SPI数据寄存器的离散点数据的数量达到预设的离散点数量时,生成相应正弦波并产生DMA中断请求。上述正弦波生成方法,解决了仅通过微控制单元的定时器中断,不能实现大量离散点的合成输出的问题,实现了正弦波的高速生成。此外,本发明专利技术还涉及一种正弦波发生装置。
【技术实现步骤摘要】
本专利技术涉及波形发生领域,特别是涉及一种正弦波生成方法及装置。
技术介绍
通常情况下,工频正弦波的信号发生都是使用专用的FPGA芯片,随着芯片技术的快速发展,芯片的资源越来越丰富,通过单个微控制单元实现正弦波的发生成为可能。正弦波的发生,通常是将一个y=sin(ωt+θ)函数进行N点离散化,再将离散化后的N点数字量输出到数模转换器,将数字信号转换为模拟信号,实现正弦波信号的生成。数模转换器的位数越多,生成的正弦波越接近理想信号,一个16位的数模转换器支持N=216=65536点波形的离散化。这样的正弦波生成方法,对于使用FPGA芯片来说没有问题。但是,对于使用单个微控制单元来实现则充满了挑战。具体来说,当我们需要实现一个频率为50Hz,离散化数量N为10000点以上的正弦波合成输出时,假设离散化数量N为10000点,合成一个频率为50Hz的正弦波,则要求微控制单元处理频率为500kHz,每个离散点的处理速度为2uS;如果要求20000点合成输出,则每个离散点的处理速度为1uS;如果要求更高的点数合成,则速度要求更高。因此,仅仅通过微控制单元的定时器中断软件设置SPI的片选,来实现大量离散点的合成输出已经是不可能实现了。
技术实现思路
基于此,有必要针对仅仅通过微控制单元的定时器中断软件设置SPI的片选,不可能实现大量离散点的合成输出问题,提供一种正弦波生成方法及装置。一种正弦波生成方法,包括:根据预设的离散点数量和数字信号频率,计算任意相邻两个离散点之间的时间间隔并将所述时间间隔设置为微控制单元的定时器计数值;根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求,将对应离散点的数据传输到微控制单元的SPI数据寄存器;将所述SPI数据寄存器中离散的波形数据传输到与SPI接口相连的外部数模转换器,生成连续的波形数据;当传输到SPI数据寄存器的离散点数据的数量达到预设的离散点数量时,生成相应正弦波并产生DMA中断请求。在其中一个实施例中,所述根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求,将对应离散点的数据传输到微控制单元的SPI数据寄存器的步骤包括:根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求以及SPI片选信号;根据所述SPI片选信号,控制微控制单元的SPI数据寄存器的选通;根据所述DMA请求,将对应离散点的数据传输至所述SPI数据寄存器。在其中一个实施例中,所述将所述SPI数据寄存器中离散的波形数据传输到与SPI接口相连的外部数模转换器,生成连续的波形数据的步骤包括:当所述对应离散点的数据传输至所述SPI数据寄存器完成后,产生SPI激活请求;根据所述SPI激活请求,激活SPI数据寄存器产生SPI时钟信号;根据所述SPI时钟信号,将所述SPI数据寄存器中离散的数据传输到与SPI接口相连的外部数模转换器;数模转换器将所述离散的波形数据转换为连续的波形数据。在其中一个实施例中,所述当传输到SPI数据寄存器的离散点数据的数量达到预设的离散点数量时,生成相应正弦波并产生DMA中断请求的步骤之后,还包括:根据所述DMA中断请求,若待生成的正弦波信号频率发生改变,则根据改变后的正弦波信号频率,调整定时器计数值。在其中一个实施例中,所述任意相邻两个离散点之间的时间间隔的计算公式为:其中,t表示任意相邻两个离散点之间的时间间隔,f表示待生成的正弦波信号的频率,N表示离散点数量。在其中一个实施例中,所述DMA中断请求可以为一个正弦波周期信号,用于对正弦波信号的频率进行跟踪。一种正弦波生成装置,包括微控制单元和数模转换器,所述微控制单元通过SPI接口与所述数模转换器连接,所述微控制单元包括定时器、DMA控制器以及SPI数据寄存器;所述定时器的计数值被配置为根据预设的离散点数量和数字信号频率计算得到的数值;所述DMA控制器被配置为接收DMA请求以将离散波形数据传输到SPI数据寄存器中,并在数据传输完成后产生SPI激活请求,在数据传输达到一个周期时产生DMA中断请求;所述SPI数据寄存器被配置为保存离散波形数据并响应DMA控制器产生的SPI激活请求,输出SPI时钟信号,根据所述SPI时钟信号将离散波形数据发送到数模转换器;所述数模转换器用于将离散波形数据生成相应连续波形。在其中一个实施例中,所述根据预设的离散点数量和数字信号频率计算得到的数值为待生成正弦波任意两个相邻离散点的时间间隔。在其中一个实施例中,所述定时器还用于根据所述计数值,每个时间间隔产生一个对应的DMA请求。在其中一个实施例中,所述数模转换器可以是16位数模转换器。上述正弦波生成方法及装置,通过利用单个微控制单元的DMA控制器、定时器以及SPI数据寄存器资源,靠硬件设置SPI片选,可以实现大量离散点波形的合成输出,解决了仅通过微控制单元的定时器中断,最多支持离散点数量为1000,中断间隔为20uS的正弦波的生成,不能实现大量离散点的合成输出的问题。特别的,通过设置数模转换器为16位数模转换器,可以实现最多65536点波形的离散化。不仅能够实现正弦波的高速生成,而且结构简单,功效媲美专用FPGA。附图说明图1为一个实施例中正弦波生成方法流程图;图2为另一个实施例中正弦波生成方法流程图;图3为又一个实施例中正弦波生成方法流程图;图4为再一个实施例中正弦波生成方法流程图;图5为一个实施例中正弦波发生装置模块图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,在一个实施例中,提供了一种正弦波生成方法的流程图,该方法包括:S100:根据预设的离散点数量和数字信号频率,计算任意相邻两个离散点之间的时间间隔并将所述时间间隔设置为微控制单元的定时器计数值。其中,正弦波的发生,通常是将一个y=sin(ωt+θ)函数进行N点离散化,再将离散化后的N点数字量输出到数模转换器,将数字信号转换为模拟信号,实现正弦波信号的生成。假设待生成的正弦波信号频率为f,离散点数量为N,此时,任意相邻两个离散点之间的时间间隔t的计算公式为上述时间间隔t可对应于微控制单元的定时器的某个计数值,定时器能够根据所设置的计数值计数得到该时间间隔。S110:根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求,将对应离散点的数据传输到微控制单元的SPI数据寄存器。其中,定时器的计数值即为任意两个相邻离散点之间的时间间隔,根据所述时间间隔,每个时间间隔产生一个对应的DMA请求,该DMA请求作用于微控制单元的DMA控制器。DMA控制器在收到DMA请求后执行数据传输功能,将对应离散点的数据传输到微控制单元的SPI数据寄存器。S120:将所述SPI数据寄存器中离散的波形数据传输到与SPI接口相连的外部数模转换器,生成连续的波形数据。其中,当DMA控制器响应DMA请求执行数据传输功能,将对应的离散点的数据传输到微控制单元的SPI数据寄存器后,激活SPI设备输出离散的波形数据到外部数模转换器,通过数模转换,将数字信号转换为模拟信号,生成相应的连续波形本文档来自技高网...
【技术保护点】
一种正弦波生成方法,包括:根据预设的离散点数量和数字信号频率,计算任意相邻两个离散点之间的时间间隔并将所述时间间隔设置为微控制单元的定时器计数值;根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求,将对应离散点的数据传输到微控制单元的SPI数据寄存器;将所述SPI数据寄存器中离散的波形数据传输到与SPI接口相连的外部数模转换器,生成连续的波形数据;当传输到SPI数据寄存器的离散点数据的数量达到预设的离散点数量时,生成相应正弦波并产生DMA中断请求。
【技术特征摘要】
1.一种正弦波生成方法,包括:根据预设的离散点数量和数字信号频率,计算任意相邻两个离散点之间的时间间隔并将所述时间间隔设置为微控制单元的定时器计数值;根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求,将对应离散点的数据传输到微控制单元的SPI数据寄存器;将所述SPI数据寄存器中离散的波形数据传输到与SPI接口相连的外部数模转换器,生成连续的波形数据;当传输到SPI数据寄存器的离散点数据的数量达到预设的离散点数量时,生成相应正弦波并产生DMA中断请求。2.根据权利要求1所述的正弦波生成方法,其特征在于,所述根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求,将对应离散点的数据传输到微控制单元的SPI数据寄存器的步骤包括:根据所述定时器计数值,每个时间间隔产生一个对应的DMA请求以及SPI片选信号;根据所述SPI片选信号,控制微控制单元的SPI数据寄存器的选通;根据所述DMA请求,将对应离散点的数据传输至所述SPI数据寄存器。3.根据权利要求1所述的正弦波生成方法,其特征在于,所述将所述SPI数据寄存器中离散的波形数据传输到与SPI接口相连的外部数模转换器,生成连续的波形数据的步骤包括:当所述对应离散点的数据传输至所述SPI数据寄存器完成后,产生SPI激活请求;根据所述SPI激活请求,激活SPI数据寄存器产生SPI时钟信号;根据所述SPI时钟信号,将所述SPI数据寄存器中离散的数据传输到与SPI接口相连的外部数模转换器;数模转换器将所述离散的波形数据转换为连续的波形数据。4.根据权利要求1所述的正弦波生成方法,其特征在于,所述当传输到SPI数据寄存器的离散点数据的数量达到预设的离散点数量时,生成相应正弦波并产生DMA中断...
【专利技术属性】
技术研发人员:曾春山,
申请(专利权)人:深圳市科陆精密仪器有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。