DSP原理及应用课程知识点汇总

DSP复习

1. DSP概述

DSP–>Digital Signal Processor

增强了运算能力,针对数字信号处理做了结构、指令优化功能增强

1.1 特点

  1. 采用流水线操作:在不提高时钟频率的条件下减少了每条指令的执行时间;

  2. 哈佛结构:数据总线和程序总线分离,比传统处理器的冯·诺依曼结构有更高的指令执行速度;

  3. 独立的硬件乘法器加法器:同一时钟周期内可以完成相乘、累加两个运算,适用于滤波、相关、矩阵运算等需要大量乘法累加运算的场合。

image-20240629215026247
  1. 零开销循环:处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1。

  2. 专门的寻址方式:模块(循环)寻址(对实现数字滤波器延时线很有用)

    ​ 位倒序寻址(间接寻址)(对FFT很有用)

  3. 优化的精简指令集

1.2 分类

  1. 按数据格式分:定点型、浮点型(F28335属于定点型)

  2. 按用途分:通用、专用(C2000、C5000、C6000)

image-20240629220141089

1.3 发展

1980年,日本NEC公司推出第一个具有乘法器的商用DSP芯片PD7720

2. TMS320F28335功能结构

2.1 概述

  1. CPU

    1. 32位定点CPU @150MHz
    2. 单精度FPU @150MHz
    3. 硬件乘加器
  2. 内存

    1. SARAM @34KW
    2. Flash @256KW
  3. 外设

    1. 控制类:I/O、定时器、ePWM、DMA
    2. 测量类:eCAP,正交编码器,ADC
    3. 通讯类:UART、SPI、I2C、McBsp、eCAN
image-20240629222435713 image-20240629222535534
四个32位CPU寄存器
image-20240629222809532

2.2 八级流水线

取指1(F1)、取指2(F2)、译码1(D1)、译码2(D2)

读1(R1)、读2(R2)、执行(E)、写(W)

一条指令一旦到达D2阶段,该指令将一直执行完毕

image-20240630160500415

2.3 总线结构

程序读总线、数据读总线、数据写总线(程序写数据总线数据写数据总线共用)(程序写地址总线程序读地址总线共用)

各类总线又分为地址总线和数据总线,只有程序地址总线是22位宽(寻址空间4M),其余都是32位宽(寻址空间4G)

image-20240630163247520

2.4 存储空间

image-20240630170849987

受保护区域:FLASH(128位CSM密码区)、L0~L3 SARAM、OTP

3. 时钟与系统控制

3.1 锁相环PLL

image-20240630183735454

功能:接收外部输入时钟,倍频后产生CPU时钟和系统时钟

3.2 看门狗Watchdog

功能:防止系统死机,确保程序正常运行

工作原理:看门狗模块使能时,其中增计数器开始增计数。计数器达到最大值时,产生复位脉冲信号使器件复位。通过“喂狗”指令在计数器达到最大值之前将其清零,使看门狗不产生复位信号。若程序跑飞或死机,“喂狗”指令不能在看门狗计数周期内得到执行,则计数器溢出产生复位信号使器件复位,从而使器件恢复正常运行。

工作时基为振荡器时钟OSCCLK(未经PLL倍频)

DSP复位时,看门狗默认开启

喂狗指令:向WDKEY寄存器先写入0x55,再写入0xAA

3.3 CPU定时器

3个32位CPU定时器,TIMER0/1/2,用户程序可使用TIMER0/1,TIMER2为DSP/BIOS保留。减计数

image-20240630185258954

CPU-TIMER0 产生PIE中断,CPU-TIMER1/2直接产生CPU级中断

image-20240630190046362

4. DSP程序结构

4.1 程序文件

  1. 源程序文件:C/C++、汇编语言文件,功能实现代码;

  2. 头文件:对基本的数据类型、变量类型进行定义,对常用的数值、指令等进行宏定义,对外部变量、函数进行声明;

  3. cmd文件对程序和数据存储空间进行分配

    1. Memory:用来标示实际存在目标系统中且可被使用的存储器范围,每个存储器范围具有名字,起始地址和长度。PAGE0规定程序存储器,PAGE1规定数据存储器
    2. Sections :描述输入段怎样被组合到输出段内;在可执行程序内定义输出段;规定在存储器内何处放置输出段。
    image-20240630192136749

    .cinit 存放已明确初始化的全局/静态变量的初始值

    .text 可执行代码和常量(立即数)

    .econst 已明确初始化的字符串、全局/静态常量(const声明)

    .ebss 存放未初始化的全局/静态变量;存放已明确初始化的全局/静态变量,程序复位后从.cinit中将初始值拷贝过来

    .stack 定义栈空间,用于现场保存、存放局部变量

  4. 运行支持库:C编译器所支持的ANSI标准运行支持函数、I/O函数、编译器公用程序函数和数学运算等。

image-20240630193248047

5. GPIO

5.1 GPIO概述

  1. 88个I/O口:A组GPIO0–31(32个),B组GPIO32–63(32个),C组GPIO64–87(24个)

  2. 每个I/O口最多复用为3个外设功能

  3. 复位默认设为I/O功能输入

  4. 支持8个外部中断功能

  5. 可提供4mA驱动电流

5.2 相关寄存器功能

以A组I/O为例

GPAMUX1 GPIOA(0~15)功能选择;GPAMUX2 GPIOA(16~31)功能选择

GPADIR GPIOA方向选择(输入/输出)

GPAQSEL1GPAQSEL2 GPIOA输入限制模式:SYSCLKOUT同步、采样窗限制、异步输入

GPAPUD GPIOA上拉功能配置

GPADAT GPIOA读写寄存器(一般情况下,GPxDAT作为GPIO输入寄存器使用,用于取I/O引脚的电
平状态)

GPASET 拉高

GPACLEAR 拉低

GPATOGGLE 翻转

6. 中断管理控制

6.1 中断概述

image-20240630213502105

18个CPU级中断,2个不可屏蔽中断,16个可屏蔽中断

6.2 三级中断控制

CPU级
image-20240630213812792

中断标志寄存器(IFR):系统复位自动清0,响应硬件中断自动清0,亦可用户手动清0

中断使能寄存器(IER):系统复位默认清0,响应硬件中断自动清0,亦可用户手动清0

全局中断使能位INTM

PIE级

PIE可管理96个中断,8个/组×12组,对应CPU级INT1~INT12,F28335中只使用了58个中断资源

image-20240630214632899

PIEACKx位为0时,允许INTx组向CPU发送中断请求;

PIEIFRx.y和PIEIERx.y同时为1时,PIE自动将PIEACKx置1,同时向CPU发送INTx组的中断请求;

PIEACKx置1后,禁止INTx组的后续中断请求,需软件写1清0

外设级

6.3 中断处理过程

image-20240630214917399 image-20240630215222790 image-20240630215544435

6.4 补充

中断向量与中断向量表

中断向量:中断服务程序的入口地址,CPU响应中断后需获取中断向量来开始执行中断服
务程序;

中断向量表:存储中断向量的地址空间,占用256×16的SARAM区

中断嵌套
image-20240630220440767
外部中断
image-20240630220644064 image-20240630220743133

7. 增强型脉宽调制器ePWM

7.1 概述

拥有6个相同的ePWM模块,每个模块可产生A、B两路PWM输出EPWMA EPWMB 和两路ADC启动脉冲信号SOCA SOCB,多个ePWM模块可级联同步工作;

基本用途:定时,PWM驱动,启动ADC(控制采样率)

周期和频率可控的16位时间基准计数器

7.2 结构组成

每个ePWM模块包含7个子模块:

image-20240702111900898 image-20240702112457848 image-20240702112757838

AQ动作触发事件优先级:发生较晚的事件具有较高的优先级,软件强制事件优先级最高。

7.3 PWM波形发生示例

增减计数方式下
image-20240702114721187
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;
image-20240702114953185
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBD = AQ_SET;
image-20240702115054231
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CBD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.PRD = AQ_SET;
增计数方式下
image-20240702115439908
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
image-20240702115619681
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLB.bit.PRD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
image-20240702115743607
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CBU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_TOGGLE;

7.4 死区发生(DB)子模块

针对传统需要死区控制的应用,通常选择AQ输出的EPWMxA作为DB的输入,产生一对带死区的EPWMxA和EPWMxB。

image-20240702120321898 image-20240702120714863

7.5 PWM斩波(PC)子模块

斩波频率可编程;第一个脉冲宽度独立可编程;第二个以后的脉冲占空比可编程。

image-20240702120923295

7.6 阻断控制(TZ)子模块

  1. DSP上有6个故障阻断输入引脚TZ1~TZ6,可独立用于检测外部故障信号;

  2. 阻断动作方式:置高、拉低、高阻、不动作;

  3. 阻断输入TZn的阻断方式可独立配置为单次阻断(OSHT)和周期阻断(CBC):

    1. 单次阻断(one-shot trip):单次故障触发、阻断动作持续,需软件清除故障条件,用于主要的短路故障和过流故障保护;
    2. 周期阻断(cycle-by-cycle tripping):故障条件周期检测、周期动作,故障消失时在新的PWM周期自动清除,用于限流保护。

8. 增强型捕获模块eCAP

8.1 CAP模式

基本原理:检测外部引脚边沿(捕获边沿);保存捕获边沿发生时的计数器值。

用途:事件间隔时间测量;脉宽、周期(频率)测量;转速测量。

  • 具有6个相同的eCAP模块,eCAP1-eCAP6,对应有6个捕获输入引脚eCAP1-eCAP6(每个捕获模块有一个捕获输入引脚),支持同步工作模式。

  • 32bit时间戳计数器

  • 计数时钟:SYSCLKOUT

  • 4个事件捕获单元CAP1~CAP4,有独立的时间戳捕获寄存器CAP1-CAP4(32bit),用于记录捕获引脚发生指定事件时的时间戳(计数器值);

  • 绝对时间戳捕获和差分时间戳捕获

  • 单次捕获与连续捕获

  • 不使用CAP功能时,eCAP模块可配置为APWM工作模式,产生一路非对称PWM波

image-20240702123815480
连续捕获

CAP1~CAP4依次连续循环捕获;每发生一次捕获事件,TSCTR值被装载到相应的捕获寄存器CAPx中,Mod4计数器加1;Mod4循环计数过程为0→1→2→3→0→…,依次控制捕获顺序为CAP1→CAP2→CAP3→CAP4→CAP1→…

image-20240702124046617
单次捕获

CAP1~CAP4依次捕获,每发生一次捕获事件, TSCTR值被装载到相应的捕获寄存器CAPx中,Mod4计数器加1;当Mod4计数器=[STOP_WRAP]且发生捕获事件后,Mod4计数器值和所有捕获寄存器值被冻结,完成一轮顺序捕获,且禁止后续捕获。软件重新使能捕获([RE-ARM] = 1)时,允许eCAP模块的新一轮顺序捕获,Mod4计数器自动清0并重新开始计数。

image-20240702124410331
绝对时间戳捕获

发生捕获事件CAPx时,TSCTR值被装载入捕获寄存器CAPx中,TSCTR不复位为0而继续计数

捕获寄存器装载的时间戳为绝对时间,两个事件的时间差需要软件读取捕获寄存器值并相减得到。

image-20240702124836306image-20240702124901453

差分时间戳捕获

发生捕获事件CAPx时, TSCTR值被装载入捕获寄存器CAPx中,TSCTR复位为0并继续计数

捕获寄存器装载的时间戳为两事件的时间差(差分时间),软件读取捕获寄存器值可直接得到两事件的时间差。

image-20240702125040362 image-20240702125055750

8.2 APWM模式

image-20240702123815480

分辨率32位

比较寄存器ACMP和周期寄存器APRD均带影子寄存器,可工作在双缓冲模式

影子寄存器装载到工作寄存器的条件:立即、CTR=APRD

8.3 中断事件

image-20240702125639875

9. ADC

9.1 概述

  • 单个ADC核,流水线结构(pipeline),12位分辨率
  • 最快采样速率为12.5MSPS(sample per second)(工作在25MHz时钟下,ADC采样率为25MHz÷2=12.5MHz,采样时间最少为一个ADC时钟周期,保持时间为一个ADC时钟周期)
  • 16个模拟输入通道(模拟电压输入范围:0~3V),(8个通道+多路复用器+1个S/H电路)×2组
  • 两种采样模式:同步、顺序
  • 通道的转换顺序可由自动排序器决定,一次可执行16个通道的自动转换,每次转换亦可编程选择任何通道
  • 两个独立的8通道排序器SEQ1、SEQ2:双排序模式级联单排序模式
  • 16个独立的转换结果寄存器,可单独访问,双映射,支持DMA访问
  • 多个SOC(start-of-conversion)触发源:软件直接启动EPWM1-6的SOCA、SOCB外部引脚触发GPIO_XINT2
  • 转换模式:启动/停止模式连续转换模式
  • 采样窗时间可配置(ACQ_PS)为1~16个ADC时钟周期
image-20240702131701909

9.2 排序器

image-20240702133141628 image-20240702133246745 image-20240702133445499 image-20240702133607435 image-20240702133816413 image-20240702134141115 image-20240702134356586

9.3 同步采样

  • 忽略CONVnn中的MSB位,同时启用S/H-A和S/H-B;
  • 一个排序器通道同时选中ADCINAx和ADCINBx进行采样/保持;
  • ADC核先转换ADCINAx,再转换ADCINBx;
  • ADCINAx和ADCINBx转换结果分别存放在ADCRESULTn和ADCRESULTn+1中。
image-20240702134930909 image-20240702135105447

9.4 启停/连续转换模式

image-20240702135327019

连续转换:fsmax=ADC采样率/通道数;启停模式:fs=SOC触发频率≤fsmax

ADC采样率计算方式,Example

假设ADCCLK = 25MHz,ACQ_PS=3,则采样时间为ACQ_PS+1=3+1=4个ADC时钟周期,保持时间为1个ADC时钟周期,ADC采样率为25MHz÷(4+1)= 5MHz

  1. ADC采集(采样&转换)一点数据需要多少时间?

答:ADC采样率为5MHz,采样周期t=1÷5MHz=0.2us

  1. CONV00 = 3, ADCMAXCONV=0x0000, 在顺序采样模式、连续转换模式下,启动SEQ1时,ADC转换哪些模拟输入通道?信号采样率是多少?

答:ADC转换ADCINA3通道,信号采样率为5MHz÷1=5MHz。

  1. CONV00 = 3, ADCMAXCONV=0x0000, 在同步采样模式、连续转换模式下,启动SEQ1时,ADC转换哪些模拟输入通道?信号采样率是多少?

答:ADC转换ADCINA3、ADCINB3通道,信号采样率为5MHz÷2=2.5MHz。

  1. CONV00 = 3, CONV01 = 9, ADCMAXCONV=0x0001, 在顺序采样模式、连续转换模式下,启动SEQ1时,ADC转换哪些模拟输入通道?信号采样率是多少?

答:ADC转换ADCINA3、ADCINB1通道,信号采样率为5MHz÷2=2.5MHz。

  1. CONV00 = 3, CONV01 = 9, ADCMAXCONV=0x0001, 在顺序采样模式、启动/停止模式下,通过EPWM1(设计数周期=1ms)的下溢事件启动SEQ1,ADC转换哪些模拟输入通道?信号采样率是多少?

答:ADC转换ADCINA3、ADCINB1通道,信号采样率为1÷1ms=1kHz。

  1. CONV00 = 3, CONV01 = 9, ADCMAXCONV=0x0001, 在同步采样模式启动/停止模式下,通过EPWM1(设计数周期=1ms)的下溢事件启动SEQ1,ADC转换哪些模拟输入通道?信号采样率是多少?信号采样率最高可设为多少?

答:ADC转换ADCINA3、ADCINB3和ADCINA1、ADCINB1通道;信号采样率为1÷1ms=1kHz;信号采样率最高可设为5MHz÷4=2.5MHz。

连续转换:fsmax=ADC采样率/通道数;启停模式:fs=SOC触发频率≤fsmax

9.5 ADC时钟配置示例

image-20240702140027602

ADC对2.048V的外部基准电压进行了工业标准基准元件匹配

9.6 ADC转换结果

数字量化结果与模拟输入电压之间的转换

D i g i t a l 4095 = I n p u t   A n a l o g   V o l t a g e 3 \frac{Digital}{4095}=\frac{Input\ Analog\ Voltage}{3} 4095Digital=3Input Analog Voltage

image-20240702140913911
int value;
float voltage;
value = AdcRegs.ADCRESULT0 >> 4;
voltage = (value/4095.0)*3.0;

10. 串行同步通信SPI模块

10.1 SPI概述

  • SPI(Serial Peripheral Interface――串行外设接口)
  • 多用于MCU与各种外围设备(括A/D转换器、D/A转换器、LCD、EEPROM、网络控制器、MCU)之间通信;
  • SPI总线接口一般使用4根线:串行同步时钟线CLK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS;
  • SPI总线至少包括1根串行同步时钟信号线和1根数据线;
  • 一主多从,主机发送同步时钟信号,控制通讯。
image-20240702142259177 image-20240702142802009 image-20240702142620981

10.2 C28x 增强型SPI模块

F28335片上只有一个SPI模块

image-20240702143137941 image-20240702154207836 image-20240702143426951

11. 串行异步通信SCI模块

11.1 串行通信概述

  • 帧同步:收发双方不使用串行同步时钟,由双方各自的时钟实现数据帧的同步,但要求双方使用同一标称频率,允许有一定偏差。要正确传输数据帧,准确读取每一位时必须用各自的时钟同步的,为克服不同时钟的偏差,每个数据帧都有一个起始位进行同步;
  • 典型的异步串行通信接口:RS-232、RS-422/485、USB等;
  • RS-232C接口采用EIA电平:低电平为+3V~+15V;高电平为-3V~-15V(负逻辑),2发3收5接地;TTL与232电平转换芯片RS232;
  • RS-485总线采用差分传输方式

11.2 C28x 增强型SCI模块

F28335片上有三个完全相同的SCI模块:SCIA、SCIB、SCIC

image-20240702144450454 image-20240702144543783 image-20240702144804819 image-20240702145004072 image-20240702145149216 image-20240702145316282 image-20240702145554040

12. 应用实例

12.1 最小系统

确保DSP能正常工作的最小配置的系统

基本配置——DSP芯片、电源、复位电路、晶振、JTAG口

image-20240702150036205

12.2 BLDCM实验

image-20240702154346604

13. 简答题

  1. 数字信号处理算法有什么共性特点?为什么 DSP 具有强大的数字信号处理能力?
    1. 所需运算能力强
    2. DSP增强了运算能力,针对数字信号处理做了结构、指令优化和功能增强
  2. 冯诺依曼总线结构与哈佛结构相比,各自有什么样的优缺点?
    1. 哈佛结构:程序和数据总线分开,硬件结构复杂,价格高;优点:效率高
    2. 冯诺依曼结构:程序结构和数据结构合体,效率低 ;优点:简单便宜
  3. 定点型CPU 与浮点型 CPU 相比,各自有什么样的优缺点?
    1. 定点型CPU简单功耗低
  4. 当前TI C28系列DSP 常见的型号有哪些?其CPU 是定点型还是浮点型?其中,哪些型号的DSP 带有浮点协处理器(FPU)?
  5. F28335的编译调试环境是什么?汇编器、链接器、软件模拟器作用是什么?源程序文件、头文件、命令文件、运行支持库文件分别有哪些,有什么功能? Memory、Sections指令功能是什么?
    1. CCS
    2. 汇编器(Assembler):将汇编语言源文件转变为基于公用目标文件格式(COFF)的机器语言目标文件.obj
    3. 链接器(Linker):将一个或多个由编译器或者汇编器生成的目标文件,外加库,链接为一个可执行文件,即目标代码(.out) .
    4. 软件模拟器(Simulator):脱离硬件的纯软件仿真工具。模拟运行DSP程序,同时对程序进行单步执行、设置断点,对寄存器/存储器进行观察、修改,以及统计某段程序的执行时间等。
  6. F28335的GPIO接口一共多少个?有哪些输入限制模式?配置步骤是什么?
    1. 88个
    2. 三种模式:SYSCLKOUT同步、采样窗限制、异步输入
    3. ①规划引脚功能 ②使能或禁止内部上拉功能③对输入引脚进行限制④配置引脚的功能.⑤对于通用数字IO口,配置引脚的方向⑥选择低功耗模式唤醒源⑦选择外部中断源
  7. 什么是中断?F28335的中断流程是什么?中断触发源有哪些?如何配置外设中断,使外设能向CPU发送中断请求且CPU能执行相应的中断服务子程序?
    1. 中断是CPU对系统发生某个事件作出的一种反应、中断事件发生时,CPU暂时中止正执行程序、保留现场,然后自动转去执行相应事件处理程序,处理完成后返回断点继续执行被打断的源程序;
    2. F28335中断流程是:中断请求→中断使能→CPU中断响应
    3. 中断触发源:软件中断、硬件中断、可屏蔽中断、不可屏蔽中断
  8. 关于增强型脉宽调制器(ePWM),有哪些计数事件?有哪些计数比较事件?有哪些动作限定(AQ)子模块的动作方式、触发事件?如何产生PWM波形?
    1. ①由TB子模块产生计数时基,CC子模块中的CMPA/CMPB与TBCTR 比较,产生计数事件.②由AQ子模块中的动作限定控制寄存器AQCTLA和AGCTLB独立配置EPWMXA输出和EPWMXB输出的触发事件.和动作形式.③PWM周期由TBPRD控制,占空比由CMPA/CMPB控制。
  9. 关于增强型捕获模块(eCAP),基本工作原理是?有哪些功能特点?连续、绝对时间戳捕获模式是什么?连续、差分时间戳捕获模式是什么?
  10. 关于ADC模块,有几个模拟通道、S/H采保器、转换核心、结果寄存器?A/D工作模式有哪些?如何配置采样率?
  11. SPI通信基本工作原理?一般包括几根总线?具有什么优势?有哪些时序配置?有哪些工作方式?增强特征是什么?
  12. 标准SCI模块结构是什么?数据帧格式是什么?空闲线模式和地址位模式是什么?
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月月如常

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值