- 本课程为精品课,您可以登录eeworld继续观看:
- (14) - CLA模块
- 登录
- 课程目录
- 相关资源
- 课程笔记
这一章我们讲C2000最突出的部分
CLA
这章分为3部分 第一部分是CLA的设计目的
以及工作原理
第二部分 CLA的初始化过程
第三部分 CLA的寄存器 编程流程 调试流程
CLA是C2000非常特殊的一个协处理器
可以通过自定义的程序
和CPU并行处理程序 CLA是一个32位的浮点型内核
可以直接进行浮点数的运算
主要处理CPU中断时来不及处理的算法
分担CPU的负载率
CLA可以控制PWM
HRPWM capture以及读取ADC的结果寄存器
及控制比较器等等
在F2837X产品中 CLA还可以控制
DAC SDFM SPI MCBSP GPIO以及UPP外设
让CLA控制更加灵活
还可以分担CPU通讯的负载
我们看看CLA的架构 由八个任务构成
任务1到8 任务1的优先级最高 任务8最低
CLA有自己的地址总线 和数据总线
分别和它数据和RAM通讯
还有一个和CPU交互的RAM空间
同时 CPU数据总线 还可以控制刚才提到的外设
任务方面 CPU任务结束后 还可以触发CPU的中断
以及CPU CLA任务的完成
我们看看CLA的组成结构
CLA的程序和数据空间 是LS0到4的RAM区域分配
可以设置6个量 [听不清]的RAM任务
给程序和数据
当然至少占用一个2K的RAM
分配个CLA的RAM区域 由CLA读写
CPU的控制权被降低
这是RAM分配 初始化 CPU的程序初始化的时候
进行处理
另外 还有128个word的交互区域
用于CPU和CLA的数据交互
同时 在DMA的章节提到了
PF外设必须有CLA或DMA单独控制
并且只能选择其一
当然 默认CLA控制
UDC寄存器和GPL数据
进行控制
CLA的8个任务相当于CPU的中断
每个任务都可以被多个软件或外设触发执行
但区别是 一个任务一旦执行 就不能被其他高优先级的任务打断
只能等到它执行完
才可进行新任务 这相当于CPU不支持中断嵌套的一个功能
CLA可以通过软件触发
有两种写法 第一种是通过MIFRC寄存器
写到对应位 比如CLA任务4 就是在MI FORCE.BIT.INT4-1
写上1 就被软件触发跑CLA task4的任务
还可以通过写IACK指令
也就是在汇编混合编程中
写IACk 后面写对应的数据
就可以触发相对应的任务
CLA有自己的优先级[听不清]
以及 MIFR MIER
在CLA中称为MIFR MIER
用于选择使能不同的任务
每次当一个触发源生效
就会选择相应的更高优先级的任务 载入MVECT
入口 也就是CLA的程序入口指针
到MPC 也就是程序指针地址
开始运行其中的程序
所有程序在program RAM中
读取 如果要读取数据
就需要到data memory中读取
而data RAM从MAR0MAR1读取数据
而MAR0和1是CLA的辅助寄存器
由于CLA本身是浮点内核 所以它的运算结果
都会存在MR0到3寄存器中
这张表我们简单看看CLA的寄存器
主要是 设置 状态 控制寄存器
首先是控制寄存器
主要是使能或禁止CLA的任务
以及软硬件的复位功能
CLA的RAM分配 前面提到了
这些寄存器在CPU中设置 可以把LS0到5
分配个CLA的数据和程序功能
也可以让某些区域不分配
所以这些RAM还可以还给CPU使用
也就是相对应 LS5可以分配给CPU
也可以分配给CLA
CLA的8个任务 都可以选择触发源
下一页有一个触发源表
当然 可以选择软件触发
只要给每个寄存器的位写上0即可
这一页是CLA的任务触发源
可以是ADC的中断事件
PWM的中断事件 定时器 MCBSP
ECAP EQEP SDLM
UPP以及SPI的中断
或者事件来触发
CLA的每个任务都可以触发CPU的中断
所以 中断寄存器用于CPU中断的使能
CLA的初始化流程 比较简单
由6步组成 第一步在程序CMD中设置好CLA的下载地址
然后初始化时 把它拷贝到RAM
然后初始化CLA的RAM
接下来 初始化CLA的配置寄存器
包括使能CLA的时钟
写入函数地址 设置终端源 同时强制触发下一个CLA的
优先级任务来初始化CLA的RAM
第四步 是可选步骤
设置CLA任务来触发CLA中断
使能任务的MIER寄存器就可以
最后 设置触发任务的外设
这一页 重点提一下 如果要用CLA
就需要检查在项目的属性选项中
[听不清]是否使能了CLA
如图所示
如果是CLA0或者11 说明在编译器中使能了
CLA程序的特殊编译
CLA可以用C语言或者汇编语言编程
C语言用于对实时性要求没那么高的任务
C语言的优点就是可读性较高
编程比较方便 而汇编语言主要用于
高实时性控制的 当然对于编程方法
以及可读性会降低
CLA的数据定义和CPU不同
这里重点的是CLA不支持任何64位数据定义和运算
无论是long long或者long double型
在CLA的定义中
都会定义为32位 这一点和CPU非常不同
CLA的[听不清]定义也不一样
CLA不支持全局 或者静态变量的直接初始化
CLA的C语言文件 由.cla结尾
在.cla文件中 不能直接初始化全局变量
而是需要在.c文件中初始化好
然后在CLA中调用 或者直接使用宏定义定义好
当然可以用一个CLA任务 来运行
然后改变它的值来初始化
同时 这里重点提出的是 CLA静止函数的低轨应用
以及指针的使用
CLA不支持一些标准C的运算 比如除法去除运算
以及无符号32位整形的数据比较
但是 TI提供一整套CLA的数学库
在controlSUITE中可以找到 名字是CLA math
这个库里以适合CLA预算的方式 提供一套高效率的数学运算库
这张图我们看到 在controlSUITE中
我们提供非常多的CLA历程供用户测试
如图所示
CLA的应用 和CPU一样
它的预算会产生临时数据 所以CLA需要自己的堆栈
这里叫做sctratchpad
主要用于CLA存储临时数据
但这个区域需要在CMD中固定定义一个CLA的RAM给它
这边举例 我们把它定义在RAM L40中
当然 前提是RAM L40已经分给CLA
作为数据存储单元
这一页我们看看CAL的C语言程序举例
任务1触发为例
CLA的C语言程序 需要写在.cla的文件里
编译器才会识别
这个界面提到 对于程序 复制语句等等
都会存储于程序空间 临时变量 比如xdelay
等数组都会存储在数据空间
全局变量或者静态变量 也会存在数据空间
在程序中 使用的寄存器图文件
从LAB.H的库中调用
最后结尾的大括号[听不清]
会用mstop语句代替 表示任务的结束
CLA的初始化头文件 LAB.H主要是定义CLA的数据类型
以及调动外设的寄存器库
CLA的任务在程序中 被定义为中断类型函数
在.cla文件中 复制地址给对应CLA的寄存器
最后 我们看看最重要的CLA调试
它非常方便 简单
不需要额外的JTAG路
CPU功能一个JTAG的口
可以单步 全速运行调试
但是 CLA的单步是一个CLA的指令周期进行
不是常规和CPU一样 单个指令 单个语句的调试
有很大区别
主要分为6步
第一步 需要CLA任务在停下来的地方 加入medbugstop指令
可以用C语言或者汇编指令
第二步 在CCS调制中 连接你的CLA设备
第三步 运行CPU程序
这样 CLA会在CPU运行时
被触发
第四步 在CCS中 选择CLA 然后load code symbol
这样进入第五步
load symbol后 程序会停在刚刚设定的mdebugstop指令处
然后这个时候 我们就可以单步调试CLA程序了
但是如果有其他任务在等待
CLA会从其他任务的结尾处执行
最后 如果你不想调试CLA
那可以在连接的时候就disconnect CLA
这样CLA会在后台 自动全速运行它的程序
课程介绍
共计28课时,4小时27分22秒
C2837x入门指南
TI C2000 MCU PWM F2837xD ADC DAC DMA CLA C2837x CMP SDFM CAP QEP c28x
F2837x系列的最新 C2000™ Delfino™ 32 位 F2837xD 微控制器 (MCU),为工业实时控制实现最新创新,并设定了全新性能标准。这些最新 MCU 支持双核 C28x 处理功能与双实时控制加速器(也称为控制律加速器或 CLA),可提供 800 MIPS 浮点性能,从而可帮助设计人员为计算要求严格的控制应用开发低时延系统。此外,设计人员还可通过将多个嵌入式处理器整合在单个 MCU 中以降低复杂性,充分满足高级伺服驱动器、太阳能中央逆变器以及工业不间断电源 (UPS) 等需要实时信号分析的应用需求。
猜你喜欢
换一换
推荐帖子
- 看几款LED车用驱动方案
- 汽车上的转向灯不再是只能一闪一灭了。现在的LED光带中发光颗粒可以以一定次序亮灭,光带看上去像发光虫子朝着汽车转向或者变道的方向直直地游去:现在不仅仅转向灯可以实现上述功能了,全车的照明都已经发展成可以以上述方式开启和熄灭。随着LED灯具应用领域越来越广泛,研究分析用于控制LED灯的转换器拓扑结构也就越来越迫切了。 因为...
- qwqwqw2088 模拟与混合信号
- C2000初级问题请教
- 同问:TI C2000系列中关于“数据”和“程序”这两个词的区别老实搞不懂,分有程序存储区和数据存储区,请问到底什么是程序,什么是数据啊,一直对这个概念很模糊,希望大家帮解释一下,谢谢! ...
- Aguilera 微控制器 MCU
- 32开发板入门学习经验总结
- STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,...
- 信盈达纪老师 TI技术论坛
- 控制器局域网(CAN)物理层调试基础知识
- 引言 控制器局域网(CAN)标准不断发展,正用于车载和工业网络之外的许多新应用。支持它的微处理器变得普遍且价格低廉,并且开源协议栈让其非常容易访问,同时也容易添加至新系统。有许多CAN板可用于BeagleBone (Capes)、Stellaris® (BoosterPacks)、Arduino (Shields)和其他微处理器开发平台。当设计人员的系统上电却不能工作时,应该怎么办呢?...
- wstt 微控制器 MCU