百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

基于STM32的函数信号发生器设计(下:软件设计)

moboyou 2025-04-23 14:07 27 浏览

1、简介:

下篇将介绍整个STM32函数信号发生器系统软件设计部分,将着重介绍设计逻辑思路以及重点代码。(上篇请点击跳转:基于STM32的函数信号发生器设计(上:硬件设计))

本文重点介绍DA转换部分的软件设计,不包含STM32初始化、中断设置、IO口配置部分。

2、信号波形设计:

六种信号波形,采样率512Hz,通过Matlab编程实现,导出数据,转成十六进制数组


实现上述波形的matlab仿真程序代码:

clear;
clc
T=1;     %周期变量
%波形a
t=-0.5:1/512:2.5;
y=1.*(t>0&t<=T/2);
subplot(231);
plot(t,y);
axis([-0.5,2.5,-1.5,1.5]);
title('a');
grid on;
%波形b
t=-0.5:1/512:3;
y=-1.*(t>0&t<=T/2);
subplot(232);
plot(t,y);
axis([-0.5,2.5,-1.5,1.5]);
title('b');
grid on;
%波形c
t=-0.5:1/512:2.5;
y=-1.*(t>0&t<T/2)+1.*(t>=T/2&t<T);%y=square(2*pi*t,50);
subplot(233);
plot(t,y);
axis([-0.5,2.5,-1.5,1.5]);
title('c');
grid on;
%波形d
t=-0.5:1/512:2.5;
y=-1.*(t>0&t<3*T/8)+1.*(t>5*T/8&t<T);
subplot(234);
plot(t,y);
axis([-0.5,2.5,-1.5,1.5]);
title('d');
grid on;
%波形e
A=1;
t=-0.5:1/512:2.5;
y=-1.*(t>0&t<T/3)+exp(-A*t+A*T/3).*(t>=T/3);
subplot(235);
plot(t,y);
axis([-0.5,2.5,-1.5,1.5]);
title('e');
grid on;
%波形f
t=-0.5:1/512:2.5;
y=-1.*(t>0&t<=T/4)+1/3*(t>T/4&t<T);
subplot(236);
plot(t,y);
axis([-0.5,2.5,-1.5,1.5]);
title('f');
grid on;

3、分析DAC8871芯片手册(来源datasheet),根据时序图,设计程序流程,编写SPI通信核心程序


根据德州仪器公司TI提供的DAC8871时序,操纵各引脚,再通过SPI口写入数据


SPI以及DA转换核心代码:

uint16_t SPIx_TX(uint16_t* Figure)
{
	u16 i;
	u8 retry=0;				 	
	RST=1;
	RSTSEL=1;
	LDAC=0;
	CS=1;
	RST=0;
	RST=1;
	for(i=0;i<512;i++)
	{	
		CS=0;			  	 	 
		SPIx_ReadWriteByte(*(Figure+i));
		while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
		{
			retry++;
			if(retry>20)return 0;
		} 
		delay_ns(10); //此句延时很重要,参数设置不当极易导致波形严重失真
		CS=1;
		retry=0;
	}
	LED0=!LED0;		    
}


SPI通信可参考STM32开发例程,主要是调整DA转换时序中的延时时长,还有对DA芯片各引脚高低电平的操作(按照DAC8871数据手册中的时序图,本设计选择的是“/LDAC锁定低电平”的时序图)。

注:数据手册可上ALLDATASHEET查找下载:
http://www.alldatasheet.com/


4、结合上篇的硬件设计,附上整个系统最终成果图:


系统设计详细介绍资料下载链接:

基于STM32的函数信号发生器设计(资料)_基于stm32的信号发生器设计-硬件开发文档类资源-CSDN文库

(注:本设计已发表于《电子世界》2014年9月上刊,请尊重笔者的知识产权,谢谢!)

相关推荐

php宝塔搭建部署实战SDCMS蓝色通用宽屏企业网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的SDCMS蓝色通用宽屏企业网站源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+...

PHP Laravel定时任务Schedule

前提:本文方法是利用Linux的crontab定时任务来协助实现Laravel调度(Mac也一样)。一、首先添加Crontab定时任务,这里只做简单介绍:用命令crontab-e添加如下内容**...

PHP函数大全:从Array到Zip,你需要了解的所有函数

PHP函数大全:从Array到Zip,你需要了解的所有函数在PHP开发中,函数是非常重要的工具。它们提供了各种功能和操作,帮助我们更高效地处理数据和实现各种功能。在本文中,我们将介绍PHP中一些常用的...

php宝塔搭建部署实战SDCMS蓝色系列包装行业网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的SDCMS蓝色系列包装行业网站源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+...

php宝塔部署实战月老盲盒H5交友盲盒网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的月老盲盒H5交友盲盒网站源码。技术架构PHP7.2+nginx+mysql5.7+JS+CSS+HTMLcn...

php宝塔部署实战OneKeyAdmin插件化管理系统源码

大家好啊,我是测评君,欢迎来到web测评。有个朋友发消息问我,能不能录制一期开源OneKeyAdmin插件化CMS管理系统的搭建视频教程,看了一下,搭建的方式还是很简单的,本期给大家分享一下怎么在宝塔...

php宝塔搭建部署实战海洋cms视频内容管理系统源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的海洋cms视频内容管理系统源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+J...

php宝塔搭建部署网盘目录搜索系统thinkphp源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的网盘目录搜索系统thinkphp源码,这也是一个朋友之前分享给我的,说不会搭建,看了一下,还是很简单的,感兴趣的朋友可以自行下载...

php宝塔搭建部署实战PESCMSTEAM团队任务管理系统源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的PESCMSTEAM团队任务管理系统源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5....

php宝塔搭建部署实战科技创业园区网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的科技创业园区网站源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+JS+C...

在CentOS7系统源码安装Nginx+MySQL+PHP+Go

以下安装说明仅供参考,请根据实际情况修改配置,进行软件编译安装软件安装也可以参考阿里云/腾讯云的建站教程:https://help.aliyun.com/zh/ecs/use-cases/build-...

2021最新湖北电视台节目源PHP代理源码

强调下这需要要PHP服务器来运行代码,奈何世人只爱鱼,不爱渔。自己动手对大部分人还是一个坎。id频道439湖北美嘉购物438湖北垄上437湖北教育436湖北生活435湖北影视434湖...

教你搭建自己的问答系统,在java环境上运行php项目

最近公司需要一款问答系统,方便我们平时在这套系统上面积累经验于是在网上找到这款Tipask问答系统。Tipask问答系统是一款开放源码的PHP仿百度问答系统。以国人的使用习惯为设计理念,采用MVC构架...

php宝塔搭建实战部署响应式房产置业公司网站php源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的响应式房产置业公司网站模板php源码,也是一个朋友很早之前分享给我的,说不会搭建,让我帮忙录制一期教程,趁着今天有空,简单的录制...

php宝塔搭建部署实战易优企业官网系统源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的易优企业官网系统源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+JS+C...