28335GPIO最高输出频率的疑问
如题,有没办法能够提高GPIO的数据输出频率?在28335的DataSheet里边,GPIO管脚的输出频率起码可以达到20MHZ左右;但我简单地在一个while循环里边不断对GPIO34清零和置一,观察到的方波周期约为100ns,即只有10MHZ,感觉上说不过去。各位有没有遇到过相似的情况或更好的解决方法? 根据数据手册话,IO切换频率是25MHz。但是通过while循环的肯定就不只是只有IO切换了,最起码的加上While语句。你可以查看一下他的汇编。 你把系统时钟配置到最高 while里面只干一件事就是进行IO的切换 吗
手册上应该没问题 你在试试 重点是看看这个2倍是体现到哪儿了 海中水 发表于 2015-2-2 15:53
根据数据手册话,IO切换频率是25MHz。但是通过while循环的肯定就不只是只有IO切换了,最起码的加上While语 ...
有道理,我查看了汇编语言,整个while循环产生了四条指令,只不过一直都找不到DSP各条汇编指令所花时间的文档,有的话应该好理解一些 对于整个While模块式有四条语句,但是真正执行的时候其实只有两条,另外两条指令在开始的时候会用到。用到两条指令的对应CPU周期数(如果不是操作很复杂一般都是单个CPU周期数)时多少呢?好像是2个CPU周期数,其中IO切换的就是其中一个,也就是说IO切换占总时间的1/2,所以你看到的频率就会减半。因为里面还包含了循环判断的时间。 while(1)
{
SET_IO_XXX;
CLR_IO_XXX;
SET_IO_XXX;
CLR_IO_XXX;
....重复10遍。然后用示波器重新观察
} 海中水 发表于 2015-2-3 10:02
对于整个While模块式有四条语句,但是真正执行的时候其实只有两条,另外两条指令在开始的时候会用到。用到 ...
mohanwei 发表于 2015-2-3 11:55
while(1)
{
SET_IO_XXX;
本帖最后由 杉树林罗 于 2015-2-5 15:23 编辑
@海中水@zhangmangui
这回我去掉while(1)循环直接输出一个方波,结果仍是100ns,其实while只占用一个周期左右(约6ns)。。。。
切换频率果真不能当成输出频率来看。。。。。
感觉还是说不过去,汇编只有三条指令为什么就花了近5.5倍的时间。。。。。
哪位能找到GPIO最高输出频率的确切数据让我死了这条心。。。话说,GPIO是用CLOCKOUT即CPU的时间线的吧?
另外还有个问题:150MHZ的DSP输出时钟可以直接或间接用来计数吗?有的话该怎么操作?
杉树林罗 发表于 2015-2-5 15:20
@海中水@zhangmangui
这回我去掉while(1)循环直接输出一个方波,结果仍是100ns,其实while只占用一个周期 ...
你是去掉了直接看的IO口变化是100ns 吗?
"GPIO使用CLOCKOUT即CPU的时间吧?"这句话是什么意思,DSP的输出时钟是可以被其他计数设备用作脉冲计数的。 海中水 发表于 2015-2-5 19:42
你是去掉了直接看的IO口变化是100ns 吗?
"GPIO使用CLOCKOUT即CPU的时间吧?"这句话是什么意思,DSP的输 ...
嗯,我就只跑IO变换,而且也确定CPU时钟是150MHZ;与理论上的相差太多,感觉很说不过去
"GPIO使用CLOCKOUT即CPU的时间吧?",我看结构图GPIO的时钟线都直接是来自CLOCKOUT的,与CPU的一致,故有此问
”DSP的输出时钟是可以被其他计数设备用作脉冲计数的“,具体有哪些?微秒级的CpuTimerX时间太长,对应不上我的要求;epwm虽精确但很难控制。。。。 杉树林罗 发表于 2015-2-5 20:49
嗯,我就只跑IO变换,而且也确定CPU时钟是150MHZ;与理论上的相差太多,感觉很说不过去
"GPIO使用CLOCKOUT ...
关于这个IO切换的问题说实话我也没有去具体的测试过。直白的说就是没有这么用过。
至于计数打个比方的例子我可以用捕获。 海中水 发表于 2015-2-6 20:38
关于这个IO切换的问题说实话我也没有去具体的测试过。直白的说就是没有这么用过。
至于计数打个比方的例 ...
最后我到TI官网问了,答案很恶心:http://processors.wiki.ti.com/index.php/General_Purpose_IO_%28GPIO%29_FAQ_for_C2000
或者可以参考这份文档:
《Programming TMS320x28xx and 28xxx Peripherals in c》=》6Read-Modify-Write Considerations When Using Bit Fields写得很明白
连续对GPIO口写数据的话内部会有一个读值--确认--回写的操作,就是这点耗用了时间。TI出发点可能是为了防止数据抖动什么的,不过现在对我造成了很大的困扰。。。
无爱。。。但谢过各路大神的耐心探讨。。。
另,如何结帖? 杉树林罗 发表于 2015-2-7 22:50
最后我到TI官网问了,答案很恶心:http://processors.wiki.ti.com/index.php/General_Purpose_IO_%28GPIO ...
没关系,技术总是越探讨约好的。这种情况很好。以后希望多多探讨,那样才有利于板块的发展。
帖子的最上面有个结贴给分,点击分配好你的分就可以了。 我也遇到过这样的问题https://bbs.21ic.com/icview-2409484-1-1.html
页:
[1]