
DSP
文章平均质量分 87
booksyhay
这个作者很懒,什么都没留下…
展开
-
CCS安装编译器的方法
TI公司的编译器叫CGT:code generation tools先下载所需版本的CGT到TI官网找CGT在www.ti.com.cn上搜索CGT,即可找到C2000-CGT:C2000代码生成工具-编译器也可以直接到这里找:C2000-CGT IDE、配置、编译器或调试器 | TI.com.cn查看 TI C2000-CGT IDE、配置、编译器或调试器 的下载量、描述、特性和支持文档并开始设计。https://www.ti.com.cn/tool/cn/C2000-CG原创 2022-05-27 09:48:58 · 11389 阅读 · 5 评论 -
再说说EPWM模块的全局加载
之前总结了EPWM模块的影子寄存器及其加载机制。EPWM模块的影子寄存器_booksyhay的博客-优快云博客对于1型的EPWM模块,功能比较简单。影子寄存器主要针对的是PRD和CMP两类寄存器。TBPRD及其影子寄存器PRD的影子寄存器由TBCTL[PRDLD]标志位来控制。当PRDLD=0(默认值)时,使能影子寄存器。使能后,只有时基计数器TBCTR等于0的时候,TBPRD才从影子寄存器加载到活动寄存器。当PRDLD=1时,PRD的影子寄存器无效,软件写入TBPRD时立即生效。CMPA/CMPB原创 2022-04-23 15:07:54 · 2360 阅读 · 0 评论 -
EPWM模块的影子寄存器
对于1型的EPWM模块,功能比较简单。影子寄存器主要针对的是PRD和CMP两类寄存器。TBPRD及其影子寄存器PRD的影子寄存器由TBCTL[PRDLD]标志位来控制。当PRDLD=0(默认值)时,使能影子寄存器。使能后,只有时基计数器TBCTR等于0的时候,TBPRD才从影子寄存器加载到活动寄存器。当PRDLD=1时,PRD的影子寄存器无效,软件写入TBPRD时立即生效。CMPA/CMPB及其影子寄存器下面以CMPA为例进行说明。CMPB的情况是一样的。原创 2022-03-24 16:29:04 · 4066 阅读 · 1 评论 -
详细总结EPWM模块之间的同步
活动寄存器与影子寄存器EPWM模块中很多寄存器都分为活动寄存器和影子寄存器。典型的,比如计数周期寄存器PRD,平时在中断里面更新PRD的值来改变PWM波的频率时,并不是立即生效,而是等到计数器计到0后在下一个计数周期中生效。TBPRD寄存器的加载在早期的ePWM模块设计中,PRD寄存器的加载与以下配置有关:说明:Active Period Register Load From Shadow Register Select0:The period register (TBPRD)原创 2022-03-23 14:45:11 · 10637 阅读 · 0 评论 -
TMS320F280025(DSP)配置ADC超出范围就关闭PWM
项目需求硬件设计时没有使用CPU的TripZone功能实现过压保护/过流保护。希望通过DSP的配置来实现。设计思路就是将ADCx.EVTy通过ePWMX-Bar送到ePWMx的TripZone。具体配置ADC的后处理模块(PPB)本款DSP有2路ADC,每路ADC有4个Post-Processing Block。每个PPB模块可以输出一路事件和一路中断信号。这里就利用ADC后处理模块的“超过上限”事件来实现。需要配置的有:PPB模块使能; ADCPP..原创 2022-01-13 10:14:50 · 5981 阅读 · 8 评论 -
对高精度PWM(HRPWM)的理解
传统PWM的精度假定CPU工作频率为100MHz。PWM模块的计数频率也一样,则计数周期为10ns。假设PWM的开关频率为1MHz。使用向上计数模式。那么,计数周期PRD等于100.此时,比较值只能在0~100里面选。占空比的精度只有1%。也就是说,只能产生24%、56%这种整数的占空比,不能产生26.5%这种占空比。如果计数模式是使用“向上向下计数”,那么精度还会再降一半。这个精度是由PWM的“计数器和”“比较器”的原理决定的。因为PRD和CMPA都是整..原创 2021-10-21 18:01:33 · 19957 阅读 · 24 评论 -
28388D上电时从BOOT跳转到main过程分析
上一篇原创 2021-10-19 09:51:31 · 1956 阅读 · 0 评论 -
28388D上电过程汇编代码分析
复位向量复位向量的地址统一在0x3F FFC0处。0x003FFFC0处保存的是复位向量的地址,其值为0x003FD2AE。复位后CPU的状态PC指针指向0x003FD2AE,栈指针SP指向0x0400,XAR0寄存器为0xFFFFFFFF,其他寄存器全为0.进入InitBoot0x003FD2AE地址处保存的是厂家固化的InitBoot。汇编指令为:InitBoot的汇编源码可以找到其汇编源代码:D:\ti\c2000\C2000Ware_..原创 2021-10-18 17:11:26 · 1424 阅读 · 1 评论 -
28388D上电过程汇编代码分析
复位向量复位向量的地址统一在0x3F FFC0处。0x003FFFC0处保存的是复位向量的地址,其值为0x003FD2AE。复位后CPU的状态PC指针指向0x003FD2AE,栈指针SP指向0x0400,XAR0寄存器为0xFFFFFFFF,其他寄存器全为0.进入InitBoot0x003FD2AE地址处保存的是厂家固化的InitBoot。汇编指令为:InitBoot的汇编源码可以找到其汇编源代码:D:\ti\c2000\C2000Ware...原创 2021-10-18 17:07:43 · 1253 阅读 · 0 评论 -
CCS中的IER和IFR寄存器:Symbol ‘IER‘ could not be resolved
问题现象main函数初始化时,关闭CPU的中断使能,清除不断标志,一般都是这么写的: IER = 0x0000; IFR = 0x0000;但是,CCS却提示:Symbol 'IER' could not be resolved可是呢,编译整个工程时,也不会报错。<Linking>Finished building target: "DCDC.out""D:/ti/ccs1040/ccs/utils/tiobj2bin/tiobj...原创 2021-10-16 11:17:03 · 11945 阅读 · 7 评论 -
TI C28x DSP的中断嵌套
介绍一个常见的问题是 C28x 中断是否可以嵌套。本文解释了如何通过对中断服务例程 (ISR) 代码进行简单更改来实现中断嵌套。本文假设读者已经熟悉以下内容: C28x PIE 模块:控制寄存器、向量表、PIE 组 C28x 中断控制寄存器:特别是 IER、IFR、INTM。 有关这些主题的更多信息,请参阅以下内容: TMS320C28x CPU 和指令集参考指南 (spru430) 中记录了 CPU 级别的中断以及 CPU 如何响应中断 该研讨会材料包含的C2.原创 2021-09-17 15:09:59 · 5976 阅读 · 1 评论 -
C28x 中断上下文的保存和恢复
C28x 上下文保存和恢复介绍本文介绍了 C28x CPU 的自动上下文保存/恢复。这也适用于带有 FPU 和 VCU 扩展的设备。其他资源上下文保存和恢复的详细内容在 《C28x TMS320C28x CPU 和指令集参考指南》(TMS320C28x CPU and Instruction Set Reference Guide (Rev. F)-spru430f.pdf)文档中。堆栈基础首先是关于 C28x 堆栈指针的一些事实:C28x 堆栈指针 (SP) 始终指向堆栈中的.原创 2021-09-17 14:39:26 · 1380 阅读 · 0 评论 -
TMS320C28x的中断
中断架构总览说明:总共有16路中断送入CPU。其中INT1~INT12的来源是ePIE,INT13和INT14是TIMER1和TIMER2.另外还有NMI和RTOSINT TIMER0中断与TIMER1和TIMER2不同,它不是直接送给CPU,而是先送到ePIE。 外部输入中断:从GPIO口经过Input X-BAR的选择后送给XINT1~XINT5,再送到ePIE 其他外设的中断都是先经过ePIE。中断传播路径说明:外设中断先到达外设中断标志寄存器中锁存:PIE...原创 2021-09-17 11:25:50 · 3459 阅读 · 0 评论 -
关于ITRAP中断
The ITRAP Interrupt问:是什么导致了非法 (ITRAP) 中断?无效指令被解码(这包括无效寻址模式)。操作码值 0x0000 被解码。 该操作码对应于 ITRAP0 指令。操作码值 0xFFFF 被解码。 该操作码对应于 ITRAP1 指令。32 位操作尝试使用@SP 寄存器寻址模式。地址模式设置 AMODE=1 和 PAGE0=1 是非法组合。问:如何调试 ITRAP?ITRAP 通常是堆栈溢出或缓冲区溢出的标志。要快速查看它是否是堆栈,您可以原创 2021-09-09 10:18:41 · 952 阅读 · 0 评论 -
TMS320F280025的BOOT流程
CPU启动流程根据启动时是否连接了仿真器,分为两种情况:Standalone Boot Emulation Boot独立运行时的流程Standalone Boot先看整体流程图:BOOT管脚配置BOOTPINCONFIGBOOT开始时,首先读取管脚配置PINCONFIG。管脚配置有2组:Z1和Z2.Z2的优先级比Z1的高。当Z2有效时,会忽略Z1的配置 。由于这个配置是一次性写入的,写入之后不能更改。因此,通常情况下,先全能Z1配置,保留...原创 2021-09-08 10:49:22 · 4598 阅读 · 1 评论 -
Device_init跑飞了
问题现象参考官方例程,写了个很简单的闪灯程序。但是,一跑就飞。使用仿真器,单步跟踪,发现main函数中的第一行都运行不过去:Device_init() // // Initialize device clock and peripherals // Device_init();进到里面,发现跑到SysCtl_setClock()函数中的SysCtl_delay(23U);就崩掉了。 // // Bypass PLL原创 2021-09-06 13:52:42 · 1100 阅读 · 0 评论 -
TMS320F280025的时钟
参考文档:https://www.ti.com.cn/cn/lit/pdf/spruin7TMS320F28002x Microcontrollers Technical Reference Manual (Rev. A)(英文內容)Chapter 3System Control and Interrupts时钟树锁相环时钟树中的SYSPLL(上图中红圈位置)展开后如下:锁相环时钟流时钟源:参考时钟为OSCCLK。根据OSCCLKSRCSEL寄存器来...原创 2021-09-03 10:53:07 · 2614 阅读 · 0 评论 -
增强型脉冲宽度调制模块(ePWM)图解
模块概览子模块主要包括8个子模块:每一组PWM模块的输入信号主要有: 类别 信号 功能 同步信号 EPWMxSNYCI 同步输入信号 TripZone TZ1~TZ3 TripZone输入 TRIPIN TRIPIN1~12 ..原创 2021-08-31 14:03:22 · 8683 阅读 · 0 评论 -
TMS320F28xx ADC转换图解
ADC模块框图ADC Module Block Diagram说明:左上角为ADC的核心模块,实现AD转换功能。 左下角为参考电压选择模块 右上角为模数封装逻辑。其中:核心部分为采样保持电路(S/HCircuit)和AD转换器。 有16路启动转换(SOC) 4路后处理模块(PPB) 4路中断模块信号模式28002x只支持单端信号模式。转换结果与参考电压之间的关系为:启动转换(start-of-conversions,SOC)...原创 2021-08-31 09:44:16 · 1992 阅读 · 0 评论 -
串行通信接口SCI图解
结合DSP的SCI章节,详细讲解SCI通信原理。参考资料:TMS320F28xx技术参考手册:Serial Communications Interface (SCI)SCI模块总览说明:SCI模块有两路时钟输入(图中红色箭头)。一路是工作时钟(SYSCLK),另一路是位时钟,用于产生波特率时钟。位时钟来源于系统低速外设时钟(LSPCLK),并由外设时钟控制寄存器控制(PCLKCR7)。工作时钟频率比位时钟要高得多,要不然怎么能够对每一个bit通信位进行多次检测呢?(有些..原创 2021-08-20 17:29:17 · 14126 阅读 · 0 评论 -
DSP的DMA流程详解(状态图)
DMA传输涉及到的概念关于DMA传输中的burst、transfer、wrap等概念,请参考上一篇:https://blog.youkuaiyun.com/booksyhay/article/details/87790497DMA流程总览这里截取DSP器件的技术参考手册中的状态图。高清原图请参考手册的pdf文档。传输的开始和结束先来看一看整个流程图的开始位置和结束位置。连续模式在结束位置的右边,涉及到的是“连续”模式 。如果禁用连续模式(NO分支),则单次DM..原创 2021-08-16 17:30:18 · 4560 阅读 · 0 评论 -
一文看懂DSP的DMA传输(burst、transfer、wrap)
导出Elevator_Manager函数和数据,使其对原子子图可见Modeling anElevatorSystem Using Atomic Subchartshttps://ww2.mathworks.cn/help/stateflow/examples/modeling-an-elevator-system-usin...原创 2021-08-16 16:21:00 · 14920 阅读 · 8 评论 -
DSP运行main之前,不会将全局变量置为0
调试时发现,在程序运行到main时,未赋初值的全局变量不会被置为0,而是随机数。并且,给全局结构体变量赋初值时,如果只写前面一部分成员的初值,则后面成员的值也不会置为0.C标准里面应该是有明确规定的,对于上面的两种情况,应该赋值为0。CCS编译器不符合C标准?原创 2013-07-19 13:20:43 · 1519 阅读 · 1 评论 -
DSP28016每个内存地址对应的都是16位(2字节),没有8位的整数
把ARM Cortex M3上的一段代码移植到DSP TMS320F28016上时,发现这个定点DSP中没有UINT8的类型,只有16位和32位的整数。定义一个char实际上也是占用一个字(16位)。并且每一个内存地址对应的也是一个字(2个字节)。typedef union unCanFrameData{ BYTE abyData[8]; WORD awdData[4]; UI原创 2013-07-19 09:46:42 · 3716 阅读 · 0 评论 -
DSP中断系统及其应用
TMS320F2812学习笔记 中断系统及其应用 2812的中断是3级中断机制,分别是外设级,PIE级以及CPU级,对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会执行该外设中断。(1)外设级 外设产生中断时,该中断事件相关的中断标志位(IF)置1。此时,如果该中断相应的中断使能寄存器(IE)也置为1,外设就会向PIE控制器发出一个中断请求。如果外设级中断没有转载 2012-08-15 08:47:35 · 1775 阅读 · 0 评论 -
PIE: 外设中断扩展
PIEPeripheral Interrupt Expansion外设中断扩展原创 2012-08-15 09:24:00 · 1334 阅读 · 0 评论