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

TMS320F28034: GPIO口翻转速度和asm(" NOP");延时问题

Part Number:TMS320F28034

F28034,驱动IO控制WS2812B芯片。晶振使用内部INTOSC1倍频到50M,增加一条asm(" NOP");语句,大概增加了300ns左右的时间,理论上不是50M时钟对应的20ns吗?

图片中第一个高电平时间执行了两条asm(" NOP");,第二个高电平时间执行了三条asm(" NOP");。GPAQSEL1寄存器配置为异步。我想知道asm(" NOP");延时为什么不是时钟周期,或者有没有其他更精准延时方法。

Ben Qin:

有没有可能是该示波器的精度问题导致?可以换一个精度更高的示波器试一下吗?

,

Diga Ultraman:

后面更换了泰克示波器,现象大致相同。当执行两条asm(" NOP");时,高电平维持时间是300多ns。执行三条asm(" NOP");时,高电平维持时间是600多ns。这个问题是否与我编译器配置有关。

,

Ben Qin:

可以分享下你的程序吗?

,

Diga Ultraman:

void WS2812B_tx(void)
{Uint16 ws2812hl[24],rgb,i;rgb = WS2812.GRB;for(i=0;i<24;i++){if((rgb & 0x00800000) == 0x800000)ws2812hl[i] = 1;elsews2812hl[i] = 0;rgb = rgb << 1;}if(ws2812hl[0]){ws2812b_H;asm(" NOP");asm(" NOP");asm(" NOP");ws2812b_L;//asm(" NOP");}else{ws2812b_H;asm(" NOP");asm(" NOP");ws2812b_L;//asm(" NOP");}if(ws2812hl[1]){ws2812b_H;asm(" NOP");asm(" NOP");asm(" NOP");ws2812b_L;//asm(" NOP");}else{ws2812b_H;asm(" NOP");asm(" NOP");ws2812b_L;//asm(" NOP");}

系统配置为例程中的“GpioSetup”

,

Ben Qin:

你好,我咨询资深工程师后回复您。

,

Ben Qin:

你好,由于美国工程师那边假期,可能回复会有延迟,一旦有回复会立即回复您。

,

Ben Qin:

你好,可以检查下cmd看代码是从flash中还是ram中运行?如果它是从闪存执行的,那么将有一个额外的周期,因为我们需要额外的 1 个等待状态。这意味着每个“NOP”需要 40ns 与 20ns(1/50MHz),但我们仍然有点偏离您看到的 300ns 与 3 个“NOP”指令应该给出的 120ns.

您是否还可以检查闪存 WS 是否已正确配置(假设从闪存运行);默认的 WS 值为 15,因此如果没有为正确的 CPU 时钟速率配置,这将增加相当大的延迟。

,

Diga Ultraman:

是的,这与程序在哪里执行有关系。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28034: GPIO口翻转速度和asm(" NOP");延时问题
分享到: 更多 (0)