关于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/)