查看: 304|回复: 3

[GD32F450方案分享] 还是放弃了,F450体验感受

[复制链接]

7

主题

0

好友

307

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-5-23 16:15
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-6-18 19:25:09 |显示全部楼层
      三月底的时候,看到论坛这个“【GD32F450 MCU】创意设计方案征集”活动,我就浏览了一下GD32F450 MCU的介绍,以及这个开发板的介绍,就简单写了个创意方俺,参加了预报名。因为看到这个MCU片上有高速USB外设,以及宣传中16-bit的ADC(实际上是降采样算出来的),就想到做个模拟采集工具。我也没下芯片和板子的资料来仔细看。
      后来我的ID出现在最后一批活动名单里面了,于是就花15元买了一块板子(反正捡个便宜,行不行再说……),然后5月初就收到板子了。因为我折腾MCU这些电子制作也就是业余搞,时间有限,加上又同时参加了其它的活动,用来实现这个起初的创意的时间更少。于是,也没怎么关注论坛这个板块。
      先说一下 GD32 Colibri-F450VE 这块板子:
    gd32.jpg

      我认为设计和做工上它是总体优于ST的 Nucleo-64 系列的(虽然也有不足的地方)。板载用户按钮的数量、LED的数量比ST的板子多,对于不想做扩展板的人来说,这样显然更方便。GPIO引出插针默认是没有焊的,对DIY来说限制又少了一些,不需要不焊更清爽。因为是100pin封装的缘故,可用I/O要比ST Nucleo-64的多,GD除了Arduino接口,平行地加了一排“colibri"接口作为扩展。
      作为用过好几块ST Nucleo的玩家,我对Nucleo最想吐槽的就是引出I/O口的排列(Nucleo-144比Nucleo-64做得好,但也还不尽入人意),比如想用SPI的一组引脚,在板子上找对应就是散的,搞得做扩展板都别扭。GD32F450VE的板子就好太多了,考虑了扩展性,请看这个表:
    connector.PNG

      在GD32F450VE上芯片比较多,除了SWD调试的xxxx-Link MCU,还有一片USB 2.0高速hub!!!,一片USB转串口。在没有看电路而只是看板子的时候,我认为这个设计是把调试器的USB和MCU自带的USB口都接到hub上,再从Hub到电脑。这样用一根线就可以开发调试USB的应用了,不像ST那样要插两条USB,更简洁。而且,用高速USB hub, 直接把F450的高速USB和PC连接了。当我兴冲冲地看电路图的时候,却发现…… F450的USB口根本没连到USB hub上!而且,F450没有高速USB的PHY, 只有全速的D+/D-信号,而高速USB需要配合外部PHY芯片的,板子上并没有。那么这个USB hub是做甚?原来是用来挂USB口的调试器和USB虚拟串口——像ST-Link v2-1一个芯片就搞定了,GD的调试器确没有带USB串口,于是上了一片CH340,又必须加一片hub芯片……
      由于没有直接能用的高速USB接口,我的创意基本泡汤了。但是后来又几次被管理员私信,催提交上传使用经验和方案设计了现在没有精力去自己做个UTMI接口的USB高速扩展卡,也未曾试过这类器件,我想用全速算了吧,间歇采样还是可以做少量数据采集的。
      GD的板子上带的是CMSIS-DAP调试器,所以当然不能用ST-link utility来下载了。GD提供了自己的下载工具软件,不过我还是用OpenOCD来先连一下看:
    cmsis-dap.PNG

      估计当成STM32F4x来调试没什么问题
      于是我尝试下软件开发,下载了GD官方的库。论ARM系列,我用过ST、NXP、Atmel的产品,主要还是ST的用的多。我开发工具是GCC toolchain, 轮到GD的时候,却发现这库里面缺少GCC的支持!对Keil, IAR的相关文件是有的,但是没有GCC编译工程需要的启动代码 xxxx-startup.s 以及linker需要的 xxxx-flash.ld 文件。GD没照顾GCC用户啊?
      既然说 GD32 基本兼容 STM32,那我就借用一下STM32F429的相关文件了,再试试能否编译。结果呢,在C代码这里过不去了,原因是:寄存器的定义和ST不一样,比如我用ST工程里面原来写的
      RCC->APB1ENR |= RCC_APB1ENR_TIM6EN;  // enable basic timer 6
    是不能编译的,因为 gd32f4xx.h 里根本没有定义 RCC 这个结构指针(不光是它用的设备名称叫RCU的问题),头文件的写法和ST的不一样。既然号称和ST软件兼容,到了C开发的软件上又不兼容了…… 也许有人说,我搞得太底层了,只用官方的库函数的话就兼容了。
      也许对没有用过ST MCU的用户来说,直接上GD32开发没问题。如果是对ST已经用得很熟悉,除非有特殊的必要,那还是继续用ST吧。先移植一整套库过来?怎样保证寄存器定义都一致?
      起初的创意是可能的,因为精力的原因,我决定放弃。写这个帖子,权当交作业吧。
    回复

    使用道具 举报

    2

    主题

    0

    好友

    1157

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2017-7-12 14:22
  • 签到天数: 97 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-6-19 10:18:06 |显示全部楼层
    资料的易用性确实欠缺. 例程都无法直接编译通过...
    回复

    使用道具 举报

    7

    主题

    0

    好友

    373

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-6-6 13:23
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-6-19 10:49:50 |显示全部楼层
    例程序是参考的。很多都要从寄存器开始捋,然后熟悉新的GD32固件封装,的确有些难度,再者就是寄存器封装上的说明稳当不是很清楚仅写了函数交差,流程相关的内容要从手册读取,确实要求起点较高。
    回复

    使用道具 举报

    7

    主题

    0

    好友

    307

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    奋斗
    2017-5-23 16:15
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-6-19 11:16:01 |显示全部楼层
    en, 因为搞ST已经从读手册查寄存器再自己写整过一遍了,没有必要再费工夫把GD32相同或相似功能的设备再捋一遍(仅仅是参加个创意活动)。本来ST的头文件就要完善地多,手册也写得更完善。但是,敢不确认寄存器表一致就把ST上的项目直接挪过来用么?!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-7-26 06:39 , Processed in 0.106656 second(s), 14 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部