切换到宽版
  • 8519阅读
  • 39回复

挖尽GD32潜力,做逻辑分析仪,15M采样速率,60k存储深度,体现GD优越性 [复制链接]

上一主题 下一主题
离线huaweiwx
 

发帖
1372
M币
2167
专家
65
粉丝
297
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2016-03-22
近来坛上红火的GD32,我也受感染,进了几个,赶紧拆了一片,并做了个最小系统(帖子论坛数据库出错,内容没了), arm的板子,跑起来确实很爽;
并移植完成GD32F103RET6 ARDUINO
   GD32F103RET6 120M 和M64 16M运行速度比较测试
  跑 freertos:http://bbs.mydigit.cn/read.php?tid=1589017
  gd32超频到120M运行,不拿点超越stm32的东东,总觉得没有体现gd的优势,
以前我:atmega64 做个逻辑分析仪,最高速率4M,存储深度2048,开源多平台上位软件pc机显示 ,由于M64 ram小,且主频低,采样速率受到限制.如用gd则可以达到15M的速率,便马山动手,开始向gd arm移植.
还是放在arduino中开发,经排错验证,最终的完成的编译界面:


由于gd仅负责采样,其余由上位机完成,所以代码不大仅14k,ram当然用尽了.
上位机运行界面:


(在单位发帖,仅简单用跳线将pa3接了地)
完整的代码:
  1. /*
  2.    SLLogicLogger - Simple logic analyser for Stellaris Launchpad
  3.    SLLogicLogger supports the SUMP protocol over UART. The UART is mapped
  4.    through the debug/flash controller on the Stellaris Launchpad to a virtual
  5.    com port. It samples signals on PORTB with samplerate 10 Mhz, buffersize
  6.    16kByte, sampling starts at any change on PORTB[0..7].
  7.    PB0 and PB1 are limited to 3.6 V! All other pins are 5 V tolerant.
  8.    The idea for this simple analyser comes from http://jjmz.free.fr/?p=148
  9.    Description of the SUMP protocol:
  10.    - http://www.sump.org/projects/analyzer/protocol/
  11.    - http://dangerousprototypes.com/docs/The_Logic_Sniffer%27s_extended_SUMP_protocol
  12.    A multiplatform client which supports the SUMP protocol is OLS:
  13.    http://www.lxtreme.nl/ols/
  14.    To install device support for OLS, copy ols.profile* file into the
  15.    ols/plugins folder.
  16.    Copyright (C) 2012 Thomas Fischl <tfischl@gmx.de> http://www.fischl.de
  17.    Last update: 2012-12-24
  18.   
  19.    for gd32f103ret6 120M f_cpu samples signals on PORTA(0..7) with samplerate 15 Mhz, buffersize
  20.    60kByte. by huaweiwx@sina.com 2016.3.22
  21. */
  22. #define VERSION "SLLogicLogger v0.1"
  23. //boards
  24. #define LED  LED_BUILTIN  //LED_BUILTIN: PC13
  25. // buffer size
  26. #define BUFFERSIZE 60*1024
  27. #define MAX_SAMPLERATE 15000000
  28. // input pa reg
  29. #define GPIO_PORT_DATA_R gpioa.regs->IDR
  30. uint8_t pin[8] ={PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7};
  31. // SUMP command defintions
  32. #define SUMP_RESET 0x00
  33. #define SUMP_ARM   0x01
  34. #define SUMP_QUERY 0x02
  35. #define SUMP_GET_METADATA 0x04
  36. // sampling buffer
  37. char buffer[BUFFERSIZE];
  38. // send 32bit unsigned integer as SUMP metadata
  39. void sump_sendmeta_uint32(char type, unsigned int i) {
  40.   Serial1.write(type);
  41.   Serial1.write((i >> 24) & 0xff);
  42.   Serial1.write((i >> 16) & 0xff);
  43.   Serial1.write((i >> 8) & 0xff);
  44.   Serial1.write(i & 0xff);
  45. }
  46. // send 8bit unsigned integer as SUMP metadata
  47. void sump_sendmeta_uint8(char type, unsigned char i) {
  48.   Serial1.write(type);
  49.   Serial1.write(i);
  50. }
  51. // wait for trigger and do sampling
  52. void dosampling() {
  53.   // use it as timeout for trigger
  54.   unsigned int i = 0xfffffff;
  55. digitalWrite(LED,LOW);
  56.   // get current gpio state an wait for change or timeout
  57.   char v = GPIO_PORT_DATA_R;
  58.   while ((i-- != 0) && (GPIO_PORT_DATA_R == v));
  59.   // aquire data
  60.   for (i = BUFFERSIZE-1; i != 0; i--) {
  61.     buffer[i] = GPIO_PORT_DATA_R;
  62.   }
  63.     buffer[0] =GPIO_PORT_DATA_R;
  64.   // send it over uart
  65.   for (i = 0; i < BUFFERSIZE; i++) Serial1.write(buffer[i]);
  66.   digitalWrite(LED,HIGH);
  67. }
  68. //init
  69. void setup(){
  70.   pinMode(LED, OUTPUT);
  71.   for (uint8_t i=0;i<8;i++) pinMode(pin[i],INPUT);
  72.   Serial1.begin(115200);
  73.   for(uint8_t i=0;i<7;i++){  //ready
  74.     digitalToggle(LED);
  75.     delay(250);
  76.   }  
  77. }
  78. // main routine
  79. void loop () {
  80.   if (Serial1.available()) {
  81.     // get the new byte:
  82.     unsigned char cmd = Serial1.read();
  83.     switch (cmd) {
  84.       case SUMP_RESET:
  85.         break;
  86.       case SUMP_ARM:
  87.         dosampling();
  88.         break;
  89.       case SUMP_QUERY:
  90.         Serial1.print("1ALS");
  91.         break;
  92.       case SUMP_GET_METADATA:
  93.         // device name
  94.         Serial1.write(0x01);
  95.         Serial1.print(VERSION);
  96.         Serial1.write(0x00);
  97.         // amount of sample memory available (bytes)
  98.         sump_sendmeta_uint32(0x21, BUFFERSIZE);
  99.         // maximum sample rate (hz)
  100.         sump_sendmeta_uint32(0x23, MAX_SAMPLERATE);
  101.         // number of usable probes (short)
  102.         sump_sendmeta_uint8(0x40, 0x08);
  103.         // protocol version (short)
  104.         sump_sendmeta_uint8(0x41, 0x02);
  105.         // end of meta data
  106.         Serial1.write(0x00);
  107.         break;
  108.       // long commands.. consume bytes from uart
  109.       case 0xC0:
  110.       case 0xC4:
  111.       case 0xC8:
  112.       case 0xCC:
  113.       case 0xC1:
  114.       case 0xC5:
  115.       case 0xC9:
  116.       case 0xCD:
  117.       case 0xC2:
  118.       case 0xC6:
  119.       case 0xCA:
  120.       case 0xCE:
  121.       case 0x80:
  122.       case 0x81:
  123.       case 0x82:
  124.         Serial1.read();
  125.         Serial1.read();
  126.         Serial1.read();
  127.         Serial1.read();
  128.         break;
  129.     }
  130.   }
  131. }
源代码 编译hex和 配置文件cfg 网盘同步共享.
安装和使用及上位机,参考 :atmega64 做个逻辑分析仪,最高速率4M,存储深度2048,开源多平台上位软件pc机显示,

本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共27条打赏 ,M币+83
离线xiaodaishu

发帖
1624
M币
1457
专家
12
粉丝
85
只看该作者 1楼 发表于: 2016-03-22
请登录后查看
本帖最近打赏记录:共1条打赏 ,M币+3
离线2545889167

发帖
13268
M币
20754
专家
302
粉丝
4860
只看该作者 2楼 发表于: 2016-03-22
请登录后查看
离线huaweiwx

发帖
1372
M币
2167
专家
65
粉丝
297
只看该作者 3楼 发表于: 2016-03-22
回 2545889167 的帖子
请登录后查看
本帖最近打赏记录:共2条打赏 ,M币+6
离线akikyoua

发帖
149
M币
4924
专家
1
粉丝
16
只看该作者 4楼 发表于: 2016-03-22
请登录后查看
离线liquidator

发帖
3889
M币
11360
专家
0
粉丝
29
只看该作者 5楼 发表于: 2016-03-22
请登录后查看
离线chenlei1910

发帖
11032
M币
1444
专家
2
粉丝
40
只看该作者 6楼 发表于: 2016-03-22
请登录后查看
离线yulijie

发帖
398
M币
273
专家
1
粉丝
22
只看该作者 7楼 发表于: 2016-03-22
请登录后查看
离线信徒1102

发帖
231
M币
5237
专家
5
粉丝
38
只看该作者 8楼 发表于: 2016-03-23
请登录后查看
离线zmmatlll

发帖
792
M币
1133
专家
4
粉丝
29
只看该作者 9楼 发表于: 2016-03-23
请登录后查看
快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个