你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
wofei1314 提问时间:2015-11-19 20:37 /
本帖最后由 wofei1314 于 2015-11-20 09:42 编辑

如题,使用HAL库

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

  7.     if(status == HAL_OK)
  8.         return rxbyte;
  9.     else
  10.         return 255;
  11. }
复制代码
都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[0]==0x01)
          {
        //CDC_Transmit_FS(UserRxBufferFS,len_usbrx);
            id=w25_rdid3();
            UsbPrintf("SPI id:%x \r\n",id);
          }

只有第一次调用的时候,正确返回w25Q64的id(值:ef4016),第二次第三次后面所有的都是返回0.。。。

好郁闷,求指点。。。。

收藏 评论2 发布时间:2015-11-19 20:37

举报

2个回答
杨满意 回答时间:2015-11-19 20:43:00
我的软件不能用。。。。
moyanming2013 回答时间:2015-11-19 22:39:30
单步一下吧。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版