控制/MCU
电子发烧友网讯:无论是8位、16位、还是32位的单片机在日常生活中都可以找到各自的应用空间。近年来,单片机在体系架构上正从8位向16位和32位升级。在8位单片机方面,美国微芯科技已经雄踞霸主地位,但是随着调制解调器、GPS、路由器、等中高端应用需求的增长,预计32位单片机未来的应用增长速度将会超越16位单片机,未来32位单片机的前景将会更加宽广。
德州仪器 (TI) 是全球领先的模拟及数字半导体 IC 设计制造公司。除了提供模拟技术、数字信号处理 (DSP) 以外,TI 在单片机领域也涉入较深,推出一系列的32位单片机,其中Piccolo系列微处理器最具代表性,具体型号如C2000和F28x系列。
一、德州仪器(TI)32位单片机系列产品
1、C2000™ 32 Bit 实时 MCU 概述
与市场上其他MCU不同,TI C2000 MCU专为实时控制应用而设计,如今进入市场已超过15年。从最低价格少于2美元、工作频率高达80MHz 的Piccolo定点和浮点MCU、到频率高达300MHz并带有浮点性能的Delfino系列 MCU ,乃至整合C28x内核和ARM Cortex-M3内核,从而提供完整的控制和连接性能的Concerto MCU,TI C2000 MCU平台正持续拓展,在诸如拥有广阔市场前景的电机控制、太阳能市场、电力线通信市场以及对成本有更高要求的大学和其他更多领域源源不断地推出新的解决方案。
C2000器件是支持高性能集成外设的 32 位微控制器,适用于实时控制应用。其数学优化型内核可为设计人员提供能够提高系统效率、可靠性以及灵活性的方法。 C2000 器件具有功能强大的集成型外设,是理想的单芯片控制解决方案。C2000 开发工具策略及软件 (controlSUITE) 可创建开放式平台,不但可最大限度地提高可用性,同时还可最大限度地缩短开发时间。
TI C2000 MCU的特性与优势:
−C2000 MCU真正将数字信号处理内核的优良性能与微控制器相关的集成化和易用性结合了起来;
−无人比肩的独特数学引擎包括 C28x DSP内核和浮点选项,控制法则加速器、维特比复杂数学处理单元 (VCU)和一个ARM® CortexTM-M3协处理器。这些特性提供定制的、增强的处理能力,这使得开发人员能只使用一个单MCU高效地执行复杂控制和通信操作,这样减少了物料清单的总成本和系统成本;
−C2000 MCU提供高级的、面向控制的外设,此外设可传送准确、快速和清晰无误的数据以提高系统效率;
−C2000 MCU提供更多的高级连接功能,如10/100 以太网,集成PHY 的USB On-The-Go、双通道 CAN等;
−C2000微控制器系列产品多样性使得开发人员能够很容易地规划他们的设计并重复使用代码。
内核架构:C28x 32 位 CPU
C2000 控制器采用了32 位中央 CPU 内核,名为 C28x,可与高度优化的外设和中断管理总线耦合。作为常规微处理器与数字信号处理器之间的桥梁,C28x 内核为 DSP 带来了优秀的代码密度和执行速度,以及简便易用性和微处理器的可访问性。特性包括:
带有硬件的高效 C 引擎可使 C 编译器生成具有世界领先代码密度的紧凑代码。
单周期读 - 修改 - 写指令、单周期 32 位乘法。
具有自动零周期背景保存的快速中断服务时间(低至 9 个周期)。
96 个专用中断矢量,无需软件决策制定
Delfino 控制器中的 32 位浮点部件
Piccolo 器件通过使用独立控制律加速器 (CLA) 处理浮点控制环路,使 CPU 得到释放,以便完成其它任务。
3 个 32 位通用 CPU 定时器可为任何应用提供史无前例的准确性和灵活性。
代码安全模块可防止反向工程并保护知识产权
功能强大的外设
C2000 控制器具有先进的集成外设模块,为系统带来更多好处。外设包括:
增强型 PWM 模块,提供高分辨率(低至 65 皮秒)的占空比、周期和相位控制。此外,完全可编程跳闸区域检测和死区时间发生器为系统提供了完善的故障和电涌保护。
业内领先的嵌入式 ADC - 具有高达 16 路模拟输入通道以及高达 12.5MSPS 的 12 位 ADC 采样。专门针对速度和灵活性设计,C2000 的 ADC 具有自动定序功能,可以最大程度地减少 CPU 中断。
基于 32 位定时器的增强型捕捉部件,具有高准确度的感应和更出色的灵活性。
正交编码器脉冲 (QEP) 模块,通过硬件选择控制器解码位置信号。
SPI、UART/SCI、CAN、I2C 和 LIN 通信模块使 C2000 控制器与系统其它部件得以连接。
2、Piccolo™ 32 位微控制器系列
Piccolo™ F28x 32 位微控制器可为低成本应用提供用于实现更高能源利用率的实时控制。
Piccolo™ C28x™ 低成本、高集成度 32 位微控制器采用最新的架构技术成果和增强型外设,能够为通常难以承担相应成本的应用带来 32 位实时控制功能的优势。无论是需要具有 F2802x 系列、额外闪存和 F2803x 系列高效控制环路 CLA 的定点 40-60 MHz 性能,还是浮点、双倍内存和 F2806x 系列的新型 Viterbi 复杂数学运算法 (VCU),Piccolo MCU 均可满足您的需求。Piccolo 的实时控制通过在诸如太阳能逆变器、白色家电设备、混合动力汽车电池、电力线通信 (PLC) 和 LED 照明等应用中实施高级算法,实现了更高的系统效率与精度。
Piccolo F2806x 方框图与特性
二、Piccolo微控制器的软件支持
德州仪器 (TI) 与 Visual Solutions 宣布,VisSim/Embedded Controls Developer v8.0 (VisSim) 可为 TI 最新 TMS320C2000 Piccolo 浮点微控制器 (MCU) 提供完全模型化的支持,其可简化编程,加速设计进程。该软件支持快速应用开发,并可为算法创建、位真仿真、器件初始化、原型设计以及生产性 C 语言代码生成提供可视化支持。VisSim v8.0 完整版(可免费试用两个月)现已开始提供,可与 TI F28069 controlSTICK 及 F28069 实验板套件配合使用。
VisSim/Embedded Controls Developer v8.0 的主要特性与优势
• 直观易用的界面可确保在几分钟内启动开发;
• 生产级 C 语言代码生成器不但支持高速采样速率以及低 RAM 与低闪存需求,而且还可自动生成高效定点与浮点运算;
• 便捷的下拉菜单可引导为所有外设生成中断驱动型高效代码,其中包括 A/D 转换器及 PWM 的高级模式;
• 仿真特性可帮助开发人员在以图形方式互动查看结果的同时,确认、调试和调谐算法;
• VisSim 环境可自动使用 TI Code Composer Studio IDE 与仿真功能(F2806x套件包含的)编译算法,并将其链接和下载到目标上;
• USB JTAG 的热链路支持下载与目标通信的实时主机服务,可对响应进行互动制图,并在目标执行过程中改变参数;
• F2806x MCU 的范例图包含互动 FFT、PSD、电机控制、数字电源以及各种其它应用,可为开发工作实现跨越式发展;
• 现有的 VisSim 图无需调整图的结构,便可轻松改变目标,将其指向任何 C2000 MCU,从而可显著降低支持多目标所需的工程设计成本。
三、Piccolo USB工具
德州仪器 (TI) 两款适用于 Piccolo™ 32 位 TMS320F2802x 微处理器 (MCU) 的USB工具,使设计人员能够为成本敏感型应用带来32 位实时控制功能。新型评估与开发工具使设计人员得以更轻松地评估 Piccolo MCU,并开发出更节能的实时控制应用,如微型太阳能逆变器、LED 照明、白色家电以及混合动力汽车电池等。
售价为 39 美元的 Piccolo controlSTICK 可提供工程实例,包括从简单的闪烁 LED 到配置高分辨率的 ePWM 外设等Piccolo MCU 高级功能;售价为 79 美元的 Piccolo 实验板套件可提供开发过程中的下一步功能,使设计人员能够便捷地针对基于 Piccolo
MCU 的全面项目进行原型设计与开发。首批 F2802x Piccolo MCU —TMX320F28027PTA 与 TMX320F28023DAA频率变动范围介于 40 ~ 60 MHz 之间,并具有高达 64 KB 的闪存、12 位 ADC、ePWM 以及其它各种外设。
Piccolo controlSTICK 重要特性Piccolo USB 实验板套件重要特性
· 售价39 美元的评估工具
· 可帮助设计人员评估并了解 Piccolo MCU
· 小型USB 棒状封装
· 板上 USB JTAG 可快速简便地进行项目评估
· 通过排针引脚接入所有控制外设
· 32 KB 有限 Code Composer Studio™ IDE 和工程实例· 售价 79 美元的完整开发套件,包括价值 49 美元的
Piccolo controlCARD
· 设计人员可利用原型设计通过 Piccolo MCU 实现更快速的开发
· 通过连接外部仿真器与电源进行板上 USB JTAG 仿真
· 可接入所有 Piccolo 引脚
· 32 KB 有限 Code Composer Studio IDE
四、德州仪器 Piccolo MCU 新品
TI推新型C2000 32位F2803x和F2806x Piccolo微控制器
德州仪器 (TI) 的 Piccolo微控制器可实现设计升级、改善性能并简化数字实时控制系统的开发,从而为电机控制应用带来全新的效率与创新。TMS320F2803x 和 TMS320F2806x Piccolo微控制器现包含一个通过一款新型C 编译器实现的、可采用C 语言进行编程的集成型控制律加速器 (CLA) 协处理器,旨在提升创新设计的水平。该 CLA 是一个32 位浮点数学加速器,专为独立于 TMS320C28x CPU 内核工作而设计,以分担复杂的高速控制算法。这种分担将 CPU 解放出来去处理输入/输出和反馈环路测量,从而可使闭环应用的性能提升5 倍之多。此外,该 CLA 还可直接访问片上外设以实现算法的并行执行,进而加快系统响应时间并改善效率。
新型 CLA C 编译器软件库可通过 controlSUITE软件平台访问,而且还提供了用于电机控制应用开发的系统范例。该 CLA 能提供有效的软件分区,而 TI 优化型免费源代码软件库以及在控制律加速器 (CLA) 上运行的系统范例则提供了软件代码块,从而使开发人员能够简便快捷地完成定制设计,并在电机控制应用中实现 15%-20% 的性能提升。
F2803x 和 F2806x Piccolo微控制器系统的特性与优势:
F2803x 和F2806x Piccolo 微控制器上通过一款用于 CLA 的新型 C 编译器实现的、可采用 C 语言进行编程的 32 位浮点协处理器利用元语言工具简化了编程、改善了灵活性与兼容性,并可直接访问片上外设以实现算法的并行执行。另外,该 CLA 还实现了更快的系统响应、高 MHz 的控制环路、改进的触发以及故障检测功能,旨在提高系统的稳健性。
F2803x Piccolo 微控制器内置了 TI 增强型脉宽调制器(150ps 分辨率的 ePWM)、12 位模数转换器 (ADC) 和两个 10 MHz 片上振荡器,并能替代多个电子组件(即:外部电源 IC),以在降低总体系统成本的同时实现高级电源电子线路管理。
F2806x Piccolo 微控制器内置了一个 Viterbi、复数数学和 CRC 单元 (VCU) 以及 C28x 内核与 CLA,可提供 75 条专用数学指令以加速通信算法的处理。另外,芯片上还包括 USB 2.0 和 CAN 接口(用于改善通信吞吐量和 PWM)、一个 16 通道、3 MSPS 12 位 ADC 以及三个带 10 位基准的模拟比较器,旨在免除外部设计组件。
与软件配合使用的电机控制与数字电源开发套件、培训及全天候支持可简化开发流程并使产品快速上市。
C2000 微控制器平台上的代码兼容性允许开发人员在 40 MHz 至 300 MHz 的范围内进行解决方案的调整。
controlCARD、controlSTICK和C2000 实验套件、C2000的灵活与模块化设计理念使得开发人员能够对各种不同的 C2000 微控制器进行试验,以满足价格、性能和外设特性集的要求。
包括controlSUITE软件,因而可提供针对电机控制开发以及数字电源的易用型开源演示 GUI、软件范例和文档。
五、Piccolo MCU应用
1、Piccolo微型数控机器人
Piccolo是一个口袋大小的单机数控(CNC)平台。不用70美元,你就能够组装自己的Arduino兼容包,玩基本的数控输出。还有比如让它快速的涂鸦,印刷一次性名片,或者多个Piccolo合作一起制作一个大型的壁画等等,这个套件提供了一个在2D和3D数字化制造平台的小规模试验。
目前作者打算把Piccolo原型做成一个简单,能快速组装,且易于使用的开源程序,完全由数字化制造的零部件和廉价的现成硬件组成。
Piccolo项目包括Arduino和处理库,Piccolo有多种使用方式,如自主移动或响应传感器和数据,同时提供了一个方便的教育工具和新的输出草图。
2、如何使用PICCOLO系列MCU产生0~100占空比的PWM波形
(1)、简介
在某些应用场合中,需要使用占空比从0%~100%变化的PWM波形来进行控制。PICCOLO系列中TMS320X2802X具有强大的PWM控制模块,利用它可以产生任意占空比的PWM波形。EPWM模块有三种计数方式,分别为增计数方式、增减计数方式、减计数方式,下面将详细讲解如何利用前面两种计数方式产生占空比任意变换的PWM波形。
(2)、具体描述
增计数模式
增计数模式下,当TBCTR计数值等于TBPRD的时候,CMPA阴影寄存器中的值赋值到CMPA活动寄存器中,同时计数值等于0的时候置位PWM波形,增计数等于CMPA值的时候清除复位PWM波形。在这种情况下,当CMPA值大于周期值时产生占空比为100%的波形;当CMPA值等于0的时候产生占空比为0%的波形。下面将对两个临界点做一下详细的说明。
产生100%的占空比,CMPA值需要大于周期值。在增计数模式下,等于0的时候置位PWM波形,开始时,置位PWM波形,波形只有在计数值等于CMPA的时候才会清除,由于计数值不可能等于CMPA,所以PWM波形将一直都是高电平,即产生100%占空比波形。为什么计数值到达不了CMPA时,PWM波形就不会有变换,在EPWM模块的应用手册中有说,增计数模式下,当CMPA值大于周期值的时候,PWM波形将不会有任何变化;而CMPA值小于等于周期值的时候,PWM波形将随着CMPA所设定的变化而改变,这里就解释了为什么产生100%的占空比的波形CMPA值要大于周期值,而不能大于等于周期值。
产生0%的占空比,CMPA值需要等于0。开始计数时,同时产生两种事件,计数值等于0的事件,置位PWM波形;计数值等于CMPA值的事件,复位PWM波形。两种事件同时产生,但是由于计数值等于CMPA值事件的优先级要高,所以开始的时候PWM波形是低电平,而计数下去,计数值永远都是在0的位置比较,而比较事件的优先级要高于CTR=0的事件,所以PWM波形将一直都是低电平。
程序如下所示:
EPwm1Regs.TBPRD = 600; // 定时器周期601
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // 同步值
EPwm1Regs.TBCTR = 0; // 清除定时器计数
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // 定时器增减模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 同步脉冲装载不使能
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 从镜像装载
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 关闭同步输出
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TB时钟等于SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 镜像模式
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; // 当CTR=prd的时候装载镜像数据
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // 增计数下PWM波形清零
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // 等于零的时候置位
EPwm1Regs.CMPA.half.CMPA = cnt; // 通过改变cnt的值来产生占空比变换的PWM波形
(3)、增减计数模式
占空比0%~100%
增减计数模式主要是用来产生对称的PWM波形,如果在增计数模式下,产生占空比0%~100%变换的PWM波形,需要有如下设置:如果计数值在增计数时等于CMPA,置位PWM波形,如果在减计数时等于CMPA,复位PWM波形。当计数值等于0的时候,CMPA阴影寄存器中的值赋值到活动寄存器中。CMPA等于0的时候产生占空比为100%的波形,CMPA等于或大于PRD的时候产生占空比为0%的波形。下面将对产生100%和0%的占空比做详细的说明。
产生100%的占空比,CMPA等于0。计数值在增计数方向下,如果等于CMPA,置位PWM波形。开始计数时,计数值等于0,产生计数值等于CMPA事件,置位PWM波形,而且减计数下最后计数值等于1,不能和CMPA =0产生比较事件,也就不能清除PWM波形。所以产生100%占空比波形。
产生0%的占空比,CMPA等于或大于周期值。当然开始计数时,PWM波形需要是低电平。计数值等于或大于PRD的时候,PWM波形按照CTR=RPD设置事件变化,而CTR=PRD没有设置事件,所以PWM波形没有任何变化,依然为低电平,即0%的占空比。
占空比0%~50%
使用增减计数模式产生占空比从50%~0%变化的不对称PWM波形。CMPA阴影寄存器值在计数值等于周期值的时候赋值到活动CMPA寄存器。在计数值等于周期值的时候,复位PWM波形;增计数下,计数值和CMPA相等时,置位PWM波形。CMPA值等于0时,产生50%占空比波形,CMPA值等于PRD时,产生0%占空比波形。下面将对产生50%和0%的占空比做详细的说明。
产生50%占空比,CMPA值等于0。开始计数为增计数方向,此时计数值0等于CMPA寄存器值0,置位PWM波形,继续计数,当计数值等于周期值PRD的时候复位PWM波形,产生占空比为50%的波形。
产生0%占空比,CMPA值等于PRD。开始计数在0点没有产生任何的事件,继续计数当计数值等于PRD的时候,根据EPWM用户手册中说到。当CMPA值大于或者等于PRD的时候,产生计数值等于PRD的事件,即为清除PWM波形,PWM波形一直都为低电平,为0%占空比波形。
程序例程如下所示:
EPwm1Regs.TBPRD = 600; // 定时器周期601
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // 同步值
EPwm1Regs.TBCTR = 0; // 清除定时器计数
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 定时器增减模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 同步脉冲装载不使能
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 从镜像装载
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 关闭同步输出
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TB时钟等于SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 镜像模式
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; // 当CTR=prd的时候装载镜像数据
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; // 计数值等于PRD时清除PWM
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 增计数下计数值等于CMPA置位PWM
EPwm1Regs.CMPA.half.CMPA = cnt; // 改变cnt的值,产生占空比50%~0%变化的波形
赋值方式
通过以上的叙述可以知道,CMPA有两种赋值方式,1、计数值等于0的时候赋值;2、计数值等于PRD的时候赋值。两种不同的赋值方式得到的效果也不同,但是只要掌握了变化要点,就能解释任何的PWM波形的变化。如果为增减计数模式下,产生对称的PWM波形,不同的赋值方式,对CMPA值也有不同的要求。
如果CMPA在CTR等于0的时候赋值,那么CMPA的值必须大于或者等于1,否则不可能产生对称的PWM波形。
如果CMPA在CTR等于RPD的时候赋值,那么CMPA的值必须小于或者等于PRD-1,否则不能产生对称的PWM波形。
(4)、总结
由此可见,赋值方式的不同,会得到不同的效果,但是有一点可以理解的,不管什么样的赋值方式,什么样的置位复位模式,都必须要掌握EPWM模块的特性,如事件优先级,对称不对称PWM波形的产生方式等,只有这样才能理解任意的PWM波形产生方法。
六、Piccolo MCU的几个小问题
1:LIN作为UART使用时,如果用FIFO,应该提供一个像280X那样的寄存器SCIFFRX.bit.RXFFST随时读取到FIFO中数据的个数,并且FIFO的长度可以immediately更新,而现在的FIFO数据长度更新存在bug,没有immediately,好像是shadow。
2: AD口增加了比较器,利用比较器可以触发很多事件。
不过现在的比较器输入口是固定的。
其中A2,B2;A4,B4;A6,B6是一对输入。
如果进行双同步采样,习惯上把要采集的电流,电压,比如Iu,Iv,或Uu,Uv放在一对,如A2,B2;或A1,B1。
带来的问题就是,这样就要多占用一个AD口,比如Iu即要做比较输入,又要和Iv同步采样,就需要Iu,Iv占有A1,B1,然后Iu再接到A2,此时B2可以用内部给的参考电压。
如果三个比较器的输入端可以用一个寄存器设定就完美了。
3:QEP接口
一个定时器
一个时间计数器
一个时间溢出标志计数器
一个脉冲计数器
Eqep有一个定时器,可以设置如100us,CLR一次。
每次CLR,时间计数器清零,时间溢出标志清零
时间计数器 ,时间溢出标志用于计算实时速度。
脉冲计数器记录位置信息,不清零。随时读取count,这个脉冲计数器和现在Qep的一样。
定时器,时间计数器,时间溢出标志计数器是需要新加入的。
这个方法,速度精度会很高,中断程序的延时不会影响测速的精度,如果时间计数器输入时钟是30Mhz,速度计算精度可以在整个速度范围达到一个pulse。而且不管速度多低,速度多高,不需要切换M,T算法。只需要在低速累加时间溢出标志,在高速,QEP信号的两个上升沿中间的计数值是不会受到程序顺序执行带来的延时所影响。
如图,reg读出,清零代表中断程序里面计算转速。
QEP的定时器也设成100us,到了触发一个定时中断,也可以在PWM中断中读取定时器状态,因为程序的延时不会给速度位置计算带来误差。
如图计算速度用到的时间计数器reg中的值是T0+T1+T2+T3+T4。这样的上升沿在高速状态下,尤其是QEP信号1Mhz以上(时钟30Mhz),可以得到很精确的速度。
全部0条评论
快来发表一下你的评论吧 !