问答

汇集网友智慧,解决技术难题

21ic问答首页 - GD32H7 QSPI

spi 开发 TE 使用 GD32H7 发送

GD32H7 QSPI

MIAD2025-11-11
想请问一下,我在使用GD32H7开发时:
1. 使用SPI3当做QSPI
2. DZ设定为 8bit
3. BYTEN=1, WORDEN=0
使用上述条件,发送一个 byte 数据,BUS 上打出 2 个bytes,且发送的数据相同
这个异常是因为哪里没配置好吗

回答 +关注 1
1553人浏览 3人回答问题 分享 举报
3 个回答
  • 跑一下历程看看呢
  • 本帖最后由 dffzh 于 2025-11-13 13:49 编辑

    还没用过QSPI总线,GD官网上应该有QSPI的例程,或者用GD32 Embedded Builder配置直接生成代码

    3548869157118469ab.png

    • spi3_peripheral_config();
    •                 /* spi3 io output enable */
    •                 spi_quad_io23_output_enable(SPI3);
    •                 /* spi3 quad enable */
    •                 spi_quad_enable(SPI3);
    •                 /* spi3 quad write enable */
    •                 spi_quad_write_enable(SPI3);
    •                 /* spi3 quad write access byte enable */
    •           spi_byte_access_enable(SPI3);
    •                 /* spi3 quad write access word disable */
    •                 spi_word_access_disable(SPI3);
    •                 /* FIFO level set 4-data frame */
    •     spi_fifo_threshold_level_set(SPI3, SPI_FIFO_TH_04DATA);
    •                 /* configure SPI data frame size */
    •                 spi_i2s_data_frame_size_config(SPI3, SPI_DATASIZE_8BIT);
    •                 /* configure SPI data frame size */
    •                 spi_current_data_num_config(SPI3, 0);
    •                 /* spi3 enable */
    •                 spi_enable(SPI3);
    •                
    •                 /* set nss low */
    •     SET_SPI3_NSS_LOW
    •           //spi_dma_enable(SPI3, SPI_DMA_RECEIVE);
    •                 //spi_dma_enable(SPI3, SPI_DMA_TRANSMIT);
    •                 /* Polling SPI TP flag */
    •                 while(spi_i2s_flag_get(SPI3, SPI_FLAG_TP) == RESET){};
    •                 /* Polling SPI TC flag */
    •                 while(spi_i2s_flag_get(SPI3, SPI_FLAG_TC) == RESET){};
    •                 spi_i2s_data_transmit(SPI3, 0xEE);
    •                 /* SPI master start transfer */
    •                 spi_master_transfer_start(SPI3, SPI_TRANS_START);
    •                 /* wait DMA transmit complete */
    •     //while(dma_flag_get(DMA0, DMA_CH4, DMA_FLAG_FTF) == RESET){};
    •                                
    •                 /*Polling SPI TC flag  */
    •                 while(spi_i2s_flag_get(SPI3, SPI_FLAG_TC) == RESET){};
    •                 /* Clear DMA Transfer Complete Flags */
    •     //dma_flag_clear(DMA0, DMA_CH4, DMA_FLAG_FTF);
    •                 /* set nss high */
    •                 SET_SPI3_NSS_HIGH

您需要登录后才可以回复 登录 | 注册