百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

五篇文章帮你开启DSP的学习思路

bigegpt 2024-09-11 01:14 10 浏览

关于DSP话题,很多电源工程师工作中会遇到不同的问题。其实找到问题的根源,才能对症下药。下面给大家分享几篇不错的文章,供大家学习~

FreeRTOS移植详解2-滴答定时器实现(基于Microchip dsPIC33C系列芯片)

在介绍内核裁剪之前,首先介绍一下滴答定时器的实现,为什么把它放在靠前的位置呢,因为这个东西相对于RTOS来说就像我们人类的心脏,是RTOS活着的基础。那么心跳如何实现呢,对于基于ARM架构的芯片(如ATSAMD21或ATSAMD51)通常用24位的SysTick定时器来实现,也就是大家常说的系统滴答定时器,通过该定时器为系统提供一个周期性的定时信号,该定时信号就是RTOS的心跳信号,通常也称为时钟节拍或系统节拍。对于dsPIC33C系列芯片,则可以用通用定时器Timer1(Datasheet中其框图如下图,红色字体为项目工程中的实际配置情况)来实现,每个Timer1时钟节拍中断都会触发OS内核执行一些系统调用,比如进行任务管理和任务切换等。

下面结合上面Timer1的框图一起来看下Timer1的初始化代码实现,该段代码在项目目录“./src/third_party/rtos/FreeRTOS/portable/MPLAB/PIC24_dsPIC”下port.c中实现,详见函数vApplicationSetupTickTimerInterrupt(),具体细节如下:

上图红色字体中前3项配置将在下一节内核裁剪中进行说明,这里需要知道以上TIMER1初始化代码的意思就是Timer1定时器要100us中断一次,且其中断优先级设置为最低优先级。那么Timer1的中断函数里做什么事情呢,代码实现同样在port.c中。

其大概意思就是通过xTaskIncrementTick()函数进行任务管理,如果当前任务的优先级有多个任务(同时configUSE_PREEMPTION和configUSE_TIME_SLICING配置为1,即 使能了时间片调度 ),那么就需要通过portYIELD()函数进行一次任务切换……

原文链接:https://www.dianyuan.com/eestar/article-701.html


DSP的硬件保护功能实现(三)

5. EPWM-TZ子模块

5.1. 内部组成

DC子模块的信号可通过3种方式配置到EPWM-TZ模块内部的故障控制模块,在系统故障时,实现对EPWM输出的控制。当DC子模块的信号触发时,可在TZ模块中产生中断。

5.1.1. 输入信号配置

此方案计划选择选择OSHT信号输入方式。

1、直接输入

DC子模块输出的force信号可直接接入到故障控制模块,故障控制模块直接对force信号做出响应,控制EPWM输出。

需注意,DCAEVT1/2.force信号只可直接触发EPWMA模块,DCBEVT1/2.force信号只可直接触发EPWMB模块。

2、CBC信号输入

可将DC子模块的force信号配置为CBC信号(Cycle-by-Cycle),当force信号触发时,CBC信号被触发,如果force信号撤销,CBC信号会被周期性的脉冲清除。CBC信号触发时,故障响应控制模块控制EPWM的输出,并可配置CBC信号触发中断。如果配置了CBC信号触发中断,则不再需要配置对应的DCxEVT2的中断信号。

需注意,仅DCxEVT2.force信号可触发CBC信号。

3、OSHT信号输入

可将DC子模块的force信号配置为OSHT信号(One-Shot),当force信号触发时,OSHT信号被触发,如果force信号撤销,OSHT信号会持续触发,直到手动清除信号。OSHT信号触发时,故障响应控制模块控制EPWM的输出,并可配置OSHT信号触发中断。如果配置了OSHT信号触发中断,则不再需要配置对应的DCxEVT1的中断信号。

需注意,仅DCxEVT1.force信号可触发CBC信号……

原文链接:https://www.dianyuan.com/eestar/article-339.html


TMS320F280X系列DSP开发——入门

对于TI的C2000系列dsp的新手来说,如何让开发板的LED点亮,是有一定的困难的。笔者就从一个初学者的角度,通过一步一步的具体操作,来让开发板的led闪烁。

开发板:笔者随便找了一个TMS320F2806的电路板,带有3个led灯。其中2个通过dsp的引脚控制,另外一个是3.3V电压指示。

仿真器:XDS100V3

集成开发环境:ccs11。

编译器版本:v21.6.0.LTS

1)打开CCS11。新建一个CCS工程

2)配置工程文件,工程名自己取。

按照上面的方法进行配置。在第5步时,要选择不带main.c的空工程,单击Finish。会出现如下图的工程目录结构:

3)继续配置工程属性:

在(1)处,单击右键,出现弹出菜单,单击(2)处。

在Products选项卡中,添加仿真器型号。

单击OK,将仿真器添加到工程文件中。

4)在工程目录中新建两个文件夹:include和source……

原文链接:https://www.dianyuan.com/eestar/article-4655.html


stm32F103使用ARM的DSP库

一、主要是如何移植

1.拷贝 CMSIS下文件到工程目录

在待移植的工程目录下新建DSPlib文件夹,用以存放DSB相关文件

2.在keil安装目录下找到CMSIS文件夹,进入内部,找到CMSIS\DSP下的include文件夹,将其拷贝到上一步DSPlib文件夹

3.同时,进入CMSIS\DSP\LIB\ARM文件夹下找到arm_cortexM3l_math.lib文件,拷贝到DSPlib文件夹

二. Keil软件的options for target中添加文件路径和关键字ARM_MATH_CM3

3. 包含头文件:#include "math.h"和#include "arm_math.h"编译一下

工程,根据报错添加头文件

添加#include "math.h"和```#include “arm_math.h”``到工程

编译一下工程,会报错缺少XXX.h,缺失的头文件可在keil安装目录下的CMSIS\Core\Include文件夹下找到,将其复制到之前创建的DSPlib\include文件夹下,完善DSPlib。其中,core_cm3.h文件要加入到DSPlib,如果之前工程有,则替换掉旧的……

原文链接:https://www.dianyuan.com/eestar/article-5336.html


数字控制芯片dsPIC33C的PWM运行模式简析

dsPIC33C系列芯片的PWM功能较以往更复杂,功能更加灵活,PWM的工作模式上和以往芯片也有一些不同之处,由于篇幅所限,本文侧重分析一下PWM模块在运行模式的种类及特性。

一.PWM运行模式概述

从图1上看,PWM的工作模式主要有几种,如独立边沿PWM模式,这也是默认设置的工作模式,变相位PWM模式,独立边沿PWM双输出模式,中心对齐模式,双更新中心对齐模式,双边沿中心对其模式等六种,其中后三种都是和中心对齐模式有关的模式。在这些PWM工作模式中,值得注意的是,有些模式采用多个PWM的时基周期去产生单个PWM周期。

在配置PWM的工作模式中,首先通过图2,3所示的寄存器配置PWM运行模式。

二.独立边沿PWM模式

独立边沿的PWM模式,用于产生边沿对齐的PWM信号,或者产生任意相位偏移的PWM信号,需要两个独立的寄存器去定义PWM波形的上升沿和下降沿位置。具体来说,通过PGxPHASE去定义PWM信号的上升沿位置相对于PWM周期计数器的起点的位置,而PGxDC用于定义相对于PWM周期计数器起点,到PWM波形下降沿的位置。PGxPER用于确定PWM计数器的周期。

另外,除了可以设定单个的PWM波形为独立边沿模式,还可以通过PGxPHASE寄存器来设定多个PWM信号之间同步,只要将PGxPHASE值设为相同值即可。

另外,还有一些特殊情况,比如当PGxPHASE=PGxDC时,则PWM脉冲占空比为0,而当设为PGxDC>PGxPER时,则PWM脉冲的占空比为100%。

通过图4所示的独立边沿PWM模式波形示例,可以看出PGxPHASE和PGxDC都是基于同一个起点开始计算,就是PWM周期计数器的起点,所以PHASE设置会占用脉宽大小的部分……

原文链接:https://www.dianyuan.com/eestar/article-5417.html


更多精彩内容,尽在电子星球 APP(https://www.eestar.com/)

宝藏半导体技术文章合集,送你!

来囤超超超多的技术仿真实例啦!

PWM搞不定,读完此文得心应手

快速入门PWM的技术难点,从此开始!

相关推荐

最全的MySQL总结,助你向阿里“开炮”(面试题+笔记+思维图)

前言作为一名编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的。对于求职者来说,MySQL又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来。实际上...

Redis数据库从入门到精通(redis数据库设计)

目录一、常见的非关系型数据库NOSQL分类二、了解Redis三、Redis的单节点安装教程四、Redis的常用命令1、Help帮助命令2、SET命令3、过期命令4、查找键命令5、操作键命令6、GET命...

netcore 急速接入第三方登录,不看后悔

新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢。如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下:https://oauthlogin.net/前言此次带来得这个小项目是...

精选 30 个 C++ 面试题(含解析)(c++面试题和答案汇总)

大家好,我是柠檬哥,专注编程知识分享。欢迎关注@程序员柠檬橙,编程路上不迷路,私信发送以下关键字获取编程资源:发送1024打包下载10个G编程资源学习资料发送001获取阿里大神LeetCode...

Oracle 12c系列(一)|多租户容器数据库

作者杨禹航出品沃趣技术Oracle12.1发布至今已有多年,但国内Oracle12C的用户并不多,随着12.2在去年的发布,选择安装Oracle12c的客户量明显增加,在接下来的几年中,Or...

flutter系列之:UI layout简介(flutter-ui-nice)

简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。在flutter中,基本上所有的对象都是wi...

Flutter 分页功能表格控件(flutter 列表)

老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来。PaginatedDataTablePaginatedDataTable是一个带分页功能的DataTable,...

Flutter | 使用BottomNavigationBar快速构建底部导航

平时我们在使用app时经常会看到底部导航栏,而在flutter中它的实现也较为简单.需要用到的组件:BottomNavigationBar导航栏的主体BottomNavigationBarI...

Android中的数据库和本地存储在Flutter中是怎样实现的

如何使用SharedPreferences?在Android中,你可以使用SharedPreferencesAPI来存储少量的键值对。在Flutter中,使用Shared_Pref...

Flet,一个Flutter应用的实用Python库!

▼Flet:用Python轻松构建跨平台应用!在纷繁复杂的Python框架中,Flet宛如一缕清风,为开发者带来极致的跨平台应用开发体验。它用最简单的Python代码,帮你实现移动端、桌面端...

flutter系列之:做一个图像滤镜(flutter photo)

简介很多时候,我们需要一些特效功能,比如给图片做个滤镜什么的,如果是h5页面,那么我们可以很容易的通过css滤镜来实现这个功能。那么如果在flutter中,如果要实现这样的滤镜功能应该怎么处理呢?一起...

flutter软件开发笔记20-flutter web开发

flutterweb开发优势比较多,采用统一的语言,就能开发不同类型的软件,在web开发中,特别是后台式软件中,相比传统的html5开发,更高效,有点像c++编程的方式,把web设计出来了。一...

Flutter实战-请求封装(五)之设置抓包Proxy

用了两年的flutter,有了一些心得,不虚头巴脑,只求实战有用,以供学习或使用flutter的小伙伴参考,学习尚浅,如有不正确的地方还望各路大神指正,以免误人子弟,在此拜谢~(原创不易,转发请标注来...

为什么不在 Flutter 中使用全局变量来管理状态

我相信没有人用全局变量来管理Flutter应用程序的状态。毫无疑问,我们的Flutter应用程序需要状态管理包或Flutter的基本小部件(例如InheritedWidget或St...

Flutter 攻略(Dart基本数据类型,变量 整理 2)

代码运行从main方法开始voidmain(){print("hellodart");}变量与常量var声明变量未初始化变量为nullvarc;//未初始化print(c)...