主题 : nanoPi-M2的GPIO速度测试 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 129853
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2016-12-11
最后登录: 2018-07-14
楼主  发表于: 2016-12-20 17:51

 nanoPi-M2的GPIO速度测试

图片:
测试环境:使用ssh远程登录下执行官方的例程代码



复制代码
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>
  6. #include <unistd.h>
  7. #include <sys/mman.h>
  8. #define GPIOC_BASE_ADDRESS (0xC001C000)
  9. #define MAP_SIZE 40
  10. static int dev_fd;
  11. int main(int argc, char **argv)
  12. {long unsigned int i=0;
  13. dev_fd = open("/dev/mem", O_RDWR | O_NDELAY);
  14. if (dev_fd < 0)
  15. {
  16. printf("open(/dev/mem) failed.");
  17. return 0;
  18. }
  19. unsigned int base = (unsigned int)mmap(NULL, MAP_SIZE, PROT_READ |
  20. PROT_WRITE, MAP_SHARED, dev_fd, GPIOC_BASE_ADDRESS );
  21. #define GPIOCOUT *(unsigned int *)base
  22. #define GPIOCOUTENB *(unsigned int *)(base+0x04)
  23. #define GPIOCALTFN0 *(unsigned int *)(base+0x20)
  24. GPIOCALTFN0 &= ~(3<<22);
  25. GPIOCALTFN0 |= (1<<22);
  26. GPIOCOUTENB |= (1<<11);
  27. while(1)
  28. {
  29. GPIOCOUT |= (1<<11);
  30. //sleep(1);
  31. GPIOCOUT &= ~(1<<11);}
  32. if(dev_fd)
  33. close(dev_fd);
  34. munmap((unsigned int *)base,MAP_SIZE);
  35. return 0;
  36. }

对应GPIOC11的io速度翻转速度3M多一点,效果见图片,请自动忽略示波器照片的时间
[ 此帖被nanan2588在2016-12-20 17:56重新编辑 ]