单片机如何生成周期正弦波

这篇具有很好参考价值的文章主要介绍了单片机如何生成周期正弦波。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,简介

在某些场景需要使用单片机的IIS等外设播放正弦波音频数据。本文介绍一种“笨方法”来生成固定频率和固定幅度的正弦波定点型数据,记录总结学习使用。

二,步骤简介

总体步骤概述:
1,使用Audition生成制定波形,并转成pcm格式;
2,写个main函数将所需要的数据读取并打印,然后运行重定向到txt中;
3,将txt中的数据复制到IIS的播放buffer中进行播放即可;

本篇文章使用采样率48K,幅值-6db ,频率1KHz的正弦信号来举例说明。

2.1 使用Audition生成制定波形,并转成pcm格式

打开Audition,生成音调:
单片机如何生成周期正弦波
新建音频文件,点击确定:
单片机如何生成周期正弦波
设置波形信号开始的频率和幅值:
单片机如何生成周期正弦波
设置波形信号结束的频率和幅值:
单片机如何生成周期正弦波
点击“确定”,一个立体声的指定音源就做好了:
单片机如何生成周期正弦波
使用Audition快捷键“Alt+Z”查看生成波形信号频率,点击“扫描选区”看到左右声道的频率都是1KHz:
单片机如何生成周期正弦波
将当前的浮点型数据转换成定点数据,使用快捷键“Ctrl + S”,将文件另存为.pcm格式,并保存到指定的路径:
单片机如何生成周期正弦波

至此,我们的音源文件已经生成并准备完毕。

2,写个main函数将所需要的数据读取并打印,然后运行重定向到txt中

main函数代码如下所示:
这里IN_32BITPCM_FILE使用刚才生成的pcm文件;
DATA_SAMPLE_LEN设置为96,原因是因为1KHz频率周期是1ms,48K采样率1ms采样点个数为48,又因为是立体音,所以这里读取96个采样点。

#include <stdio.h>

#define IN_32BITPCM_FILE "-6db_1K_48KSr.pcm"
#define READ_DATA_SAMPLE_LEN    96

int main()
{
	int ret = -1;
	FILE *fp = NULL;
	int buffer[READ_DATA_SAMPLE_LEN] = {0};

	fp = fopen(IN_32BITPCM_FILE,"rb");
	if(fp == NULL) {
		printf("%s: open file failed \n",__func__);
		return -1;
	}

	fseek(fp,0,SEEK_SET);
	ret = fread(buffer,sizeof(char),READ_DATA_SAMPLE_LEN*sizeof(buffer[0]),fp);
	if(ret <=0 ) {
		printf("%s: ERROR:read file data failed \n",__func__);
		fclose(fp);
		return -1;
	}

	for(int i=0; i< READ_DATA_SAMPLE_LEN; i++){
		printf("0x%08X, ", buffer[i]);
		if(((i+1)%8) == 0){
			printf("\n");
		}
	}
	fclose(fp);

	return ret;
}

打开MINGW64把刚才的main函数进行编译,默认生成a.exe:
单片机如何生成周期正弦波
运行a.exe并把打印输出结果重定向到test.txt:
单片机如何生成周期正弦波
打开test.txt查看生成的正弦波定点数据,发现我们想要的数据已经整齐的排列好:
单片机如何生成周期正弦波

2.3 接下来就把这些数据拷贝到指定的数组中

备注:为了使生成的数据和音频播放的缓存buffer进行匹配,这里可将该周期数据多复制几份,然后循环从存放生成完整周期的数据的数组中去取数据复制到音频播放的缓存数组即可。

三,总结

本文主要介绍了一种笨方法生成定点数据的正弦波,供参考使用。后续会介绍如何使用CORDIC算法生成各种频率和幅值及采样率的正弦波形。欢迎一起讨论交流~文章来源地址https://www.toymoban.com/news/detail-500295.html

到了这里,关于单片机如何生成周期正弦波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【单片机】自学单片机第01天|单片机简介、内部资源、最小系统

    作者: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: 单片机基础自学教程:适合小白的单片机自学教程|以51单片机为学习对象,争取举一反三!,和小白瑶瑶子一起学起来

    2023年04月25日
    浏览(47)
  • 51单片机的基础知识——单片机简介

    仅用于学习交流!!! 仅用于学习交流!!! 仅用于学习交流!!! 单片机,即单片微型计算器,简称为单片机。用专业术语来讲单片机就是在一块硅片上集成了微处理器、存储器以及各种输入/输出(I/O,I指的是input,O指的是output)口的芯片。通俗点讲,单片机是一块集

    2024年02月03日
    浏览(57)
  • 自学嵌入式第二周之如何生成烧录到单片机内所必须的(.hex)文件

    Keil软件是一款辅助单片机编写程序,编译及运行程序,并产生单片机下载所必须的(.hex)文件,用于写入单片机内部的程序。 01 在桌面新建文件夹,以自己名字命名。 打开下载好的Keil软件,如图 02 选择菜单栏( 工程——新建工程),然后出现的对话框,保存在选- 桌面

    2024年04月26日
    浏览(46)
  • 单片机简介(STM32介绍)

        单片机是 单片微型计算机 的简称,Mcu是Microcontroller的简称,也就是嵌入式微控制器。采用集成电路技术将具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、定时器/计时器、多种I/O口和中断系统等功能集成到一块硅片上。可以说单片机就是一个小而完善

    2024年02月16日
    浏览(37)
  • STM32系列单片机“中断触发时间、最小中断周期、指令周期、平均执行速度、和单条指令执行时间”的问题研究

    查阅相关资料书籍和博客总结了一下知识点,以便学习巩固复习。 在学习《ARM Cortex-M3与Cortex-M4权威指南(第3版)》 这本书具体说明了触发中断需要多长时间。 在权威指南的第74页提到, Cortex-M3和Cortex-M4的中断等待非常小,只有12个周期 。也就是说触发中断后,需要12个时钟

    2024年04月10日
    浏览(41)
  • STM32单片机(一)STM32简介

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(57)
  • 【STM32】基础知识 第一课 单片机简介

    单片机 (Single-Chip Microcomputer) 单品微型计算机, 是一种集成电路芯片. 电脑 vs 单片机: 电脑 单片机 CPU CPU 内存 SRAM 硬盘 Flash 主板 外设 SRAM 静态随机读取器 (Static Random-Access Memory): SRAM 是随机存储器的一种, 属于静态数据, 这类存储器要是维持电源, 里面存储的信息就可以恒常维持

    2024年02月11日
    浏览(93)
  • MSP430单片机C语言编程与实践(入门篇)之一 ----MSP430单片机简介和LaunchPad开发板

    1.1  MSP430单片机的架构        单片机是一个综合的模拟和数字系统,根据其丰富的片上资源,再添加一些外围电路,通过软件编程后就可以完成检测、控制等任务,形成一个实用的电子装置或设备。 MSP430 是美国德州仪器公司(TI,Texas Instruments)推出的系列单片机,因其超

    2024年03月18日
    浏览(45)
  • (仅对于(旧板)12分频的51单片机而言)机器周期,时钟周期,晶振振荡频率(fosc)的关系; (51、stm32通用)分频的原理和作用

    1,晶振振荡频率(fosc) fosc即板子所使用的晶振频率,如常用的11.0592Mhz。 2,时钟周期 时钟周期 = 1 / fosc ,单位为us。 3,机器周期 机器周期 = 12 / fosc ,单位为us。 为啥是12? 因为绝大多数51单片机默认12分频,分频原理直接看第四点。 12分频的原因:老版51单片机使用复杂

    2024年02月13日
    浏览(51)
  • PIC单片机应用开发实践教程(五): 烧录器简介

     源码基于  PIC16F15355开发板,想了解详情,请点  PIC16F15355开发板   ​​​​​​​ PIC单片机,无论是8位的10/12/16/18系列,还是16位PIC24/dsPIC33系列,常用的烧录器如下:PICkit3,PICkit4,ICD3和ICD4,当然,还有量产型专用烧录工具PM3. 1、PICkit3 烧录器 特别要注意,三角形为引脚

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包