打印
[Kinetis]

KL25板子IO口翻转速率

[复制链接]
2544|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jd972594|  楼主 | 2013-10-14 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
FSL_TICS_Robin| | 2013-10-14 16:38 | 只看该作者
飞思卡尔kinetis L系列的芯片的确是Cortex-M0+的核。
请问你测得频率是多少呢?

使用特权

评论回复
板凳
jd972594|  楼主 | 2013-10-14 16:50 | 只看该作者
FSL_TICS_Robin 发表于 2013-10-14 16:38
飞思卡尔kinetis L系列的芯片的确是Cortex-M0+的核。
请问你测得频率是多少呢? ...

我用PE里自带的蓝色LED的BitIO_LDD去翻转那口,在示波器上才测得856KHz。

使用特权

评论回复
地板
FSL_TICS_Robin| | 2013-10-14 17:20 | 只看该作者
jd972594 发表于 2013-10-14 16:50
我用PE里自带的蓝色LED的BitIO_LDD去翻转那口,在示波器上才测得856KHz。

能贴下的测试IO口翻转的程序吗?
因为测试环境不同,结果会差很多:)

使用特权

评论回复
5
jd972594|  楼主 | 2013-10-14 17:31 | 只看该作者
其实就是用了PE的一个函数在while(1)循环里翻转IO口。
  while(1)
  {
   Bit1_NegVal(Bit1_DeviceData);
  }

使用特权

评论回复
6
FSL_TICS_Robin| | 2013-10-14 20:33 | 只看该作者
jd972594 发表于 2013-10-14 17:31
其实就是用了PE的一个函数在while(1)循环里翻转IO口。
  while(1)
  {

PE生成的代码有点冗余,要么你直接写寄存器试试,应该会快。明天我给你测试下

使用特权

评论回复
7
FSL_TICS_MAHUI| | 2013-10-15 11:25 | 只看该作者
KL系列GPIO提供两组寄存器,一组是GPIOx_ ,另外一组是FGPIOx_。
使用FGPIOx_这组寄存器会获得更快的翻转速度。

使用特权

评论回复
8
FSL_TICS_Robin| | 2013-10-16 17:24 | 只看该作者
jd972594 发表于 2013-10-14 17:31
其实就是用了PE的一个函数在while(1)循环里翻转IO口。
  while(1)
  {

FRDM-KL25Z普通GPIO翻转生成的方波可以达到4MHz没问题
  while(1)
  {
          GPIOD_PTOR=0x02;        //4MHz  period       
          GPIOD_PTOR=0x02;
          GPIOD_PTOR=0x02;           
          GPIOD_PTOR=0x02;
          GPIOD_PTOR=0x02;
          GPIOD_PTOR=0x02;
}

使用特权

评论回复
9
FSL_TICS_Robin| | 2013-10-16 17:39 | 只看该作者
jd972594 发表于 2013-10-14 17:31
其实就是用了PE的一个函数在while(1)循环里翻转IO口。
  while(1)
  {

就是将你PE代码的while循环用上面代码替代后的结果,我是从PTD1就是板子上蓝色IO口同时也是J2的12脚

使用特权

评论回复
10
FSL_TICS_Robin| | 2013-10-16 17:40 | 只看该作者
本帖最后由 FSL_TICS_Robin 于 2013-10-16 17:59 编辑
jd972594 发表于 2013-10-14 17:31
其实就是用了PE的一个函数在while(1)循环里翻转IO口。
  while(1)
  {

不同的测试方法,差别蛮大的,程序在while里走到最后个GPIOD_PTOR=0x02;跳到第一个GPIOD_PTOR=0x02;的时间间隔就比较大,所以上图中有一个高电平时间较长。

使用特权

评论回复
11
jd972594|  楼主 | 2013-11-5 16:41 | 只看该作者
我参考https://bbs.21ic.com/forum.php?mod=viewthread&tid=631992帖子中的问题。
自己用在官网上下载KL25-SC并在其中E:\KL25 Sample Code\kl25_sc_rev9\klxx-sc-baremetal\build\cw\platinum\kl25_platinum工程上初始化了快速IO口并在主循环中重复写了好多条IO口翻转指令。
果然得到了CoreClock一半频率的IO翻转。

使用特权

评论回复
12
springvirus| | 2013-11-5 16:43 | 只看该作者
有示波器就是方便啊,准备买台~

使用特权

评论回复
13
jd972594|  楼主 | 2013-11-5 16:43 | 只看该作者
本帖最后由 jd972594 于 2013-11-5 16:46 编辑

好吧 不得不承认FGPIO果然够快,我48MHz的coreclock、24MHz的busclock情况下,快速IO口翻转能达到24MHz。
可IO口作为外设,不是一般都用bus clock的吗。
怎么一个挂在bus clock上的设备,翻转速度能超过busclock?

使用特权

评论回复
14
jd972594|  楼主 | 2013-11-5 16:45 | 只看该作者
springvirus 发表于 2013-11-5 16:43
有示波器就是方便啊,准备买台~

;P学校实验室或者公司不都有示波器吗?
玩硬件的离开示波器的确蛮累的,否则有啥问题直接测波形。

使用特权

评论回复
15
springvirus| | 2013-11-5 16:53 | 只看该作者
jd972594 发表于 2013-11-5 16:45
学校实验室或者公司不都有示波器吗?
玩硬件的离开示波器的确蛮累的,否则有啥问题直接测波形。 ...

买台属于自己的,可以在晚上静静地看看波形,思考下人生~~,呵呵

使用特权

评论回复
16
FSL_TICS_Robin| | 2013-11-5 16:59 | 只看该作者
jd972594 发表于 2013-11-5 16:43
好吧 不得不承认FGPIO果然够快,我48MHz的coreclock、24MHz的busclock情况下,快速IO口翻转能达到24MHz。
...

模块用什么时钟其实可以在参考手册KL25P80M48SF0RM的第五章5.7 Module clocks表格中看到。
GPIO的时钟是由Platform clock提供的,而对于KL25Z来说Platform clock等于CoreClock。


使用特权

评论回复
17
motodefy| | 2013-11-5 17:07 | 只看该作者
:lol用FGPIO啊···很快的,我测过

使用特权

评论回复
18
jd972594|  楼主 | 2013-11-5 17:23 | 只看该作者
motodefy 发表于 2013-11-5 17:07
用FGPIO啊···很快的,我测过

之前是我测试方法有问题,而且以前没用过快速IO口,所以对于单周期IO概念感觉蛮困惑。
我就是参考你的帖子,自己又重新做了遍FGPIO的实验。

使用特权

评论回复
19
motodefy| | 2013-11-5 18:04 | 只看该作者
jd972594 发表于 2013-11-5 17:23
之前是我测试方法有问题,而且以前没用过快速IO口,所以对于单周期IO概念感觉蛮困惑。
我就是参考你的帖 ...

:lol解决就好啊

使用特权

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

本版积分规则

11

主题

414

帖子

1

粉丝