GD32H7 QSPI

[复制链接]
1597|3
MIAD 发表于 2025-11-11 18:10 | 显示全部楼层 |阅读模式
想请问一下,我在使用GD32H7开发时:
1. 使用SPI3当做QSPI
2. DZ设定为 8bit
3. BYTEN=1, WORDEN=0
使用上述条件,发送一个 byte 数据,BUS 上打出 2 个bytes,且发送的数据相同
这个异常是因为哪里没配置好吗

 楼主| MIAD 发表于 2025-11-11 18:11 | 显示全部楼层

GD32H7 QSPI

  • 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
dffzh 发表于 2025-11-13 13:45 | 显示全部楼层
本帖最后由 dffzh 于 2025-11-13 13:49 编辑

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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
MessageRing 发表于 2025-11-18 16:12 | 显示全部楼层
跑一下历程看看呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部