OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 19589|回复: 13

GPIO读取IO口数据的速度问题

[复制链接]

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
发表于 2013-8-11 17:04:24 | 显示全部楼层 |阅读模式
我问的问题就是。在程序里面我要像这样读取数据.
    Display_Data[0][Collect_line][0]=(u8)GPIOB->IDR ;
    Display_Data[0][Collect_line][1]=(u8)GPIOB->IDR ;
    Display_Data[0][Collect_line][2]=(u8)GPIOB->IDR ;
    Display_Data[0][Collect_line][3]=(u8)GPIOB->IDR ;
    Display_Data[0][Collect_line][4]=(u8)GPIOB->IDR ; 
    Display_Data[0][Collect_line][5]=(u8)GPIOB->IDR ; 
    Display_Data[0][Collect_line][6]=(u8)GPIOB->IDR ; 
这每一句C语言在汇编中是9步的指令( Display_Data是个3维数组):
0x08000C9E 486D      LDR      r0,[pc,#436]  ; @0x08000E54
0x08000CA0 6800      LDR      r0,[r0,#0x00]
0x08000CA2 496A      LDR      r1,[pc,#424]  ; @0x08000E4C
0x08000CA4 6809      LDR      r1,[r1,#0x00]
0x08000CA6 EB0102C1  ADD      r2,r1,r1,LSL #3
0x08000CAA EB021101  ADD      r1,r2,r1,LSL #4
0x08000CAE 4A68      LDR      r2,[pc,#416]  ; @0x08000E50
0x08000CB0 EB020181  ADD      r1,r2,r1,LSL #2
0x08000CB4 F8810063  STRB     r0,[r1,#0x63]
我就是想知道想72MHZ下这个样采集数据,可能这个过程中会包括取指令的时间、指令执行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器读取的时间。不知道我这样讲对不对。我就是想知道如果将IO口的数据直接赋给一个32位的变量能有多快。是不是这中间占据时间比较多的是AHB、APB、总线仲裁等
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-11 19:35:54 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-12 16:02:01 | 显示全部楼层
哦!明白
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-12 16:33:18 | 显示全部楼层
原子哥!我这样子Display_Data[0][Collect_line][0]=(u8)GPIOB->IDR ;读取IO的数据他的速度是430ns的样子!可是汇编程序之中是9句的汇编代码。可能不是每个指令时一个机器周期。但是还要算上流水线啊。不至于这么慢吧!
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-12 16:33:34 | 显示全部楼层
给自己顶下
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-12 16:33:42 | 显示全部楼层
给自己顶下
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-12 16:33:48 | 显示全部楼层
给自己顶下
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-12 21:21:08 | 显示全部楼层
试试这个:
while(1)
{
  GPIOC->BSRR=1<<9    // C9=1     
GPIOC->BRR=1<<9     // C9=0
  GPIOC->BSRR=1<<9    // C9=1     
GPIOC->BRR=1<<9     // C9=0     
  GPIOC->BSRR=1<<9    // C9=1     
GPIOC->BRR=1<<9     // C9=0
  GPIOC->BSRR=1<<9    // C9=1     
GPIOC->BRR=1<<9     // C9=0
  GPIOC->BSRR=1<<9    // C9=1     
GPIOC->BRR=1<<9     // C9=0     
  GPIOC->BSRR=1<<9    // PC9=1     
GPIOC->BRR=1<<9     // PC9=0
}

这里是控制PC9输出0,1,0,1,0,1...
看看最快多少Mhz.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-13 12:09:30 | 显示全部楼层
原子哥BSRR也能清除寄存器为什么还要用BRR呢!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 13:01:15 | 显示全部楼层
你可以按你自己的想法用。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-13 13:45:04 | 显示全部楼层
原子哥我试过了最快25MHZ,最慢16MHZ。原子哥那么读取数据的最快频率也是这么大是不是啊
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-13 13:50:31 | 显示全部楼层
当然我指的是读取后存放在RAM中的话。速度会比较慢啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 14:02:02 | 显示全部楼层
回复【11楼】守望者:
---------------------------------
某些硬件控制的,可以更快。比如SDIO的CK,最快可以到48Mhz。不过没测试过。
一般如果你自己读写IO数据,肯定是到不了25Mhz了...远远低于25M。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-8-1
在线时间
0 小时
 楼主| 发表于 2013-8-13 16:20:28 | 显示全部楼层
那谢谢原子哥啦。我的问题结束啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-15 06:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表