打印

开始使用GD32F303遇到的问题。

[复制链接]
4421|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
学习来咯|  楼主 | 2021-9-8 09:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 学习来咯 于 2021-9-9 09:47 编辑

初接触GD的芯片,现在就是很简单的翻转IO,遇到好奇怪的问题,自己摸索了一晚上没办法了,只能求助大伙了。希望解惑。因为模电太久没用,都忘了。
我现在的需求就是翻转GD32F303CCTE的48PIN封装的PB15,但是1ms周期都出现波形失真,如果把周期缩短,直接就把直流电平抬高,翻转速度再快一点直接一直是高电平了。一开始我怀疑是硬件(外部这个管脚只有PCB走线,没有接任何的电阻电容)问题,我把外部的走线割断直接测管脚也是一样的失真波形。但是同样的配置,同一个程序,在PB14上没有问题。 手上只有一个芯片,有没有可能是芯片坏了。。。。
程序是最简单的,默认配置主频是120Mhz。
20210909
试过了大伙的建议,都还是一样的问题,我这个端口外部下拉一个电阻会好很多,200K都可以输出(之前200K这个管脚是输出不了的)。怀疑是这个管脚受损坏了(因为配置了上拉,在输出低电平的时候不应该是以内部下拉形式输出的嘛。。。)。手上没有芯片,后面如果有的话会更新给大家结果。谢谢大家了!

#include "gd32f30x.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"



/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/

int main(void)
{
    /* configure systick */
  systick_config();
        
        rcu_periph_clock_enable(RCU_GPIOB);

        gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_MAX, GPIO_PIN_15);
   


    while (1){
                        GPIO_OCTL(GPIOB) |= (uint32_t)(GPIO_PIN_15);
                        delay_1ms(1);
                        GPIO_OCTL(GPIOB) &= ~((uint32_t)(GPIO_PIN_15));
                        delay_1ms(1);

        }
   
}
代码就是这么简单,如果我换成GPIO_PIN_14是正常的,就算不加延迟翻转都OK。


















使用特权

评论回复
沙发
学习来咯|  楼主 | 2021-9-8 09:16 | 只看该作者
希望能找到答案,因为这个需要用到SPI1,刚好用到这个管脚,发现使用硬件SPI发送数据时候这个MOSI(PB15)一直是高电平。

使用特权

评论回复
板凳
wifi99| | 2021-9-8 15:14 | 只看该作者
GPIO_OCTL(GPIOB) |= *(uint32_t*)(GPIO_PIN_15);
这样试下。

使用特权

评论回复
地板
圣骑士by| | 2021-9-8 17:04 | 只看该作者
把这个GPIO_OSPEED_MAX换成中间的速度试试

使用特权

评论回复
5
就这名字吧| | 2021-9-8 17:35 | 只看该作者
看手册上有一句,输出速度超过50M,需要使能速度补偿功能。不知道是不是这个原因,没用过303

使用特权

评论回复
6
学习来咯|  楼主 | 2021-9-9 09:41 | 只看该作者
wifi99 发表于 2021-9-8 15:14
GPIO_OCTL(GPIOB) |= *(uint32_t*)(GPIO_PIN_15);
这样试下。

谢谢,试了一样的是失真严重。

使用特权

评论回复
7
学习来咯|  楼主 | 2021-9-9 09:42 | 只看该作者
圣骑士by 发表于 2021-9-8 17:04
把这个GPIO_OSPEED_MAX换成中间的速度试试

2M 10M 50M都试过,一样的问题。

使用特权

评论回复
8
学习来咯|  楼主 | 2021-9-9 09:43 | 只看该作者
就这名字吧 发表于 2021-9-8 17:35
看手册上有一句,输出速度超过50M,需要使能速度补偿功能。不知道是不是这个原因,没用过303 ...

手动打开补偿也一样的,换其他低速的配置也一样的问题

使用特权

评论回复
9
lvben5d| | 2021-9-9 09:47 | 只看该作者
学习来咯 发表于 2021-9-8 09:16
希望能找到答案,因为这个需要用到SPI1,刚好用到这个管脚,发现使用硬件SPI发送数据时候这个MOSI( ...

看看手册 IO 需要重映射 还是 remap 或是默认 就是GPIO  哦

使用特权

评论回复
10
学习来咯|  楼主 | 2021-9-9 11:05 | 只看该作者
lvben5d 发表于 2021-9-9 09:47
看看手册 IO 需要重映射 还是 remap 或是默认 就是GPIO  哦

芯片默认就是GPIO的功能的。现在使GPIO翻转都有问题,使用SPI速度快了根本就实现不了。
During or just after the reset period, the alternative functions are all inactive and the GPIO
ports are configured as the input floating mode without Pull-Up (PU)/Pull-Down (PD) resistors.
But the JTAG/Serial-Wired Debug pins are configured as input PU/PD mode after reset:
PA15: JTDI in PU mode.
PA14: JTCK / SWCLK in PD mode.
PA13: JTMS / SWDIO in PU mode.
PB4: NJTRST in PU mode.
PB3: JTDO in Floating mode.

使用特权

评论回复
11
lvben5d| | 2021-11-5 09:15 | 只看该作者
本帖最后由 lvben5d 于 2021-11-5 09:18 编辑

P14 是 标准JTAG的一个功能引脚,你看下,是否需要 gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);           //PA15做普通IO    这个是我E103C8T6库函数, 上电复位P14 15估计是做JTAG那边的。   我去看了下 F303,  果然P14引脚上电复位 默认是  PA14 109 I/O 5VTDefault: JTCK, SWCLKRemap: PA14

使用特权

评论回复
12
chengxingyu| | 2022-7-16 15:00 | 只看该作者
spi速度别超过10M,否则就会有失真,别的芯片我试过也一样失真

使用特权

评论回复
13
pltczw666| | 2022-7-16 23:44 | 只看该作者
本帖最后由 pltczw666 于 2022-7-17 00:19 编辑

应该是这个管脚坏了。我也是用这个芯片,也用这个SPI1,速度30M,完全没问题。

使用特权

评论回复
14
pltczw666| | 2022-7-17 12:57 | 只看该作者
换个芯片吧,应该是管脚损坏了。我也是用这个CPU,也用SPI1,速度30M完全没问题。

使用特权

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

本版积分规则

3

主题

34

帖子

0

粉丝