打印

GD32F407在使用SPI2时读出flash_id为0XFFFFFF

[复制链接]
9083|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangkl11|  楼主 | 2024-5-21 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

使用特权

评论回复
沙发
wangkl11|  楼主 | 2024-5-21 10:30 | 只看该作者

GD32F407在使用SPI2时读出flash_id为0XFFFFFF

spi_parameter_struct spi_init_struct;

    rcu_periph_clock_enable(RCU_GPIOB);
          rcu_periph_clock_enable(RCU_GPIOC);
    rcu_periph_clock_enable(RCU_SPI2);

    /* SPI5_CLK(PB3), SPI5_MISO(PB4), SPI5_MOSI(PB5), SPI5_IO2(PC9) and SPI5_IO3(PC10) GPIO pin configuration */
    gpio_af_set(GPIOC, GPIO_AF_5, GPIO_PIN_10 | GPIO_PIN_9);
    gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_10 | GPIO_PIN_9);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, GPIO_PIN_10 | GPIO_PIN_9);

           gpio_af_set(GPIOB, GPIO_AF_5, GPIO_PIN_3 | GPIO_PIN_4| GPIO_PIN_5);
    gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3 | GPIO_PIN_4| GPIO_PIN_5);
    gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ,  GPIO_PIN_3 | GPIO_PIN_4| GPIO_PIN_5);
       
    /* SPI5_CS(PC11) GPIO pin configuration */
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);

    SPI_FLASH_CS_HIGH();

    /* SPI5 parameter config */
    spi_init_struct.trans_mode           = SPI_TRANSMODE_FULLDUPLEX;//SPI在全双工通讯中接收/发送数据
    spi_init_struct.device_mode          = SPI_MASTER;//SPI为主机模式且SWNSS=1
    spi_init_struct.frame_size           = SPI_FRAMESIZE_8BIT;//SPI使用8位数据帧格式
    spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;//在SPI为空闲状态时,CLK引脚拉低,且"在第1个时钟跳变沿时开始采集第1位数据"
    spi_init_struct.nss                  = SPI_NSS_SOFT;//使用NSS软件模式:NSS电平取决于SWNSS位;
    spi_init_struct.prescale             = SPI_PSC_32; //SPI预分频
    spi_init_struct.endian               = SPI_ENDIAN_MSB;//先发送高位
    spi_init(SPI2, &spi_init_struct);

    /* quad wire SPI_IO2 and SPI_IO3 pin output enable */
    spi_quad_io23_output_enable(SPI2);

    /* enable SPI5 */
    spi_enable(SPI2);

使用特权

评论回复
板凳
wangkl11|  楼主 | 2024-5-21 10:32 | 只看该作者

GD32F407在使用SPI2时读出flash_id为0XFFFFFF

flash_id=spi_flash_read_id();  //DBUG 出来 flash_id = 0x00ffffff
int32_t spi_flash_read_id(void)
{
    uint32_t temp = 0, temp0 = 0, temp1 = 0, temp2 = 0;

    /* select the flash: chip select low */
    SPI_FLASH_CS_LOW();

    /* send "RDID " instruction */
    spi_flash_send_byte(RDID);

    /* read a byte from the flash */
    temp0 = spi_flash_send_byte(DUMMY_BYTE);
    /* read a byte from the flash */
    temp1 = spi_flash_send_byte(DUMMY_BYTE);

    /* read a byte from the flash */
    temp2 = spi_flash_send_byte(DUMMY_BYTE);

    /* deselect the flash: chip select high */
    SPI_FLASH_CS_HIGH();

    temp = (temp0 << 16) | (temp1 << 8) | temp2;

    return temp;
}

使用特权

评论回复
地板
trucyw| | 2024-5-21 15:59 | 只看该作者
有试过其他通道没有

使用特权

评论回复
评论
wangkl11 2024-5-22 17:11 回复TA
用PC10 11 12也是一样 
5
wangkl11|  楼主 | 2024-5-21 16:24 | 只看该作者
trucyw 发表于 2024-5-21 15:59
有试过其他通道没有

没用 只用了SPI2

使用特权

评论回复
6
trucyw| | 2024-5-22 08:25 | 只看该作者
可以试下其他SPI

使用特权

评论回复
7
wangkl11|  楼主 | 2024-5-22 10:06 | 只看该作者
trucyw 发表于 2024-5-22 08:25
可以试下其他SPI

GD32F407ZET6 要使用PB3和PB4,怎么禁止JTAG-DP

使用特权

评论回复
8
trucyw| | 2024-5-23 07:41 | 只看该作者
设置remap应该就可以,IO复用

使用特权

评论回复
9
laocuo1142| | 2024-5-23 11:56 | 只看该作者
SPI配置是否有误

使用特权

评论回复
10
flycamelaaa| | 2024-5-23 20:00 | 只看该作者
检查SPI数据线和控制线(如片选线)是否连接正确,并且没有短路或断路。

使用特权

评论回复
11
powerantone| | 2024-5-23 20:00 | 只看该作者
确认您发送的读取ID命令是Flash设备支持的,并且命令格式正确。
检查您是否等待了足够的时间让Flash设备响应读取请求。

使用特权

评论回复
12
stormwind123| | 2024-5-23 23:00 | 只看该作者
检查接收到的数据是否按字节正确接收,并考虑字节序(大端或小端)问题。

使用特权

评论回复
13
linyu0395| | 2024-5-28 10:46 | 只看该作者

GD32F407在使用SPI2时读出flash_id为0XFFFFFF

建议接个逻辑仪分析一下  线束不多  检测结果一目了然

使用特权

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

本版积分规则

8

主题

34

帖子

0

粉丝