当前位置: 首页 > news >正文

使用PSIM软件生成DSP28335流水灯程序

  最近在学习DSP28335芯片,然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片,于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。

工程下载链接 https://download.csdn.net/download/qq_20222919/88770386
在这里插入图片描述
  PSIM仿真的官方示例在安装目录下examples文件夹中,其中28335芯片的相关示例在examples\Code Generation\F2833x Target 文件夹中。我这里PSIM的版本安装的是2022版。

  不过官方的这些例子看起来有些复杂,对于初学者来说,要看懂很不容易。于是想在网上找一个简单一些的入门例子,结果找了一圈也没找到。看来只能靠自己了,经过一番摸索,终于成功点亮了LED灯。

  下面将我的方法分享给大家。
开发板使用的是普中科技的
在这里插入图片描述
想要实现的功能就是让板子上的这几个LED灯闪烁。首先要确定LED灯的端口是哪几个IO口。
直接在开发板原理图中查看LED端口。

在这里插入图片描述
在这里插入图片描述
通过原理图可以看到LED使用的IO口是GPIO64/65/66/67/68,暂时先用这5个LED,最后两个先不用。

确定好IO口之后,下面开始使用PSIM仿真软件搭建仿真电路。新建一个PSIM仿真文件。
在这里插入图片描述
然后在菜单栏选择仿真—仿真控制
在这里插入图片描述
此时会出现一个钟表一样的图标,将这个图标放在仿真文件中。
在这里插入图片描述

双击这个图标,打开仿真设置。

在这里插入图片描述

第一个选项使用默认设置就行,点到第三个选项。
在这里插入图片描述
在SimCoder选项中设置硬件目标,这里设置为F28335。接下来设置时钟频率,菜单栏中选择 元件—SimCoder—F2833x目标—DSP时钟。这个选项在倒数第二个,选择的时候要用鼠标将选项页面一直往下拉才能看见。
在这里插入图片描述
将这个DSP时钟放置在页面上。
在这里插入图片描述
时钟的默认设置是外面晶振30MHz,DSP工作时钟为150MHz,和我的开发板设置一样,所以这里使用默认的就行。
在这里插入图片描述
接下来设置IO口,菜单栏中选择 元件—SimCoder—F2833x目标—硬件结构设置。
在这里插入图片描述
将硬件配置这个图标放在图纸上,然后双击打开。
在这里插入图片描述
这个模块就是配置每个IO口功能的,相当于IO口的初始化。
在这里插入图片描述
这里需要配置的IO口就是 GPIO64/65/66/67/68
在这里插入图片描述
将这个几个口设置为输出口,设置完成之后需要点击右上角的锁定按钮。
在这里插入图片描述
点击锁定之后,配置的IO口才能生效,此时锁定按钮就变成了解锁按钮。如果需要修改IO口,需要先解锁才能修改。

在这里插入图片描述
接下来好需要放置IO口输出模块。菜单栏中选择 元件—SimCoder—F2833x目标—数字输出。
在这里插入图片描述
将数字输出模块放置在界面上,然后双击打开模块,选择每个端口需要输出的IO口。
在这里插入图片描述
将端口D0–D4分别设置为GPIO64–GPIO68
在这里插入图片描述
接下来给IO口设置输出信号,想让LED按照10Hz的频率闪烁,要产生这个10Hz的信号,就需要使用一个方波发生器。
在这里插入图片描述放置一个方波发生器,然后将一端接地,这个方波产生的信号不能直接北28335使用,还需要在方波发生器和IO模块之间接一个 零阶保持器。

菜单栏选择 元件—控制电路—数字控制模块— 零阶保持器
在这里插入图片描述
接下来开始连线,将方波的信号连接到零阶保持器输入端,然后零阶保持器输出端接F28335输出模块的左端。
在这里插入图片描述
然后将D1到D4口都连接到D0口上,让这几个口的信号一样,然后将没有用到的D5—D7接地,

在这里插入图片描述
接下来设置方波发生器的频率,双击方波发生器,将频率设置为10。
在这里插入图片描述
接下来就可以查看波形了,给输入输出信号分别放置电压探头。
在这里插入图片描述
下面点击仿真按钮,开始仿真。
在这里插入图片描述
将输入输出波形都添加进去
在这里插入图片描述
此时的波形中为什么看不到方波?

在这里插入图片描述

由于方波发生器的频率设置的非常低,只有10Hz,而仿真时间设置的比较短,只有10ms,所以看不到波形,将仿真文件中的钟表图标双击打开,将仿真时间修改为1秒。
在这里插入图片描述
接着继续仿真,查看波形。
在这里插入图片描述
这时候就能看到方波了,下面就剩最后一步了,开始生成代码。

保存仿真文件到指定的文件夹中,文件夹命名最好不要带中文,因为一会要通过CCS软件直接打开生成的工程。
在这里插入图片描述
然后再菜单栏点 仿真—生成代码
在这里插入图片描述
代码生成完之后,就会自动切换到生成的代码界面。
在这里插入图片描述
这时候在文件夹中就生成一个工程
在这里插入图片描述
打开这工程的文件夹,可以看到生成的文件。
在这里插入图片描述
下面就可以使用CCS直接打开这个工程了,打开CCS软件

菜单栏中选择 Project — Import Legacy SSCv3.3 Projects 使用3.3版本导入刚才新建的文件

在这里插入图片描述
再打开的界面中点Browse按钮,打开刚才生成工程。
在这里插入图片描述
工程的后缀名为*.pjt
在这里插入图片描述
单击Next
在这里插入图片描述
然后单击Finish

在这里插入图片描述

这时候工程就打开了
在这里插入图片描述
下面还需要对工程进行配置,在工程上右键,选择New—Target Configuration File
在这里插入图片描述
将配置文件名称修改为led

在这里插入图片描述接下来设置仿真器型号和单片机型号,点右边的Save按钮保存。
在这里插入图片描述
下面编译工程

在这里插入图片描述

编译成功通过,最后就是见证奇迹的时刻了。直接点debug按钮,将代码下载到开发板RAM中运行。

在这里插入图片描述
在开发板上可以看到5个LED灯在闪
在这里插入图片描述
在这里插入图片描述
通过示波器查看LED波形
在这里插入图片描述
波形的频率为10Hz,和PSIM仿真软件里面设置的一样。

可以看看通过PSIM生成的代码

/*********************************************************************************
// This code is created by SimCoder Version 2022c0.16 for F2833x Hardware Target
//
// SimCoder is copyright by Powersim Inc., 2009-2021
//
// Date: January 22, 2024 17:31:39
**********************************************************************************/
#include	<math.h>
#include	"PS_bios.h"
typedef float DefaultType;
#define	GetCurTime() PS_GetSysTimer()
#define iif(a, b, c) ((a) ? (b) : (c))
#define	PWM_IN_CHECK	// To lower PWM value setting time, comment out this line if PWM duty cycle values are strictly limited in the range.interrupt void Task();const Uint16 PSD_CpuClock = 150;  // MHz
extern	DefaultType	fGblVin;DefaultType	fGblVin = 0;
interrupt void Task()
{DefaultType	fZOH1, fVSQ1;PS_MaskIntr(M__INT13);{static DefaultType wt = 1.0 - ((-90) / 360.);static DefaultType dwt = 10 * 1.0 / 1000;fVSQ1 = (wt < 0.5) ? ((1) + (0)) : (0);wt += dwt;if (wt >= 1.0)wt -= 1.0;}fZOH1 = fVSQ1;
#ifdef	_DEBUGfGblVin = fZOH1;
#endif(fZOH1 == 0) ? PS_ClearDigitOutBitC((Uint32)1 << (64 - 64)) : PS_SetDigitOutBitC((Uint32)1 << (64 - 64));(fZOH1 == 0) ? PS_ClearDigitOutBitC((Uint32)1 << (65 - 64)) : PS_SetDigitOutBitC((Uint32)1 << (65 - 64));(fZOH1 == 0) ? PS_ClearDigitOutBitC((Uint32)1 << (66 - 64)) : PS_SetDigitOutBitC((Uint32)1 << (66 - 64));(fZOH1 == 0) ? PS_ClearDigitOutBitC((Uint32)1 << (67 - 64)) : PS_SetDigitOutBitC((Uint32)1 << (67 - 64));(fZOH1 == 0) ? PS_ClearDigitOutBitC((Uint32)1 << (68 - 64)) : PS_SetDigitOutBitC((Uint32)1 << (68 - 64));PS_ExitTimer1Intr();
}void Initialize(void)
{PS_SysInit(30, 10);PS_InitTimer(0, 0);// Set initial states for those GPIO/AIO output ports.PS_ClearDigitOutBitC((Uint32)1 << 0);	// Reset GPIO64PS_ClearDigitOutBitC((Uint32)1 << 1);	// Reset GPIO65PS_ClearDigitOutBitC((Uint32)1 << 2);	// Reset GPIO66PS_ClearDigitOutBitC((Uint32)1 << 3);	// Reset GPIO67PS_ClearDigitOutBitC((Uint32)1 << 4);	// Reset GPIO68PS_InitDigitOut(64);PS_InitDigitOut(65);PS_InitDigitOut(66);PS_InitDigitOut(67);PS_InitDigitOut(68);PS_InitTimer(1,150000L);PS_SetTimerIntrVector(1, Task);PS_StartStopPwmClock(2);	// start Timer1
}void main()
{Initialize();PS_EnableIntr();   // Enable Global interrupt INTMPS_EnableDbgm();for (;;) {}
}

通过定时器生成中断,然后再中断中对相应的IO口设置高低电平来控制LED闪烁。可以看出,通过PSIM生成的代码格式,和自己写的代码差别还是挺大的。

相关文章:

使用PSIM软件生成DSP28335流水灯程序

最近在学习DSP28335芯片&#xff0c;然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片&#xff0c;于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…...

【iOS ARKit】人脸检测追踪基础

在计算机人工智能&#xff08;Artificial Inteligence,AI&#xff09;物体检测识别领域&#xff0c;最先研究的是人脸检测识别&#xff0c;目前技术发展最成熟的也是人脸检测识别。人脸检测识别已经广泛应用于安防、机场、车站、闸机、人流控制、安全支付等众多社会领域&#x…...

ES的一些名称和概念总结

概念 先看看ElasticSearch的整体架构&#xff1a; 一个 ES Index 在集群模式下&#xff0c;有多个 Node &#xff08;节点&#xff09;组成。每个节点就是 ES 的Instance (实例)。每个节点上会有多个 shard &#xff08;分片&#xff09;&#xff0c; P1 P2 是主分片, R1 R2…...

Javaweb之SpringBootWeb案例之阿里云OSS服务集成的详细解析

2.3.3 集成 阿里云oss对象存储服务的准备工作以及入门程序我们都已经完成了&#xff0c;接下来我们就需要在案例当中集成oss对象存储服务&#xff0c;来存储和管理案例中上传的图片。 在新增员工的时候&#xff0c;上传员工的图像&#xff0c;而之所以需要上传员工的图像&…...

【GitHub项目推荐--不错的 Go 学习项目】【转载】

开源实时性能分析平台 Pyroscope 是基于 Go 的开源实时性能分析平台&#xff0c;在源码中添加几行代码 pyroscope 就能帮你找出源代码中的性能问题和瓶颈、CPU 利用率过高的原因&#xff0c;调用树展示帮助你理解程序&#xff0c;支持 Go、Python、Ruby 语言。 Pyroscope 可以…...

【Git】windows系统安装git教程和配置

一、何为Git Git(读音为/gɪt/)是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 二、git安装包 有2种版本&#xff0c;Git for Windows Setup和Git for Windows Portable(便携版)两个版本都可以。 三、Git for Windows Por…...

办公技巧:PPT制作技巧分享,值得收藏

目录 1、黑屏/白屏你用过么 2、图形组合替代动画刷 3、等距分布图形元素 4、快速统一字体 5、文本框也是可以改的 6、批量修改形状 7、搞定“怎么也选不中” 8、妙用CtrlD 9、图片阵列怎么做 10、临时放大某一区域 11、Word快速导入PPT 12、炫酷小人怎么做的&#…...

Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析

本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞&#xff0c;分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题&#xff0c;允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…...

前端怎么监听手机键盘是否弹起

摘要&#xff1a; 开发移动端中&#xff0c;经常会遇到一些交互需要通过判断手机键盘是否被唤起来做的&#xff0c;说到判断手机键盘弹起和收起&#xff0c;应该都知道&#xff0c;安卓和ios判断手机键盘是否弹起的写法是有所不同的&#xff0c;下面讨论总结一下两端的区别以及…...

本地生活服务平台加盟前景与市场分析

随着短视频市场的的不断发展&#xff0c;人们的生活方式也在发生着巨大的变化。在这个数字化的时代&#xff0c;越来越多的创业者开始注重本地生活服务&#xff0c;这也为创业者提供了一个绝佳的商机。加盟本地生活服务平台&#xff0c;既可以抓住这波风口&#xff0c;又可以满…...

蓝桥杯备战——7.DS18B20温度传感器

1.分析原理图 通过上图我们可以看到DS18B20通过单总线接到了单片机的P14上。 2.查阅DS18B20使用手册 比赛的时候是会提供DS18B20单总线通讯协议的代码&#xff0c;但是没有提供读取温度数据的代码&#xff0c;所以还是需要我们去查看手册&#xff0c;我只把重要部分截下来了 …...

黑盒测试用例的具体设计方法(7种)

7种常见的黑盒测设用例设计方法&#xff0c;分别是等价类、边界值、错误猜测法、场景设计法、因果图、判定表、正交排列。 &#xff08;一&#xff09;等价类 1.概念 依据需求将输入&#xff08;特殊情况下会考虑输出&#xff09;划分为若干个等价类&#xff0c;从等价类中选…...

docker镜像管理命令

文章目录 docker imagesdocker builddocker rmidocker tagdocker savedocker loaddocker importdocker commitdocker login/logoutdocker pulldocker pushdocker search总结 docker images 列出本地镜像。 docker images [OPTIONS] [REPOSITORY[:TAG]]OPTIONS说明&#xff1a…...

深入理解STM32中断处理机制

深入理解STM32中断及其使用方法&#xff08;基于HAL库&#xff09; STM32微控制器作为一款强大的嵌入式系统芯片&#xff0c;在各种应用中都需要使用中断来实现实时响应和处理各种事件。本文将深入讨论STM32中断的概念、HAL库的中断处理机制以及如何在STM32CubeMX中配置和使用…...

基于机器学习的地震预测(Earthquake Prediction with Machine Learning)

基于机器学习的地震预测&#xff08;Earthquake Prediction with Machine Learning&#xff09; 一、地震是什么二、数据组三、使用的工具和库四、预测要求五、机器学习进行地震检测的步骤六、总结 一、地震是什么 地震几乎是每个人都听说过或经历过的事情。地震基本上是一种自…...

《30天自制操作系统》 第一周(D1-D7) 笔记

前言&#xff1a;这是我2023年5月份做的一个小项目&#xff0c;最终是完成了整个OS。笔记的话&#xff0c;只记录了第一周。想完善&#xff0c;却扔在草稿箱里许久。最终决定&#xff0c;还是发出来存个档吧。 一、汇编语言 基础指令 MOV: move赋值&#xff0c;数据传送指令…...

SQL注入:报错注入

SQL注入系列文章&#xff1a;初识SQL注入-CSDN博客 SQL注入&#xff1a;联合查询的三个绕过技巧-CSDN博客 目录 什么是报错注入&#xff1f; 报错注入常用的3个函数 UpdateXML ExtractValue Floor rand&#xff08;随机数&#xff09; floor&#xff08;向上取整&…...

K8s 安装部署-Master和Minion(Node)文档

K8s 安装部署-Master和Minion(Node)文档 操作系统版本&#xff1a;CentOS 7.4 Master &#xff1a;172.20.26.167 Minion-1&#xff1a;172.20.26.198 Minion-2&#xff1a;172.20.26.210&#xff08;后增加节点&#xff09; ETCD&#xff1a;172.20.27.218 先安装部署ETC…...

OpenAI 降低价格并修复拒绝工作的“懒惰”GPT-4,另外ChatGPT 新增了两个小功能

OpenAI降低了GPT-3.5 Turbo模型的API访问价格&#xff0c;输入和输出价格分别降低了50%和25%。这对于使用API进行文本密集型应用程序的用户来说是一个好消息。 OpenAI官网&#xff1a;OpenAI AIGC专区&#xff1a;aigc 教程专区&#xff1a;AI绘画&#xff0c;AI视频&#x…...

springboot+value静态属性获取配置文件中的值的操作方法

1.配置类需要让spring管理 2.set方法不要加static 3.如果静态属性是private修饰&#xff0c;则在使用的时候&#xff0c;需要 类名.getXXX方法 如果静态属性是public修饰&#xff0c;则在使用的时候&#xff0c;需要 类名.属性名 import org.springframework.beans.factory.an…...

Prometheus 架构全面解析

在本指南中&#xff0c;我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统&#xff0c;能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标&#xff0c;并根据阈值收到警报。 此外&#xff0c;在当今世界&#xff0c;可观…...

把批量M3U8网络视频地址转为MP4视频

在数字媒体时代&#xff0c;视频格式的转换已成为一项常见的需求。尤其对于那些经常处理网络视频的用户来说&#xff0c;将M3U8格式的视频转换为更常见的MP4格式是一项必备技能。幸运的是&#xff0c;现在有了固乔剪辑助手这款强大的工具&#xff0c;这一过程变得异常简单。下面…...

联合 Maxlinear 迈凌 与 Elitestek 易灵思 - WPI 世平推出基于 FPGA 芯片的好用高效电源解决方案

近期 WPI 世平公司联合 Maxlinear 迈凌电源产品搭配 Elitestek 易灵思 FPGA 共同合作推出基于 FPGA 芯片的好用高效电源解决方案。 Elitestek 易灵思 FPGA 核心产品有 2 大系列 : Trion 系列与钛金系列。Trion 系列主要特点是 : 1. 40nm 工艺 2. 超低功耗 ( 可低至竞争对手的 …...

Keycloak - docker 运行 前端集成

Keycloak - docker 运行 & 前端集成 这里的记录主要是跟我们的项目相关的一些本地运行/测试&#xff0c;云端用的 keycloak 版本不一样&#xff0c;不过本地我能找到的最简单的配置是这样的 docker 配置 & 运行 keycloak keycloak 有官方(Red Hat Inc.)的镜像&#…...

架构篇27:如何设计计算高可用架构?

文章目录 主备主从集群小结计算高可用的主要设计目标是:当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可…...

Python 有用的库模块

简介 Python中有许多常用的库或者模块&#xff0c;在写代码的时候或多或少会遇到&#xff0c;本文对其进行总结&#xff0c;方便日后查阅。 pprint Python中的pprint模块是用于打印数据结构&#xff08;如字典&#xff0c;列表等&#xff09;的模块&#xff0c;提供了一种以…...

vivado DDS学习

实现DDS通常有两种方式&#xff0c;一种是读取ROM存放的正弦/余弦信号的查表法&#xff0c;另一种是用DDS IP核。这篇学习笔记中&#xff0c;我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT&#xff08;DDS&#xff09;的standard模式…...

微信小程序(十六)slot插槽

注释很详细&#xff0c;直接上代码 上一篇 温馨提醒&#xff1a;此篇需要自定义组件的基础&#xff0c;如果不清楚请先看上一篇 新增内容&#xff1a; 1.单个插槽 2.多个插槽 单个插糟 源码&#xff1a; myNav.wxml <view class"navigationBar custom-class">…...

gtest 单元测试

文章目录 前言一、Google Test介绍1.1 gtest源码下载编译1.2 常用API介绍1.3 gtest运行参数介绍 二、Google Mock参考资料 前言 Google Test&#xff08;简称gtest&#xff09;是一个开源的C单元测试框架。和常见的测试工具一样&#xff0c;gtest提供了单体测试常见的工具和组…...

掌握assert的使用:断言在错误检查和调试中不可或缺

断言在错误检查和调试中不可或缺 一、简介二、断言的基本语法和用法三、错误检查与断言四、 调试与断言五、避免滥用断言六、总结 一、简介 断言是一种在程序中用于检查特定条件是否满足的工具。一般用于验证开发者的假设&#xff0c;如果条件不成立&#xff0c;就会导致程序报…...

如何创建div做网站/广州网站优化价格

研发在早期的设计中&#xff0c;由于设计方面的问题&#xff0c;导致在设计表结构的时候&#xff0c;有个表有非空唯一索引而没有主键 在InnoDB存储引擎中&#xff0c;如果没有主键的情况下&#xff0c;有非空唯一索引的话&#xff0c;非空唯一索引即为主键。 那么这就会有个问…...

包头网站/北京seo产品

工作中用过这两个数据库&#xff0c;但都不是太深入&#xff0c;仅限于用而已&#xff0c;但给我留下的印象就是Pgsql更好些&#xff0c;因为这两个库我都遇到过数据丢失的问题&#xff0c;前者我通过网上方法加自己的判断有惊无险的恢复了&#xff0c;而后者搜索各种资料加问身…...

福建建设执业资格注册管理中心网站/在线超级外链工具

质量是衡量一个软件是否成功的关键要素。而对于商业软件系统&#xff0c;尤其是企业应用软件系统来说&#xff0c;除了软件运行质量、文档质量以外&#xff0c;代码的质量也是非常重要的。软件开发进行到编码阶段的时候&#xff0c;最大的风险就在于如何保证代码的易读性和一致…...

织梦网站为什么容易被注入/免费友情链接交换平台

矢量叉乘&#xff0c;向量外积 原创不易&#xff0c;路过的各位大佬请点个赞 矢量叉乘&#xff0c;向量外积矢量叉乘&#xff0c;向量外积1. 矢量叉乘定义2. 模长3. 方向4. 坐标运算6. 叉乘矩阵&#xff08;斜对称矩阵&#xff09;6. 叉乘运算规则1. 矢量叉乘定义 定义两个向…...

seo和sem是干什么的/seo有哪些作用

目前在用的是2020.1&#xff0c;想升级一下最新的2021.2。官网上下载的最新的&#xff0c;安装。安装完成后&#xff0c;首次启动&#xff0c;发现自动的在下载2020.1在用的插件。恩&#xff0c;很智能嘛。插件下载完后&#xff0c;没动静了。双击图面图标&#xff0c;依然没有…...

wordpress媒体插件/seo排名优化公司

‍‍老肥近期参加Kaggle平台的比赛&#xff0c;因为比赛类型为Code Competition&#xff0c;测试数据并不可见&#xff0c;我们需要将notebook代码在线提交进行推理&#xff0c;而因为测试集不可以见经常会遇到提交Error&#xff0c;同时报错完整的日志并不返回&#xff0c;只返…...