找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8874|回复: 4
打印 上一主题 下一主题
收起左侧

TMS320F2812与F28335的区别(共21页pdf下载)

[复制链接]
跳转到指定楼层
楼主
ID:435048 发表于 2018-11-28 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
F2812与 F28335的区别

最大的区别就是 28335 是浮点的,而 2812 是定点的。
F2812 主要指标
150 MHz/EMIF /128KB Flash/36KB RAM/GPIO 56路/McBSP/176-pin Package

F28335 主要指标
300 MFLOPS/独立 DMA/512KB Flash/68 KB RAM/32-bit EMI/GPIO 88 路

还有一点 28335 将2812 的EV分解成了相互独立的 epwm,ecap,eq 三个模块互相之间互不
干扰,因此可以比较方便地实现复杂的信号输出。尤其是epwm相对于EV中的pwm输出功能,
有了很大的提高。
F28335 比F2812 多了一个 MAC单元,也就是速度增加了一倍。
F28335 是带浮点运算的,动态范围更大。
F2833x 的执行速度,比相同时钟频率的 F28xx 系列定点芯片,快 50%。处理数学运算性能提
升 2.45倍,控制算法性能提升 1.57倍,DSP 性能提升 1.38 倍。总体性能提升近 2倍。

TMS320F28335 的 ADC

TMS320F28335 上有 16 通道、12位的模数转换器 ADC。他可以被配置为两个独立的 8 通道输
入模式,也可以通过配置 AdcRegs.ADCTRL1.bit.SEQ_CASC=1,将其设置为一个 16通道的级
联输入模式。输入的方式可以通过配置 AdcRegs.ADCTRL1.bit.ACQ_PS=1,将其设置为顺序
采集。即从低通道开始到高通道结束。

值得注意的是片上ADC的输入电压范围为0--3V,一旦超过3V,片上的ADC模块将会被烧掉。
TI 上的DATASHEET 介绍其 ADC的精度可达到 12位,实际上达到不了。经测试,我们估计最
好的时候可以达到 11位就不错了。下面我们来简单介绍一下 ADC 模块的原理。其数字值由
下面公司来计算,其中公式中的 3为片内参考电压 Digital Value=4096*(Input Analog
Voltage-ADCLO)/3 ;(when 0 V < input < 3 V)。ADC 可以分为SEQ1 和 SEQ2 两个模块,
其中 SEQ1 包括 ADCIN00--ADCIN07; SEQ2包括 ADCIN08--ADCIN15。 SEQ1 模块可以通过软件、
PWM、外部中断引脚来启动,而 SEQ2不可以通过外部中断引脚来启动。另外就是 ADC 可以与
DMA 进行数据交换。

TMS320F28335 的时钟介绍

TMS320F28335上有一个基于PLL电路的片上时钟模块,为CPU及外设提供时钟有两种方式:
一种是用外部的时钟源,将其连接到 X1引脚上或者 XCLKIN 引脚上,X2 接地;另一种是使
用振荡器产生时钟,用 30MHz的晶体和两个 20PF 的电容组成的电路分别连接到 X1和 X2引
脚上,XCLKIN 引脚接地。我们常用第二种来产生时钟。此时钟将通过一个内部 PLL锁相环
电路,进行倍频。由于 F28335的最大工作频率是 150M,所以倍频值最大是 5。其中倍频值
由 PLLCR的低四位和PLLSTS 的第 7、8位来决定。其详细的倍频值可以参照 TMS320F28335
的Datasheet。下面是 F28335的时钟设置:

void InitPll(Uint16 val, Uint16 divsel)
{

// Make sure the PLL is not running in limp mode
   if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
   {
      // Missing external clock has been detected
      // Replace this line with a call to an appropriate
      // SystemShutdown(); function.
      asm("        ESTOP0");
   }

   // DIVSEL MUST be 0 before PLLCR can be changed from
   // 0x0000. It is set to 0 by an external reset XRSn
   // This puts us in 1/4
   if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
   {
       EALLOW;
       SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
       EDIS;
   }

   // Change the PLLCR
   if (SysCtrlRegs.PLLCR.bit.DIV != val)
   {
      EALLOW;
    // Before setting PLLCR turn off missing clock detect logic
      SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
      SysCtrlRegs.PLLCR.bit.DIV = val;
      EDIS;

      // Optional: Wait for PLL to lock.
     // During this time the CPU will switch to OSCCLK/2 until
     // the PLL is stable.  Once the PLL is stable the CPU will
      // switch to the new PLL value.
      //
      // This time-to-lock is monitored by a PLL lock counter.
      //
    // Code is not required to sit and wait for the PLL to lock.
   // However, if the code does anything that is timing critical,
  // and requires the correct clock be locked, then it is best to
      // wait until this switching has completed.

      // Wait for the PLL lock bit to be set.

// The watchdog should be disabled before this loop, or fed within
      // the loop via ServiceDog().
   // Uncomment to disable the watchdog
      DisableDog();

      while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
      {
       // Uncomment to service the watchdog
          // ServiceDog();
      }

      EALLOW;
      SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
      EDIS;
    }

    // If switching to 1/2
if((divsel == 1)||(divsel == 2))
{
  EALLOW;
     SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel;
     EDIS;
}

// If switching to 1/1
// * First go to 1/2 and let the power settle
//   The time required will depend on the system, this is only an example
// * Then switch to 1/1
if(divsel == 3)
{
  EALLOW;
     SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
     DELAY_US(50L);
     SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
     EDIS;
    }
}

如果我们希望 DSP 工作在某一个频率下,我们就可以对 Uint16 val, Uint16 divsel 两个参
数进行设定。


TMS320F28335 外部中断总结

在这里我们要十分清楚 DSP的中断系统。C28XX一共有 16 个中断源,其中有 2个不可屏蔽
的中断 RESET 和 NMI、定时器 1和定时器2 分别使用中断 13 和 14。这样还有 12个中断都直
接连接到外设中断扩展模块 PIE 上。说的简单一点就是 PIE 通过 12根线与 28335核的 12
个中断线相连。而 PIE 的另外一侧有 12*8 根线分别连接到外设,如 AD、SPI、EXINT 等等。
这样PIE共管理12*8=96个外部中断。这12组大中断由28335核的中断寄存器IER来控制,
即 IER确定每个中断到底属于哪一组大中断(如IER |= M_INT12;说明我们要用第 12 组的
中断,但是第 12 组里面的什么中断 CPU 并不知道需要再由 PIEIER确定 )。接下来再由 PIE
模块中的寄存器PIEIER中的低8确定该中断是这一组的第几个中断,这些配置都要告诉CPU
(我们不难想象到 PIEIER 共有 12总即从 PIEIER1-PIEIER12)。另外,PIE 模块还有中断标
志寄存器 PIEIFR,同样它的低8位是来自外部中断的 8 个标志位,同样CPU 的 IFR 寄存器
是中断组的标志寄存器。由此看来,CPU 的所有中断寄存器控制 12组的中断,PIE的所有中
断寄存器控制每组内8个的中断。除此之外,我们用到哪一个外部中断,相应的还有外部中
断的寄存器,需要注意的就是外部中断的标志要自己通过软件来清零。而 PIE 和 CPU的中断
标志寄存器由硬件来清零。  

完整的pdf格式文档51黑下载地址(共21页):
2812与28335的区别.pdf (428.45 KB, 下载次数: 68)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:587965 发表于 2019-7-22 09:27 | 只看该作者
正是需要的,第一次就点击到这里了
回复

使用道具 举报

板凳
ID:711518 发表于 2020-3-19 13:33 | 只看该作者
请问28335有类似于2812对T1PWM_T1CMP(Timer 1 Output)吗?
我看规格书28335似乎只有PWM1AB-PWM6AB 12个PWM输出,PWM口不够用,怎么办?
回复

使用道具 举报

地板
ID:711518 发表于 2020-3-20 08:56 | 只看该作者
在吗?我对问题能帮忙回复一下吗?
回复

使用道具 举报

5#
ID:22211 发表于 2024-1-23 11:10 | 只看该作者
正是需要的,第一次就点击到这里了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表