打印
[时钟]

28335GPIO最高输出频率的疑问

[复制链接]
4504|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如题,有没办法能够提高GPIO的数据输出频率?在28335的DataSheet里边,GPIO管脚的输出频率起码可以达到20MHZ左右;但我简单地在一个while循环里边不断对GPIO34清零和置一,观察到的方波周期约为100ns,即只有10MHZ,感觉上说不过去。各位有没有遇到过相似的情况或更好的解决方法?

相关帖子

沙发
海中水| | 2015-2-2 15:53 | 只看该作者
根据数据手册话,IO切换频率是25MHz。但是通过while循环的肯定就不只是只有IO切换了,最起码的加上While语句。你可以查看一下他的汇编。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
杉树林罗 + 3 很给力!
板凳
zhangmangui| | 2015-2-2 22:53 | 只看该作者
你把系统时钟配置到最高    while里面只干一件事
就是进行IO的切换   吗  
手册上应该没问题   你在试试

使用特权

评论回复
地板
zhangmangui| | 2015-2-2 22:54 | 只看该作者
重点是看看这个2倍是体现到哪儿了

使用特权

评论回复
5
杉树林罗|  楼主 | 2015-2-3 09:10 | 只看该作者
海中水 发表于 2015-2-2 15:53
根据数据手册话,IO切换频率是25MHz。但是通过while循环的肯定就不只是只有IO切换了,最起码的加上While语 ...

有道理,我查看了汇编语言,整个while循环产生了四条指令,只不过一直都找不到DSP各条汇编指令所花时间的文档,有的话应该好理解一些

使用特权

评论回复
6
海中水| | 2015-2-3 10:02 | 只看该作者
对于整个While模块式有四条语句,但是真正执行的时候其实只有两条,另外两条指令在开始的时候会用到。用到两条指令的对应CPU周期数(如果不是操作很复杂一般都是单个CPU周期数)时多少呢?好像是2个CPU周期数,其中IO切换的就是其中一个,也就是说IO切换占总时间的1/2,所以你看到的频率就会减半。因为里面还包含了循环判断的时间。

使用特权

评论回复
7
mohanwei| | 2015-2-3 11:55 | 只看该作者
while(1)
{
SET_IO_XXX;
CLR_IO_XXX;
SET_IO_XXX;
CLR_IO_XXX;
....重复10遍。然后用示波器重新观察
}

使用特权

评论回复
8
海中水| | 2015-2-3 12:47 | 只看该作者
海中水 发表于 2015-2-3 10:02
对于整个While模块式有四条语句,但是真正执行的时候其实只有两条,另外两条指令在开始的时候会用到。用到 ...

使用特权

评论回复
9
海中水| | 2015-2-3 12:48 | 只看该作者
mohanwei 发表于 2015-2-3 11:55
while(1)
{
SET_IO_XXX;

使用特权

评论回复
10
杉树林罗|  楼主 | 2015-2-5 15:20 | 只看该作者
本帖最后由 杉树林罗 于 2015-2-5 15:23 编辑

@海中水  @zhangmangui
这回我去掉while(1)循环直接输出一个方波,结果仍是100ns,其实while只占用一个周期左右(约6ns)。。。。
切换频率果真不能当成输出频率来看。。。。。
感觉还是说不过去,汇编只有三条指令为什么就花了近5.5倍的时间。。。。。
哪位能找到GPIO最高输出频率的确切数据让我死了这条心。。。话说,GPIO是用CLOCKOUT即CPU的时间线的吧?
另外还有个问题:150MHZ的DSP输出时钟可以直接或间接用来计数吗?有的话该怎么操作?


屏幕截图.jpg (143.26 KB )

屏幕截图.jpg

使用特权

评论回复
11
海中水| | 2015-2-5 19:42 | 只看该作者
杉树林罗 发表于 2015-2-5 15:20
@海中水  @zhangmangui
这回我去掉while(1)循环直接输出一个方波,结果仍是100ns,其实while只占用一个周期 ...

你是去掉了直接看的IO口变化是100ns 吗?
"GPIO使用CLOCKOUT即CPU的时间吧?"这句话是什么意思,DSP的输出时钟是可以被其他计数设备用作脉冲计数的。

使用特权

评论回复
12
杉树林罗|  楼主 | 2015-2-5 20:49 | 只看该作者
海中水 发表于 2015-2-5 19:42
你是去掉了直接看的IO口变化是100ns 吗?
"GPIO使用CLOCKOUT即CPU的时间吧?"这句话是什么意思,DSP的输 ...

嗯,我就只跑IO变换,而且也确定CPU时钟是150MHZ;与理论上的相差太多,感觉很说不过去
"GPIO使用CLOCKOUT即CPU的时间吧?",我看结构图GPIO的时钟线都直接是来自CLOCKOUT的,与CPU的一致,故有此问
”DSP的输出时钟是可以被其他计数设备用作脉冲计数的“,具体有哪些?微秒级的CpuTimerX时间太长,对应不上我的要求;epwm虽精确但很难控制。。。。

使用特权

评论回复
13
海中水| | 2015-2-6 20:38 | 只看该作者
杉树林罗 发表于 2015-2-5 20:49
嗯,我就只跑IO变换,而且也确定CPU时钟是150MHZ;与理论上的相差太多,感觉很说不过去
"GPIO使用CLOCKOUT ...

关于这个IO切换的问题说实话我也没有去具体的测试过。直白的说就是没有这么用过。
至于计数打个比方的例子我可以用捕获。

使用特权

评论回复
14
杉树林罗|  楼主 | 2015-2-7 22:50 | 只看该作者
海中水 发表于 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》=》6  Read-Modify-Write Considerations When Using Bit Fields  写得很明白
连续对GPIO口写数据的话内部会有一个读值--确认--回写的操作,就是这点耗用了时间。TI出发点可能是为了防止数据抖动什么的,不过现在对我造成了很大的困扰。。。
无爱。。。但谢过各路大神的耐心探讨。。。
另,如何结帖?

使用特权

评论回复
15
海中水| | 2015-2-8 22:41 | 只看该作者
杉树林罗 发表于 2015-2-7 22:50
最后我到TI官网问了,答案很恶心:http://processors.wiki.ti.com/index.php/General_Purpose_IO_%28GPIO ...

没关系,技术总是越探讨约好的。这种情况很好。以后希望多多探讨,那样才有利于板块的发展。
帖子的最上面有个结贴给分,点击分配好你的分就可以了。

使用特权

评论回复
16
877049204| | 2018-3-8 20:55 | 只看该作者
我也遇到过这样的问题https://bbs.21ic.com/icview-2409484-1-1.html

使用特权

评论回复
17
天命风流| | 2018-6-11 13:28 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:过春风十里,皆稷麦青青

17

主题

458

帖子

4

粉丝