这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » GD32 » GD32与STM32的兼容性详解

共20条 2/2 1 2 跳转至
高工
2015-03-16 22:35:52     打赏
11楼

11. SPI

    1) 输入与输出配置要求(STM32 不需要如此要求)

    解决方法 :

    GD32 在使用SPI 时,IO 的配置必须严格遵守主从模式下的输入与输出配置,而STM32 无此要求,相关代码如下:主机模式下IO 配置(主机以SPI 为例):

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_Init(GPIOA,&GPIO_InitStructure);

从机模式下IO 配置(从机以SPI2 为例):

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_15;

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;

GPIO_Init(GPIOB,&GPIO_InitStructure);

    3) 在GD32 的SPI 的时钟信号,空闲状态需要配置成高电平,以保证数据的稳定性,具体代码如下

    解决方法

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode = SPI_Mode_Master;


SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;

SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI1, &SPI_InitStructure);

    4) 当作为从机时,在GD32 中,时钟信号必须为8 的整数倍。

    解决方法

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode = SPI_Mode_Master;

SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;

SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI1, &SPI_InitStructure);

    5) 在GD32 中,不能使用SPI_I2S_FLAG_BSY 该位来判断SPI 总线数据是否接收或发送完成。


高工
2015-03-16 22:36:50     打赏
12楼

12. 看门狗

    1) 进入STOP 模式前打开看门狗,通过RTC 的ALR 唤醒后,程序会不断被复位的现像

    描述:IWDG 内部有个Reload 信号,KEY 寄存器写AAAA 会使其拉高,过一段时间自动拉低。在拉底之前进入STOP 状态会使Reload 信号一直为高,等到退出STOP 后也保持为高,之后再写AAAA 没有办法让Reload 产生上升沿,也就没办法更新计数器了。

    解决方法:进STOP 之前不要Reload,也可以调整下程序的顺序,把IWDG 的配置放到RTC配置之前,效果是一样的。


院士
2015-03-16 22:42:50     打赏
13楼
读了一遍,没全消化,还需要学习,谢谢版主。

院士
2015-03-17 09:11:39     打赏
14楼
前期都是理论性的东西,等待步入实践

高工
2015-03-17 11:33:38     打赏
15楼
和STM32相比还是有小小的差别啊

专家
2015-03-17 11:36:35     打赏
16楼
差别不大,熟悉一下,直接替换之前项目中使用的STM32

工程师
2015-03-18 20:20:00     打赏
17楼
膜拜,楼主加油。

专家
2015-03-19 08:58:21     打赏
18楼
GD32没听过啊

院士
2015-03-19 10:50:23     打赏
19楼
再不追赶,out了

高工
2015-04-03 14:16:27     打赏
20楼
GD32貌似比STM32功耗低吧。不知道和STM32L系列比怎么样?

共20条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]