[资源分享] 【杰发科技AC7802x测评】GPIO翻转速率测试

[复制链接]
2858|8
 楼主| lulugl 发表于 2023-5-26 15:30 | 显示全部楼层 |阅读模式
AC, GPIO, IO, gp, pi
GPIO的翻转速度指:输入/输出寄存器的0 ,1 值反映到外部引脚高低电平的速度.
代码在示例SampleCode\01_GPIO_Basic代码上修改而来,具体如下:
  1. int main(void)
  2. {
  3.     InitDelay();
  4.     InitDebug();
  5.     GPIO_LedInit();
  6.     GPIO_KeyInit();
  7.     TIMER_PrdInit();

  8.     printf("Hi This is GPIO Basic Demo !\r\n");
  9.     while (1)
  10.     {
  11.                         GPIOA->ODR |= (1<<2);
  12.                         GPIOA->ODR &= ~(1<<2);
  13.                         GPIOA->ODR |= (1<<2);
  14.                         GPIOA->ODR &= ~(1<<2);
  15.                         GPIOA->ODR |= (1<<2);
  16.                         GPIOA->ODR &= ~(1<<2);
  17.                         GPIOA->ODR |= (1<<2);
  18.                         GPIOA->ODR &= ~(1<<2);
  19.                         GPIOA->ODR |= (1<<2);
  20.                         GPIOA->ODR &= ~(1<<2);
  21.                         GPIOA->ODR |= (1<<2);
  22.                         GPIOA->ODR &= ~(1<<2);
  23.                         GPIOA->ODR |= (1<<2);
  24.                         GPIOA->ODR &= ~(1<<2);
  25.                         GPIOA->ODR |= (1<<2);
  26.                         GPIOA->ODR &= ~(1<<2);
  27.                         GPIOA->ODR |= (1<<2);
  28.                         GPIOA->ODR &= ~(1<<2);
  29.                         GPIOA->ODR |= (1<<2);
  30.                         GPIOA->ODR &= ~(1<<2);
  31.                         GPIOA->ODR |= (1<<2);
  32.                         GPIOA->ODR &= ~(1<<2);
  33.                         GPIOA->ODR |= (1<<2);
  34.                         GPIOA->ODR &= ~(1<<2);
  35.                         GPIOA->ODR |= (1<<2);
  36.                         GPIOA->ODR &= ~(1<<2);
  37.                         GPIOA->ODR |= (1<<2);
  38.                         GPIOA->ODR &= ~(1<<2);
  39.                         GPIOA->ODR |= (1<<2);
  40.                         GPIOA->ODR &= ~(1<<2);
  41.                         GPIOA->ODR |= (1<<2);
  42.                         GPIOA->ODR &= ~(1<<2);
  43.                         GPIOA->ODR |= (1<<2);
  44.                         GPIOA->ODR &= ~(1<<2);
  45.                         GPIOA->ODR |= (1<<2);
  46.                         GPIOA->ODR &= ~(1<<2);
  47.                         GPIOA->ODR |= (1<<2);
  48.                         GPIOA->ODR &= ~(1<<2);
  49.                         GPIOA->ODR |= (1<<2);
  50.                         GPIOA->ODR &= ~(1<<2);
  51. //        GPIO_ScanKeyInput();

  52. //        GPIO_ToggleLedPrd();
  53.     }
  54. }
用示波器接到PA2上面,测得波形如下:
IO翻转.jpg
从波形上看,可以达到1.61MHz。GPIO寄存器好似没有速度调试的寄存器,如果是spi的状态下不知道可以达到多少速度。
tpgf 发表于 2023-6-9 11:44 | 显示全部楼层
楼主在代码上并没有任何延时设置,那么如何调节输出的速度呢
guanjiaer 发表于 2023-6-9 12:06 | 显示全部楼层
在当前代码上我们如何加快输出的速度呢
heimaojingzhang 发表于 2023-6-9 12:38 | 显示全部楼层
这个速度和时钟的配置有关系吗,还是单纯的取决于主频啊
keaibukelian 发表于 2023-6-9 13:20 | 显示全部楼层
heimaojingzhang 发表于 2023-6-9 12:38
这个速度和时钟的配置有关系吗,还是单纯的取决于主频啊

这个翻转的速度是不是应该取决于io的时钟啊
paotangsan 发表于 2023-6-9 13:51 | 显示全部楼层
我们如何对io翻转的测试语句进行不同等级的优化呢
renzheshengui 发表于 2023-6-9 14:10 | 显示全部楼层
这种io翻转速度的测试结果和测试环境的关系大吗
 楼主| lulugl 发表于 2023-6-9 14:16 | 显示全部楼层
renzheshengui 发表于 2023-6-9 14:10
这种io翻转速度的测试结果和测试环境的关系大吗

我看来其他大佬有把程序放到内存执行,好似有提升,但是要以实际环境为准。
 楼主| lulugl 发表于 2023-11-27 16:08 | 显示全部楼层
guanjiaer 发表于 2023-6-9 12:06
在当前代码上我们如何加快输出的速度呢

直接写寄存器,就会更快。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

844

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部