[Kinetis] KL25板子IO口翻转速率

[复制链接]
 楼主| jd972594 发表于 2013-10-14 16:35 | 显示全部楼层 |阅读模式
怎么我在FRDM-KL25Z板子上测的IO口翻转好慢啊?
L系列是Cortex-M0+的核,不是单周期的IO吗?
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口翻转的程序吗?
因为测试环境不同,结果会差很多:)
 楼主| jd972594 发表于 2013-10-14 17:31 | 显示全部楼层
其实就是用了PE的一个函数在while(1)循环里翻转IO口。
  while(1)
  {
   Bit1_NegVal(Bit1_DeviceData);
  }

FSL_TICS_Robin 发表于 2013-10-14 20:33 | 显示全部楼层
jd972594 发表于 2013-10-14 17:31
其实就是用了PE的一个函数在while(1)循环里翻转IO口。
  while(1)
  {

PE生成的代码有点冗余,要么你直接写寄存器试试,应该会快。明天我给你测试下
FSL_TICS_MAHUI 发表于 2013-10-15 11:25 | 显示全部楼层
KL系列GPIO提供两组寄存器,一组是GPIOx_ ,另外一组是FGPIOx_。
使用FGPIOx_这组寄存器会获得更快的翻转速度。
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;
}
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脚
新建文件4.bmp
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;的时间间隔就比较大,所以上图中有一个高电平时间较长。
 楼主| 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翻转。

springvirus 发表于 2013-11-5 16:43 | 显示全部楼层
有示波器就是方便啊,准备买台~
 楼主| 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?
 楼主| jd972594 发表于 2013-11-5 16:45 | 显示全部楼层
springvirus 发表于 2013-11-5 16:43
有示波器就是方便啊,准备买台~

;P学校实验室或者公司不都有示波器吗?
玩硬件的离开示波器的确蛮累的,否则有啥问题直接测波形。
springvirus 发表于 2013-11-5 16:53 | 显示全部楼层
jd972594 发表于 2013-11-5 16:45
学校实验室或者公司不都有示波器吗?
玩硬件的离开示波器的确蛮累的,否则有啥问题直接测波形。 ...

买台属于自己的,可以在晚上静静地看看波形,思考下人生~~,呵呵
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。
4.jpg

5.jpg
motodefy 发表于 2013-11-5 17:07 | 显示全部楼层
:lol用FGPIO啊···很快的,我测过
 楼主| jd972594 发表于 2013-11-5 17:23 | 显示全部楼层
motodefy 发表于 2013-11-5 17:07
用FGPIO啊···很快的,我测过

之前是我测试方法有问题,而且以前没用过快速IO口,所以对于单周期IO概念感觉蛮困惑。
我就是参考你的帖子,自己又重新做了遍FGPIO的实验。
motodefy 发表于 2013-11-5 18:04 | 显示全部楼层
jd972594 发表于 2013-11-5 17:23
之前是我测试方法有问题,而且以前没用过快速IO口,所以对于单周期IO概念感觉蛮困惑。
我就是参考你的帖 ...

:lol解决就好啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

414

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部