硬汉嵌入式论坛

 找回密码
 立即注册
查看: 775|回复: 5
收起左侧

[技术讨论] 【求助】SPI0发送不了

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2024-12-22 17:41:17 | 显示全部楼层 |阅读模式
基于GD32F103的SPI0配置,用逻辑分析仪开始触发,啥也采集不到。

void MX_SPI0_INIT(void)
{
        /* RCU */
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_SPI0);
    rcu_periph_clock_enable(RCU_AF);
    gpio_pin_remap_config(GPIO_SPI0_REMAP, ENABLE);//REMAP SPI0
   
     /* GPIO */
    gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, Vol_CS_PIN);//CS
    gpio_init(SPI_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, Vol_SCK_PIN | Vol_SDI_PIN);//SCLK3   MOSI5
    gpio_init(SPI_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, Vol_SDO_PIN);//MISO4
   
    spi_parameter_struct spi_init_struct;
    spi_i2s_deinit(SPI0);
    /*初始化SPI参数结构体*/
    spi_struct_para_init(&spi_init_struct);
   
    /* configure SPI0 parameter */
    spi_init_struct.trans_mode           = SPI_TRANSMODE_FULLDUPLEX;
    spi_init_struct.device_mode          = SPI_MASTER;
    spi_init_struct.frame_size           = SPI_FRAMESIZE_8BIT;
    spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;
    spi_init_struct.nss                  = SPI_NSS_SOFT;
    spi_init_struct.prescale             = SPI_PSC_8;
    spi_init_struct.endian               = SPI_ENDIAN_MSB;
    spi_init(SPI0, &spi_init_struct);
        
    #if SPI_CRC_ENABLE
    /* configure SPI CRC function */
    spi_crc_polynomial_set(SPI0, 7);
    spi_crc_on(SPI0);
    #endif /* enable CRC function */
   
    spi_enable(SPI0);
}
系统时钟96MHZ。完全无法通信,找半天。各位大神有没有什么思路。

123.png


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-12-23 07:24:38 | 显示全部楼层
仅看楼主的代码,SPI时钟是不是没有开
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-12-23 17:43:58 | 显示全部楼层
eric2013 发表于 2024-12-23 07:24
仅看楼主的代码,SPI时钟是不是没有开

    rcu_periph_clock_enable(RCU_SPI0);这一句就是开了
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-12-23 17:45:09 | 显示全部楼层
找到问题了,引脚没注意,是特殊引脚,要重映射。
    gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);//仅使能SWD功能
    gpio_pin_remap_config(GPIO_SPI0_REMAP, ENABLE);//REMAP SPI0
加这两句就可以触发了,但是发送数据为空。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-12-24 07:50:17 | 显示全部楼层
雷雷雷 发表于 2024-12-23 17:45
找到问题了,引脚没注意,是特殊引脚,要重映射。
    gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ...

这种的话,在GD32的SDK软件包里面找个例子对比下
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-12-24 10:54:19 | 显示全部楼层
eric2013 发表于 2024-12-24 07:50
这种的话,在GD32的SDK软件包里面找个例子对比下

对比过,不同尝试还是不成功,找了前辈帮忙定位了一下问题,硬件SPI有问题,所以调两天都调不出来,现在改用软件SPI试一下。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 11:11 , Processed in 0.042036 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表