打印

GD32 spi0 的cs线电平不稳定

[复制链接]
3605|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuxiaosen|  楼主 | 2021-6-25 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GD32 spi0 的cs线有时候会在SCK线拉低的时候出现短暂的高电平。以至于整个spi传输错误,这个是为什么?我测试过,在不初始化spi的时候去拉高拉低cs引脚,没有发送有突然高电平的出现。我用的板子是GD32F303VCT6开发板。

使用特权

评论回复

相关帖子

沙发
yuxiaosen|  楼主 | 2021-6-25 10:25 | 只看该作者

GD32 spi0 的cs线电平不稳定

//初始化函数
void spi_config_init(void)
{
    spi_parameter_struct spi_init_struct;
    /* enable SPI clock */
    rcu_periph_clock_enable(RCU_SPI0);
    /* deinitialize SPI0 peripheral */
    spi_i2s_deinit(SPI0);
    /* SPI0 parameter config */
    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_32;
    spi_init_struct.endian               = SPI_ENDIAN_MSB;
    spi_init(SPI0, &spi_init_struct);

    /* enable the SPI0 peripheral */
    spi_enable(SPI0);

}
//spi gpio配置
void spi_i2s_gpio_config(void)
{
    /* enable the GPIO clock */
    rcu_periph_clock_enable(RCU_AF);
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOD);
    //SPI
    gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
    gpio_init(GPIOD, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
    gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
    gpio_bit_set(GPIOA, GPIO_PIN_4);
}

//发送函数
void spi_send_data(uint8_t *data,uint8_t len)
{
      gpio_bit_reset(GPIOA,GPIO_PIN_4);

      for(uint8_t i = 0; i < len; i++)
      {
           while(spi_i2s_flag_get(SPI0, SPI_FLAG_TBE) == RESET);
           spi_i2s_data_transmit(SPI0, data[i]);
           while(SET == spi_i2s_flag_get(SPI0, SPI_FLAG_TRANS));
      }
      //delay(10);
      gpio_bit_set(GPIOA,GPIO_PIN_4);
      delay(10);


使用特权

评论回复
板凳
yuxiaosen|  楼主 | 2021-6-25 10:56 | 只看该作者

GD32 spi0 的cs线电平不稳定

我把sck时钟初始化去掉,电平就稳定了,感觉gd32的时钟有问题啊。

使用特权

评论回复
地板
yuxiaosen|  楼主 | 2021-6-25 18:57 | 只看该作者

GD32 spi0 的cs线电平不稳定

好了,解决了,经过各种尝试,最终在硬件上找到了问题所在,但也不算,可能是接线没有接好的原因还是什么,spi还是可以正常通信

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝