[GD32L233C-START 评测] 合:基础操作之测试GPIO极限翻转的方式

ncs19960831   2022-2-2 19:16 楼主

0x00 前言

本文针对芯片测试裸片使用GPIO进行极限的翻转测试,了解在这个单板上能实现的最快的IO翻转速度,因为实际上很多时候MCU的标准输出翻转测试的方式或者是测试的单板环境差别,理论中的数据可能会和实际显示有一定的区别,所以这里测试了这个demo单板的随机引脚的最快可靠翻转时间。

感谢兆易提供的相关环境与测试单板

0x10测试环境

  • demo单板
  • 电脑一台不必多讲
  • IAR 9+,主要是编译器支持会好些
  • 某个不愿意透露具体型号的逻辑分析仪(没打广告)
  • 某个不愿意透露具体型号的手持示波表(没打广告)

其中,随机引脚的选择标准如下:

  1. 为标准的IO接口
  2. 可以用来直接测试,没有外部接入
  3. 不开启复用模式

测试频率通过的标准如下:

  1. 占空比稳定为50%±3%,波形10秒内稳定无抖动
  2. 示波器查看跳变边沿无畸变

0x20 测试代码与测试步骤

测试的代码使用外部输入、内部稳定的时钟定时器,使用汇编字节码进行驱动(这点也是兆易的优点,库兼容了可读性与汇编优化度,基本上不需要怎么修改就可以直接用于测试。

下面附上测试代码。

#define REG32(addr)                  (*(volatile uint32_t *)(uint32_t)(addr))
#define GPIO_BOP(gpiox)            REG32((gpiox) + 0x00000018U)    /*!< GPIO port bit operation register */

    bool i = 0;
    void TIM_IRQHandler()
    {
        i = 1-i;
        if(i == 0)
            GPIO_BOP(LED1_GPIO_PORT) = LED1_PIN;
        else
            GPIO_BC(LED1_GPIO_PORT) = LED1_PIN;

    }

Snipaste_2022-02-02_18-03-49.png

可以看到当前的操作基本上就是直接操作寄存器来执行,但是伪装成函数的方式,但是因为足够原子化所以不需要do_while_0的结构。所以基本上不需要改写。

使用逻辑分析仪测试稳定占空比的最大频率。随后使用示波表查看是否可以得到完整的波形。

0x30 测试结果

经过测试,笔者发现当前引脚的最大的IO翻转的频率约为6.25M,这个频率可能是仅在50%占空比下的最快频率,以保证绝大对数的普通数字协议的执行。而笔者之前做过HC32F460的基础版,最快的频率在3.33MHZ左右,两者相差的还是很大的

Snipaste_2022-02-02_17-57-20.png

回复评论 (9)

很少见有网友测试翻转速率的,这个一般什么项目会比较关注gpio的翻转速率

点赞  2022-2-4 08:45

翻转速率和主频有密切关系吧

点赞  2022-2-4 13:50

我也想知道这个翻转测试的作用,楼主科普一下,谢谢!

点赞  2022-2-6 08:47
引用: nmg 发表于 2022-2-4 08:45 很少见有网友测试翻转速率的,这个一般什么项目会比较关注gpio的翻转速率

模拟一些通讯协议中需要查看最快的通讯速度。

点赞  2022-2-6 14:36

逻辑分析仪的采集频率是多少?

点赞  2022-2-7 10:15
引用: wangerxian 发表于 2022-2-7 10:15 逻辑分析仪的采集频率是多少?

我这里使用20M的频率。逻辑分析仪最快支持100M

点赞  2022-2-20 11:57
引用: ncs19960831 发表于 2022-2-20 11:57 我这里使用20M的频率。逻辑分析仪最快支持100M

6.25MHz能模拟不少通信的速度,频率稳定吗?

点赞  2022-2-21 09:19
引用: wangerxian 发表于 2022-2-21 09:19 6.25MHz能模拟不少通信的速度,频率稳定吗?

稳定状态下可以做到6.25,最快之前试了似乎能到10


点赞  2023-12-6 09:07
引用: ncs19960831 发表于 2023-12-6 09:07 稳定状态下可以做到6.25,最快之前试了似乎能到10

那还是很不错的!

点赞  2023-12-6 11:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复