3058|3

5304

帖子

453

TA的资源

五彩晶圆(高级)

楼主
 

TIVA C Launchpad (EK-LM4F120XL LaunchPad) 一GPIO测试 [复制链接]

TIVA C Launchpad (EK-LM4F120XL LaunchPad) 一GPIO测试

在看视频教程时,讲师:金尔雅提到过高速端口AHB总线,所以想测试下速度到底有多快,速度上去里是不是对驱动TFT 刷屏有益!

测试程序如下
#define PB0_1        HWREG(GPIO_PORTB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = GPIO_PIN_0
#define PB0_0        HWREG(GPIO_PORTB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = 0
void test_GPIO(void)
{
        ROM_FPUEnable();
        ROM_FPUStackingEnable();


        //ROM_SysCtlClockSet(  SYSCTL_XTAL_16MHZ |SYSCTL_USE_OSC | SYSCTL_OSC_MAIN);
          // Set the clocking for a 80MHz system clock
            //
        ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
                               SYSCTL_OSC_MAIN);
        //使能外设
        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);


        //设置所选GPIO端口指定管脚的方向和模式
    ROM_GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_0,GPIO_DIR_MODE_OUT);


    //设置所选GPIO端口指定的管脚为输出模式
        ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_0);


        //设置所选GPIO端口指定管脚的驱动强度,推挽 类型
        ROM_GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_0,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD);


        while(1)
        {
                PB0_1;
                PB0_0;
        }


}
//*******************AHB总线**************************************************
#define PB0_AHB_1        HWREG(GPIO_PORTB_AHB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = GPIO_PIN_0
#define PB0_AHB_0        HWREG(GPIO_PORTB_AHB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = 0
void test_AHB_GPIO(void)
{
        ROM_FPUEnable();
        ROM_FPUStackingEnable();


        //ROM_SysCtlClockSet(  SYSCTL_XTAL_16MHZ |SYSCTL_USE_OSC | SYSCTL_OSC_MAIN);
         // Set the clocking for a 80MHz system clock
                    //
        ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
                                       SYSCTL_OSC_MAIN);


        ROM_SysCtlGPIOAHBEnable(SYSCTL_PERIPH_GPIOB);
        //使能外设
        //ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);




        //设置所选GPIO端口指定管脚的方向和模式
    ROM_GPIODirModeSet(GPIO_PORTB_AHB_BASE, GPIO_PIN_0,GPIO_DIR_MODE_OUT);


    //设置所选GPIO端口指定的管脚为输出模式
        ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_AHB_BASE,GPIO_PIN_0);


        //设置所选GPIO端口指定管脚的驱动强度,推挽 类型
        ROM_GPIOPadConfigSet(GPIO_PORTB_AHB_BASE,GPIO_PIN_0,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD);


        while(1)
        {
                PB0_AHB_1;
                PB0_AHB_0;
        }
}


int main(void)
        {
        //test_AHB_GPIO();
        test_GPIO();
}

测试结果


直接置1,置切换在80MHZ时钟下,可以达5MHZ



gpio高速AHB总线下置1,置切换在80MHZ时钟下,可以达5.7MHZ

最新回复

应该用汇编测试比较可靠吧? 直接操作寄存器,进行IO口的翻转  详情 回复 发表于 2013-12-16 20:13
 
点赞 关注

回复
举报

5304

帖子

453

TA的资源

五彩晶圆(高级)

沙发
 
网络上也有人对gpio翻转做过测试,以下引用下
作者 Wellin Zhang
“这个测速应该是跟你的测速函数有关系

我测了一下,通过这个库函数对GPIO进行反转的话,每次反转之间要执行27个时钟周期,一个翻转周期将近需要54个时钟周期,主要的时间消耗在这里”

格芯单片机
“为了提过GPIO的速度,在对GPIO操作时,本人没有使用现成的驱动库函数,而是使用直接对寄存器操作的方式,每次对GPIO操作,翻译成汇编是2条指令。
假设GPIO的速度足够快的情况下,如果是80M的主频,2条指令的执行时间应该是25ns,那么,GPIO 由低变高,再由高变低,一个周期的时间应该是50ns

 
 

回复

1453

帖子

18

TA的资源

纯净的硅(高级)

板凳
 
看波形的上下沿,速度应该还有潜力的
 
个人签名http://weibo.com/u/1391449055
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

4
 
应该用汇编测试比较可靠吧?

直接操作寄存器,进行IO口的翻转
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表