打印
[资源分享]

【杰发科技AC7802x测评】GPIO翻转速率测试

[复制链接]
1115|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2023-5-26 15:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
AC, GPIO, IO, gp, pi
GPIO的翻转速度指:输入/输出寄存器的0 ,1 值反映到外部引脚高低电平的速度.
代码在示例SampleCode\01_GPIO_Basic代码上修改而来,具体如下:
int main(void)
{
    InitDelay();
    InitDebug();
    GPIO_LedInit();
    GPIO_KeyInit();
    TIMER_PrdInit();

    printf("Hi This is GPIO Basic Demo !\r\n");
    while (1)
    {
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
                        GPIOA->ODR |= (1<<2);
                        GPIOA->ODR &= ~(1<<2);
//        GPIO_ScanKeyInput();

//        GPIO_ToggleLedPrd();
    }
}
用示波器接到PA2上面,测得波形如下:

从波形上看,可以达到1.61MHz。GPIO寄存器好似没有速度调试的寄存器,如果是spi的状态下不知道可以达到多少速度。

使用特权

评论回复

相关帖子

沙发
tpgf| | 2023-6-9 11:44 | 只看该作者
楼主在代码上并没有任何延时设置,那么如何调节输出的速度呢

使用特权

评论回复
板凳
guanjiaer| | 2023-6-9 12:06 | 只看该作者
在当前代码上我们如何加快输出的速度呢

使用特权

评论回复
地板
heimaojingzhang| | 2023-6-9 12:38 | 只看该作者
这个速度和时钟的配置有关系吗,还是单纯的取决于主频啊

使用特权

评论回复
5
keaibukelian| | 2023-6-9 13:20 | 只看该作者
heimaojingzhang 发表于 2023-6-9 12:38
这个速度和时钟的配置有关系吗,还是单纯的取决于主频啊

这个翻转的速度是不是应该取决于io的时钟啊

使用特权

评论回复
6
paotangsan| | 2023-6-9 13:51 | 只看该作者
我们如何对io翻转的测试语句进行不同等级的优化呢

使用特权

评论回复
7
renzheshengui| | 2023-6-9 14:10 | 只看该作者
这种io翻转速度的测试结果和测试环境的关系大吗

使用特权

评论回复
8
lulugl|  楼主 | 2023-6-9 14:16 | 只看该作者
renzheshengui 发表于 2023-6-9 14:10
这种io翻转速度的测试结果和测试环境的关系大吗

我看来其他大佬有把程序放到内存执行,好似有提升,但是要以实际环境为准。

使用特权

评论回复
9
lulugl|  楼主 | 2023-11-27 16:08 | 只看该作者
guanjiaer 发表于 2023-6-9 12:06
在当前代码上我们如何加快输出的速度呢

直接写寄存器,就会更快。

使用特权

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

本版积分规则

145

主题

713

帖子

9

粉丝