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

使用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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版