打印

如何快速的从 ST 平台转换到 GD 平台

[复制链接]
26710|78
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
GONGO|  楼主 | 2013-7-10 09:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 GONGO 于 2013-7-10 10:23 编辑

     首先,先要明确的是 GD 是硬件兼容蝴蝶的,但是由于提高了运行速度、以及内部工艺的不同,所以软件上可能都或多 少需要改动一点的!

 这里主要是讨论 如何快速移植原有的应用。






评分
参与人数 1威望 +10 收起 理由
锐鑫同创 + 10 很给力!
沙发
周立功GD32| | 2013-7-10 09:57 | 只看该作者
如果原先用了do while之类软件延时,则换成GD后速度加快很多,就可能导致控制外设的时序出错
所以应加大延时,根据我的经验,要增加一倍以上才可靠

使用特权

评论回复
板凳
GONGO|  楼主 | 2013-7-10 10:02 | 只看该作者
本帖最后由 GONGO 于 2013-7-10 10:32 编辑

Q 01ST上面原来的程序可以直接在GD上运行吗?
A 01:对于大部分原来运行在 ST 系列 Flash 中的程序,是需要少量修改和调试的。

使用特权

评论回复
地板
锐鑫同创| | 2013-7-10 12:38 | 只看该作者
GONGO 发表于 2013-7-10 10:02
Q 01:ST上面原来的程序可以直接在GD上运行吗?A 01:对于大部分原来运行在 ST 系列 Flash 中的程序,是需 ...

期待后续。

使用特权

评论回复
5
cym_anhui| | 2013-7-10 16:58 | 只看该作者
Pin对Pin吗?STM32F103VCT6

使用特权

评论回复
6
周立功GD32| | 2013-7-10 17:02 | 只看该作者
本帖最后由 锐鑫同创 于 2013-7-10 17:20 编辑

是的,所有型号Pin to Pin兼容

使用特权

评论回复
7
锐鑫同创| | 2013-7-10 17:22 | 只看该作者
cym_anhui 发表于 2013-7-10 16:58
Pin对Pin吗?STM32F103VCT6

目前只兼容到VB,VC的要到9月份才出pin to pin的。

使用特权

评论回复
8
限量_个性。| | 2013-7-11 08:16 | 只看该作者
好贴  期待后续。

使用特权

评论回复
9
GONGO|  楼主 | 2013-7-11 10:21 | 只看该作者
本帖最后由 GONGO 于 2013-7-11 10:23 编辑

Q 02使用 ISP 下载需要注意的问题
A 02:GD 基本兼容原来的 ST ISP下载程序,但是由于内部实现不同,GD 的全片擦除时间稍长了一点。
      原有的 ST 发布的以及专业的下载器基本不需改动。(一般会有一个配置参数)            
      对于自己开发过 ISP 的朋友,需要把片擦除的等待时间加长一点。
      对于使用 Jtag 和 SW 编程的用户是没有影响的。
                           

使用特权

评论回复
10
GONGO|  楼主 | 2013-7-11 10:41 | 只看该作者
本帖最后由 GONGO 于 2013-10-15 15:11 编辑

Q 03我是应该用 ST 的库还是使用 GD 的库
A 03:看过 GD 手册的朋友会发现,GD 的全部寄存器地址都是可以兼容 ST 的(极个别的某几位定义不同,但几乎不影响使用)
      但是寄存器的名称确实还是有比较大的差异,对于当前大部分的需要移植的朋友来讲,我个人推荐还是在 ST 的库中修改。
      这样可以保持原来的阅读习惯,并且改动量并不是很大。最好是在库中的启动代码前面加一段。
      读一下 ID code,自动区分一下芯片的厂商和类型,这样就一劳永逸了。
      按照 ARM 和 JEDEC-106 标准,
         
      执行下面这个函数

                uint16_t Get_JTAG_ID( )
                {
                        if( *( uint8_t *)( 0xE00FFFE8 ) & 0x08 )
                        {
                                return   ( ( *( uint8_t *)( 0xE00FFFD0 ) & 0x0F ) << 8 ) |
                                              ( ( *( uint8_t *)( 0xE00FFFE4 ) & 0xFF ) >> 3  )  |
                                              ( ( *( uint8_t *)( 0xE00FFFE8 ) & 0x07 ) << 5 ) + 1 ;
                        }
               
               
                        return  0;
                }
         
      返回  0x041 是 ST (ST手册 Doc ID 13902 Rev 14 的 1055页    31.6.2 和 31.6.4 )
      返回  0x7A3 是 GD 。         

         
      另外可以通过 JLink 读取该值,

     ST103
                  


      #1 Id: 0x06414041  ,后三位。
      
     GD103
         

     #1 Id: 0x790007A3  ,后三位。

后面显示 : Unknwon device    这里不用担心,只是Jlink 库还未更新的缘故,不影响使用。估计很快就会显示 GD32 了。

使用特权

评论回复
11
lpcfans| | 2013-7-12 11:13 | 只看该作者
定时器和PWM,IIC,RTC能否加强?

使用特权

评论回复
12
GONGO|  楼主 | 2013-7-12 13:44 | 只看该作者
本帖最后由 GONGO 于 2013-7-12 15:38 编辑
lpcfans 发表于 2013-7-12 11:13
定时器和PWM,IIC,RTC能否加强?

具体指哪方面?
GD和ST 相比,这些模块的功能定义基本一致,性能有一定提高,主要是速度快了!

使用特权

评论回复
13
lpcfans| | 2013-7-12 14:39 | 只看该作者
GONGO 发表于 2013-7-12 13:44
具体指哪方面?
GD和ST 相比,这些模块的功能定义基本一致,性能有一定提高,最要是速度快了! ...

16位能否做出32位。

使用特权

评论回复
14
GONGO|  楼主 | 2013-7-16 17:33 | 只看该作者
本帖最后由 GONGO 于 2013-7-16 17:57 编辑
lpcfans 发表于 2013-7-12 14:39
16位能否做出32位。

你是指用两个 TIM 拼接出一个32 TIM 吧。
这个是可以的,不过拼的时候选 TIM2-4
不要选TIM1

可以按以下方案测试:



比较模式
TIM3 二分频,TIM4+TIM2 组成一个 32 bit 定时器。这样当 TIM4+TIM2   计数一个偶数时正好 和 TIM3 二分频以后的值可以重合。
用TIM3 CCR1 比较一个超过 0x8000的值, 把这个值*2 作为 32 位计数器的输出比较值,
TIM4 作为 32位计数器 的 MSB(TIM4_CCR1=MSB),TIM2 作为LSB( TIM2_CCR1=LSB )
TIM4_PSC = 0xFFFF. TIM2 配置成从,并且 one pulse mode , SlaveMode = Trigger
把TIM4  的 OC1 输出作为触发源输出给 TIM2,TIM4 CCR1输出比较启动 TIM2执行一次。
用TIM1 同时触发TIM3和TIM4

用示波器测量 TIM2 和 TIM3 的 CH1 输出,可以看到完美的重合。
如果有兴趣,用MCO(PA8)把 System clk 输出出来,一起测一下,会发现,一个时钟都不差。
说 32 位 就是 32 位!

使用特权

评论回复
15
永远的不知| | 2013-7-16 17:41 | 只看该作者
GONGO 发表于 2013-7-16 17:33
你是指用两个 TIM 拼接出一个32为TIM吧。
这个是可以的,不过拼的时候选 TIM2-4
不要选TIM1

赞专业。

使用特权

评论回复
16
lynx| | 2013-7-17 10:43 | 只看该作者
灰常专业,

使用特权

评论回复
17
jack888518| | 2013-7-17 10:54 | 只看该作者
GONGO 发表于 2013-7-16 17:33
你是指用两个 TIM 拼接出一个32位 TIM 吧。
这个是可以的,不过拼的时候选 TIM2-4
不要选TIM1 ...

这种带技术应用分析讨论的回复最棒了~

使用特权

评论回复
18
lpcfans| | 2013-7-17 11:14 | 只看该作者
GONGO 发表于 2013-7-16 17:33
你是指用两个 TIM 拼接出一个32位 TIM 吧。
这个是可以的,不过拼的时候选 TIM2-4
不要选TIM1 ...

多谢。
专业。

使用特权

评论回复
19
lpcfans| | 2013-7-17 11:15 | 只看该作者
GONGO 发表于 2013-7-12 13:44
具体指哪方面?
GD和ST 相比,这些模块的功能定义基本一致,性能有一定提高,主要是速度快了! ...

STM32的IIC和RTC不怎么好用。IIC软件模拟的,没用硬件IIC.
RTC对外部的晶振要求高。

TIMER,PWM希望以后新产品能做到32位。

谢。

使用特权

评论回复
20
锐鑫同创| | 2013-7-17 15:33 | 只看该作者
lpcfans 发表于 2013-7-12 11:13
定时器和PWM,IIC,RTC能否加强?

rtc和iic方面,gd32也进行了改进。

使用特权

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

本版积分规则

5

主题

69

帖子

3

粉丝