本文针对芯片测试裸片使用GPIO进行极限的翻转测试,了解在这个单板上能实现的最快的IO翻转速度,因为实际上很多时候MCU的标准输出翻转测试的方式或者是测试的单板环境差别,理论中的数据可能会和实际显示有一定的区别,所以这里测试了这个demo单板的随机引脚的最快可靠翻转时间。
感谢兆易提供的相关环境与测试单板
其中,随机引脚的选择标准如下:
测试频率通过的标准如下:
测试的代码使用外部输入、内部稳定的时钟定时器,使用汇编字节码进行驱动(这点也是兆易的优点,库兼容了可读性与汇编优化度,基本上不需要怎么修改就可以直接用于测试。
下面附上测试代码。
#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;
}
可以看到当前的操作基本上就是直接操作寄存器来执行,但是伪装成函数的方式,但是因为足够原子化所以不需要do_while_0的结构。所以基本上不需要改写。
使用逻辑分析仪测试稳定占空比的最大频率。随后使用示波表查看是否可以得到完整的波形。
经过测试,笔者发现当前引脚的最大的IO翻转的频率约为6.25M,这个频率可能是仅在50%占空比下的最快频率,以保证绝大对数的普通数字协议的执行。而笔者之前做过HC32F460的基础版,最快的频率在3.33MHZ左右,两者相差的还是很大的
我也想知道这个翻转测试的作用,楼主科普一下,谢谢!
引用: nmg 发表于 2022-2-4 08:45 很少见有网友测试翻转速率的,这个一般什么项目会比较关注gpio的翻转速率
模拟一些通讯协议中需要查看最快的通讯速度。
逻辑分析仪的采集频率是多少?
引用: wangerxian 发表于 2022-2-7 10:15 逻辑分析仪的采集频率是多少?
我这里使用20M的频率。逻辑分析仪最快支持100M
引用: ncs19960831 发表于 2022-2-20 11:57 我这里使用20M的频率。逻辑分析仪最快支持100M
6.25MHz能模拟不少通信的速度,频率稳定吗?
引用: wangerxian 发表于 2022-2-21 09:19 6.25MHz能模拟不少通信的速度,频率稳定吗?
稳定状态下可以做到6.25,最快之前试了似乎能到10
引用: ncs19960831 发表于 2023-12-6 09:07 稳定状态下可以做到6.25,最快之前试了似乎能到10
那还是很不错的!