wofei1314 发表于 2015-11-19 20:37:59

使用Cube 的 生成的HAL 库SPI代码,只能发送一次数据

本帖最后由 wofei1314 于 2015-11-20 09:42 编辑

如题,使用HAL库

SPI读写代码:
uint8_t w25_exchangebyte(uint8_t txbyte)
{
    uint8_t rxbyte=0;
    HAL_StatusTypeDef status;
   
    status = HAL_SPI_TransmitReceive(&hspi2,&txbyte,&rxbyte,1,100);

    if(status == HAL_OK)
      return rxbyte;
    else
      return 255;
}
都W25Q64的代码,以前测试好用的,现在只有第一次读好用,第二次调用都出来的就是 0 ,不知何故,求解答。。。代码如下:uint32_t w25_rdid3(void)
{
    uint32_t dd=0;
    AT_CS_LOW();
    w25_exchangebyte(W25X_JedecDeviceID);
    dd =w25_exchangebyte(Dummy) << 16;
    dd |= w25_exchangebyte(Dummy) << 8;
    dd |= w25_exchangebyte(Dummy);

   
    //HAL_SPI_TransmitReceive(&hspi2,(uint8_t *)(&w25_tmp),(uint8_t *)(&dd),4,100);
   
    AT_CS_HIGH();      
    return dd;
}
main函数中有如下代码(都是CubeMX自动生成的,配置了GPIO引脚,时钟、SPI。。。。):
MX_GPIO_Init();
MX_SPI2_Init();

while循环里使用USB来触发读命令
if(UserRxBufferFS==0x01)
          {
      //CDC_Transmit_FS(UserRxBufferFS,len_usbrx);
            id=w25_rdid3();
            UsbPrintf("SPI id:%x \r\n",id);
          }
只有第一次调用的时候,正确返回w25Q64的id(值:ef4016),第二次第三次后面所有的都是返回0.。。。

好郁闷,求指点。。。。

杨满意 发表于 2015-11-19 20:43:00

我的软件不能用。。。。

moyanming2013 发表于 2015-11-19 22:39:30

单步一下吧。
页: [1]
查看完整版本: 使用Cube 的 生成的HAL 库SPI代码,只能发送一次数据