打印

GD32 spi的半双工通信异常,接收的数据一直有问题

[复制链接]
781|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZLN4EVER|  楼主 | 2024-3-25 18:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

下面是初始化和发送函数,难道GD的库要在发送和接收时分别切换一次模式,切换发送和接收模式。

#define CURRENT_SPI     SPI1
#define READ_MODE   spi_disable(CURRENT_SPI); \
                    spi_bidirectional_transfer_config(CURRENT_SPI, SPI_BIDIRECTIONAL_RECEIVE); \
                    spi_enable(CURRENT_SPI);
#define WRITE_MODE  spi_disable(CURRENT_SPI); \
                    spi_bidirectional_transfer_config(CURRENT_SPI, SPI_BIDIRECTIONAL_TRANSMIT); \
                    spi_enable(CURRENT_SPI);

void spi_config(void)
{
       
        rcu_periph_clock_enable(RCU_GPIOB);
        //rcu_periph_clock_enable(RCU_AF);
        gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13 | GPIO_PIN_15);//MOSI 和 CLK

        //gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);

        gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12);//片选引脚cs
        rcu_periph_clock_enable(RCU_SPI1);

       
        spi_i2s_deinit(CURRENT_SPI);   
        spi_struct_para_init(&spi2);                // 初始化spi_init_struct结构体,设置默认参数       
        spi2.device_mode = SPI_MASTER;
        spi2.trans_mode  = SPI_TRANSMODE_BDTRANSMIT;
        spi2.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;
        spi2.frame_size = SPI_FRAMESIZE_8BIT;
        spi2.nss = SPI_NSS_SOFT;
        spi2.prescale = SPI_PSC_64;
        spi2.endian = SPI_ENDIAN_MSB;
        spi_init(CURRENT_SPI, &spi2);        // 使用配置好的spi2结构体初始化SPI2
         
    spi_crc_polynomial_set(CURRENT_SPI, 10);

    spi_crc_on(CURRENT_SPI);
        spi_enable(CURRENT_SPI);
        //spi_nss_output_enable(CURRENT_SPI);
       
}

void Well_Hal_spi_write_byte(uint8_t btye)
{
//        SPI_I2S_SendData(&hspi2,&btye,1,1000);

        while (spi_i2s_flag_get(CURRENT_SPI, SPI_FLAG_TBE) == RESET);       
        spi_i2s_data_transmit(CURRENT_SPI, btye);
        while(spi_i2s_flag_get(CURRENT_SPI, SPI_FLAG_TRANS));


}

使用特权

评论回复
沙发
理想阳| | 2024-3-26 16:31 | 只看该作者
SPI正常发送时就同时接收,没什么模式切换一说吧,

使用特权

评论回复
板凳
呐咯密密| | 2024-3-28 10:29 | 只看该作者
发送的同时就会接受,不存在切换的问题

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝