打印

GD32F103 SPI

[复制链接]
1015|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WANGZHONGWANG|  楼主 | 2022-5-7 16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 WANGZHONGWANG 于 2022-5-7 16:21 编辑

GD32F103 的SPI 就不发时钟信号,ST就行
spi_parameter_struct spi_init_struct;
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_SPI1);

    /* SPI0_SCK(PA5), SPI0_MISO(PA6) and SPI0_MOSI(PA7) GPIO pin configuration */
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13 | GPIO_PIN_15);
    gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
    /* SPI0_CS(PE3) GPIO pin configuration */
    gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);

    /* chip select invalid*/
    gpio_bit_set(GPIOB,GPIO_PIN_12);

    /* 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_2;
    spi_init_struct.endian               = SPI_ENDIAN_MSB;
    spi_init(SPI1, &spi_init_struct);

    /* enable SPI0 */
    spi_enable(SPI1);
void  SPIv_WriteData(u8 Data)
{
/*unsigned char i=0;
for(i=8;i>0;i--)
{
   if(Data&0x80)
  {
   GPIOB->BOR=GPIO_PIN_15;      //1
  }
    else
  {
   GPIOB->BCR=GPIO_PIN_15;      //1
  }
    GPIOB->BOR=GPIO_PIN_13;      //1
    GPIOB->BCR=GPIO_PIN_13;      //0
    Data<<=1;
}*/
while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_TBE));
SPI_DATA(1)=Data;
  delay_ns(22);
}

使用特权

评论回复
沙发
AnkerSong| | 2022-5-9 15:40 | 只看该作者
本帖最后由 AnkerSong 于 2022-5-9 15:44 编辑

你发送函数参数填错了,是SPI1,不是1.

u8 SPIv_WriteData(u8 Data)
{
while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_TBE));
SPI_DATA(SPI1)=Data;
while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_RBNE));
return SPI_DATA(SPI1);
}
保守一点,你先用函数也成啊
u8 SPIv_WriteData(u8 Data)
{
while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_TBE));
spi_i2s_data_transmit(SPI1,Data);
SPI_DATA(SPI1)=Data;
while(RESET == spi_i2s_flag_get(SPI1, SPI_FLAG_RBNE));
return (u8)spi_i2s_data_receive(SPI1);
}

使用特权

评论回复
板凳
fuqinyyy| | 2022-5-10 08:36 | 只看该作者
直接拿的ST程序在跑?

使用特权

评论回复
地板
kiwis66| | 2022-5-11 21:43 | 只看该作者
没配置好啊

使用特权

评论回复
5
tpgf| | 2022-6-6 10:57 | 只看该作者
这种错误难道没有报错信息吗

使用特权

评论回复
6
heimaojingzhang| | 2022-6-6 11:07 | 只看该作者
spi的名字写错了

使用特权

评论回复
7
keaibukelian| | 2022-6-6 11:35 | 只看该作者
不能一点都不改动吧

使用特权

评论回复
8
labasi| | 2022-6-6 11:55 | 只看该作者
这都可以通过编译?!

使用特权

评论回复
9
paotangsan| | 2022-6-6 12:06 | 只看该作者
引脚初始化 也是一样的吗

使用特权

评论回复
10
renzheshengui| | 2022-6-6 12:13 | 只看该作者
难道引脚是完全兼容的?

使用特权

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

本版积分规则

5

主题

7

帖子

1

粉丝