(14) - CLA模块

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录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

luck_gfb

电机驱动的软件还是很复杂的。也就是说 你用我们的技术 你不需要做很多的操作调整 重新标定啊等等这些工作 只需要将我们的板子连接到电机 在10分钟内 可以让我们的电机转起来 而且这是无传感的技术 InstaSPIN TM motion是有传感的 会带给编码器的 我们会将速度网和[听不清]结合成一个环路 用IDC控制起来做 它的性能比较高端 而且只需要调整一个参数就可以了。

2020年09月02日 17:07:38

hawkier

哈哈哈,学完这章要点时间啊

2019年11月21日 16:12:10

大明58

学习C2837x入门指南

2019年08月22日 12:32:36

zhangleiat185

好好学习天天向上。。

2019年07月12日 16:34:47

hellokt43

好好学习天天向上。。

2019年06月09日 11:05:30

dingxilindy

学习C2000开发所需软件工具

2019年05月16日 14:51:31

zx1988ZX

终于看完了,不错的!

2019年04月25日 06:53:06

wudianjun2001

不错的视频资料。。。。。。

2019年03月04日 10:15:26

59477cq

学习了

2019年01月21日 20:28:50

凤凰息梧桐

学习一下

2019年01月21日 17:28:12

分享到X
微博
QQ
QQ空间
微信

EEWorld订阅号

EEWorld服务号

汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved