打印

GD32F103xx应用笔记

[复制链接]
楼主: 锐鑫同创
手机看帖
扫描二维码
随时随地手机跟帖
21
神器飞天 发表于 2014-1-21 13:22
你所用的芯片型号可以提供吗?

你好,我用的型号是GD32F103RET6 下面还标着AEP1991 AM1341,
我用的IDE 是KEIL V4.70 , 用的调试器是 ST-Link (ST F4开发板上带的ST-Link) 用SWD
用的ST的库版本是V3.6.1

使用特权

评论回复
22
edmundchang888| | 2014-1-21 16:40 | 只看该作者
另外想请问一下,我现在的应用,在STM32上是可以的,因为想用国产芯片,所以尝试移植过来,
我直接用烧进来不修改任何东西,跑HSI 4x16 64MHz 还没发现问题,基本能跑,但有些人说是
山寨的,里面完全一样,有些人说不太一样需要修改部分代码,我找的的资料比较零碎,有些说
DMA需要注意,有些说某个GPIO的用法不太行,有些说FLASH不太一样,也没有一个对照表告诉我们
需要改那里,注意那里,没有官方的说明所以我不太敢用,需要测试久一点才敢用,希望有高手可以帮我评估一下
我的应用如下
硬件方面:
(1)UART2  用了 DMA1_channel_6 + DMA1_channel_7 + UART_2 中断
(2)UART4  用了 DMA2_channel_3 + DMA2_channel_5 + UART_4 中断
(3)SPI1  用了 DMA1_channel_2 + DMA1_channel_3 + SPI1中断
(4)SPI2  用了 DMA1_channel_5
(5)SPI3  用了 中断
(6)PWM 用了 PB0, PB1, PC6, PC7
(7)ADC 用了 PC0, PC1, PC2, PC3
(8)几个GPIO
(9)SysTick  用了 SysTick 中断
(10)FLASH  用原来ST库里的函数FLASH_Unlock(),FLASH_ProgramHalfWord()等等对FLASH进行擦和写
(11)有使用BKP RAM 电池供电储存器 来保存数据
(12)有使用WATCH_DOG
(13)有用GPIO PB6, PB7 --> EXTI9_5_IRQ 中断
其他软件行为:
(1)有调用 SCB->VTOR 重映射跳转表
(2)有读取 96bit 的 UID (在这个芯片里也是96bit吗?也是唯一码吗?)
(3)有在程序里打开ROP,以及关闭ROP(芯片清空)
(4)部分函数直接访问非对齐数据(STM32支持,不知道这个行不?)




使用特权

评论回复
23
神器飞天| | 2014-1-21 18:15 | 只看该作者
edmundchang888 发表于 2014-1-21 15:48
你好,我用的型号是GD32F103RET6 下面还标着AEP1991 AM1341,
我用的IDE 是KEIL V4.70 , 用的调试器是 ST ...

写进去的数值是对的,应该是已经运行在108MHz了。
但调试过程中看到的返回值有误,怀疑样片是否已损坏?可以给我您的地址,我们会提供新的样片供您试用。
另外,您也可以先设置为72MHz,来做代码移植。

至于差异的对比,因为MCU内部各寄存器和模块协同工作,比较复杂,还是要看您的具体应用和代码的,而不是简单的说哪里就改哪里。
兼容加快了代码移植速度,很快就可以在GD32上跑起来,但是具体的功能还是要根据实际情况来调整的。

使用特权

评论回复
24
edmundchang888| | 2014-1-21 19:15 | 只看该作者
神器飞天 发表于 2014-1-21 18:15
写进去的数值是对的,应该是已经运行在108MHz了。
但调试过程中看到的返回值有误,怀疑样片是否已损坏? ...

你好,你的意思是不是说,写进去跟读出来在调试器上看是没有同步?还是说这个寄存器的这个位本身有读的问题?我是发现设高频率运行起来后串口有问题才跟踪进去,发现串口初始化时,读出那个位是0所以算出了48Mhz,所以串口速率不正常,如果只是跟调试器的同步有关的话,串口初始化的时候读出来的那个位应该是对的,如果是寄存器的那个位读有问题的话,我们应该可以写死串口的初始化,不使用读回配置来判断时钟速率,我会试一下这个方法,然后再判断一下他是否跑在设定的时钟,不行的话再换芯片,因为现在设64Mhz是正常的,芯片应该没这么容易坏吧?,设置72Mhz的话,好像不行,我使用HSI,HSI一定要除2,如果用不了那个位的话,只能乘以16倍,我是希望可以跑到96Mhz左右了,,另外你说的可能烧掉,先谢谢你了,我手头上还有样片,

使用特权

评论回复
25
edmundchang888| | 2014-1-21 21:44 | 只看该作者
神器飞天 发表于 2014-1-21 18:15
写进去的数值是对的,应该是已经运行在108MHz了。
但调试过程中看到的返回值有误,怀疑样片是否已损坏? ...

非常感谢你的提醒,我已经测试过了,确定是读回来的问题,68~100Mhz我都测试清楚了,100以上我就没测试了,因为不打算太靠近极限,原来在这个论坛上有人发的贴说修改void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)这个函数,我把一个判断取消了不判断那个位,运行正常,不知道是不是有些型号有这个问题有些没有呢?
//       if(((pllmull)&(0x08000000)) != 0)
           pllmull = (((pllmull)&(0xF7FFFFFF)) >> 18) + 17;
//       else
//           pllmull = ( pllmull >> 18) +2;

希望有遇到同样问题的人有用

谢谢你

使用特权

评论回复
26
edmundchang888| | 2014-1-22 18:42 | 只看该作者
GD32F103RET6,我的程序里第一次启动检测到没有打开ROP就会打开ROP,接收到某个指令时会取消ROP并清空芯片
但当编译器选择了优化等级 (-O3) 的情况下,程序出问题了,ST-Link也打不开,取消ROP也不行,需要用ST-Link不断重复
连接,擦片(擦一半会出错),取消ROP(也是一半就出错),重复这几个步骤好几遍,再把没有优化的程序烧进去,然后通过程序内部取消ROP
芯片才可以正常继续使用,在STM32里不会这样,请问有没有人遇到同样的问题可以指导一下啊?
另外出问题后要重复很多次去擦,我前几天在论坛上看到有资料说FLASH不太一样,请问一下有没有更合适的工具或者烧写器推荐一下啊?

使用特权

评论回复
27
happyrasen| | 2014-1-26 20:37 | 只看该作者
我想知道的是GD的芯片可以使用HSI跑到96M这么高的频率并且稳定运行吗?是否意味着用GD的芯片可以不使用外部晶振也就是HSE时钟了?

使用特权

评论回复
28
niuyaliang| | 2014-1-27 22:28 | 只看该作者
我其实想问楼主,这个新锐同创和以前的铭正同创是不是一家子呢

使用特权

评论回复
29
lishunde| | 2014-5-2 22:53 | 只看该作者
国产货,尽用鬼文文档,严重郫视

使用特权

评论回复
30
lishunde| | 2014-5-2 23:13 | 只看该作者
[信息] ST官方发布中文应用笔记供用户使用,https://bbs.21ic.com/icview-709244-1-1.html 看看人家,到底谁重视中国市场,谁重视中国客户,就别嚷嚷支持国产,还是看你自己做的怎么样了

使用特权

评论回复
31
申小林一号| | 2014-6-29 09:13 | 只看该作者
收到你的资料了谢谢了,刚刚才卡斯和ixuexi应该会有很大的帮助

使用特权

评论回复
32
scenely| | 2014-7-1 11:40 | 只看该作者
谢谢楼主分享,

使用特权

评论回复
33
hupi| | 2014-8-11 15:51 | 只看该作者
我用Jlink Commander 都识别不到 GD 单片机怎么回事啊

使用特权

评论回复
34
sdnumcu| | 2014-8-16 17:04 | 只看该作者
看看

使用特权

评论回复
35
芥末青豌豆| | 2015-2-26 09:17 | 只看该作者
凑个热闹

使用特权

评论回复
36
vivilzb1985| | 2015-3-6 17:46 | 只看该作者
GD32的flash的用法资料介绍,这个很重要的。

使用特权

评论回复
37
shenmu2012| | 2015-3-8 16:54 | 只看该作者
这几个关于GD32F103芯片的资料我收下。

使用特权

评论回复
38
firstblood| | 2015-3-9 19:27 | 只看该作者
该分享的资料非常不错的,关于103芯片的资料的。

使用特权

评论回复
39
comeon201208| | 2015-3-11 23:04 | 只看该作者
这个是基本的资料的,,分享了吧。

使用特权

评论回复
40
angerbird| | 2015-3-12 20:48 | 只看该作者
像应用笔记这种资料的很是不错的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则