TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F2812芯片运行指令周期问题

现在使用TMS320F2812芯片,外部时钟24MHz,SYSCLK=24MHz,测试工具:示波器(500MHz)

 为了测试指令周期采用GPIO的形式,部分代码如下

#define LED1_ON         GpioDataRegs.GPFDAT.bit.GPIOF12=0    //1 灭  0 亮
#define LED1_OFF        GpioDataRegs.GPFDAT.bit.GPIOF12=1
#define LED1_TOG        GpioDataRegs.GPFTOGGLE.bit.GPIOF12=1

 while(1)
    {
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;

  LED1_OFF;
  LED1_OFF;
  LED1_OFF;
  LED1_OFF;

    }  

测得低电平(LED1_ON)宽度2.01us,高电平(LED1_OFF)宽度1.07us,若是单周期指令的话理论应该是低电平约为0.3us,高电平为0.15us。为什么测得有如此大的偏差,是计算方式有误还是其它原因,请大家帮忙解答一下,谢谢了

Jay:

你好。

GPIO控制用DAT寄存器来操作,由于IO有Buff存在,会有延时。

另外,如果程序在Flash中运行,除了指令执行时间,还是Flash等待时间。

所以,你测得的时间比计算的要长。

Jay

现在使用TMS320F2812芯片,外部时钟24MHz,SYSCLK=24MHz,测试工具:示波器(500MHz)

 为了测试指令周期采用GPIO的形式,部分代码如下

#define LED1_ON         GpioDataRegs.GPFDAT.bit.GPIOF12=0    //1 灭  0 亮
#define LED1_OFF        GpioDataRegs.GPFDAT.bit.GPIOF12=1
#define LED1_TOG        GpioDataRegs.GPFTOGGLE.bit.GPIOF12=1

 while(1)
    {
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;
  LED1_ON;

  LED1_OFF;
  LED1_OFF;
  LED1_OFF;
  LED1_OFF;

    }  

测得低电平(LED1_ON)宽度2.01us,高电平(LED1_OFF)宽度1.07us,若是单周期指令的话理论应该是低电平约为0.3us,高电平为0.15us。为什么测得有如此大的偏差,是计算方式有误还是其它原因,请大家帮忙解答一下,谢谢了

Chen Jones:

建议楼主不要使用DAT寄存器赋值,而要使用SET 和 CLEAR语句

这个在User Guide中专门有讲,可能会出问题,有个Write Protect Read的一个问题。建议楼主去看看。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F2812芯片运行指令周期问题
分享到: 更多 (0)