• STM32 SPI 发送第一个数据不成功问题


    STM32的标准库,跟HAL库都是很实用的,

    在使用SPI库的过程中一定要注意时序的问题。

    我在调试SPI过程中,调试了两个IC,都是用HAL库,

    第一个IC没出问题,第二个IC出现了第一次发送数据不成功问题,

    不管发什么数据,交互结果都是0x00,

    我一开始用的是HAL_SPI_TransmitReceive();

    这个函数,一直无法成功,改用标准库结果也是一样;

    后来查到可能是收发太快的原因,

    这里说的收发太快并不是说两个数据之间,而是一个交互的时候收发太快;

    于是我把它改为发送接收之间加个延时问题解决:

      HAL_SPI_Transmit(&hspi1,&temp,sizeof(temp),10);
      HAL_Delay(1);
      HAL_SPI_Receive(&hspi1,&nrsec_sel_re,sizeof(nrsec_sel_re),10);


    造成这个原因:是由于SPI刚开始中间间隙很短(几乎没有间隙),连续产生很多个时钟信号,

    从机无法判断是8bit还是16bit格式,从机会认为SPI是以16bit数据格式发送,

    之后再判断是8bit,出现第一个数据错误为0x00,而后续数据正确。

  • 相关阅读:
    SqlDataAdapter 类
    新博开
    gcc编译C++程序

    抖动
    css3 导航效果
    javascript判断IE浏览器的版本
    CSS样式表继承详解
    css选择器
    鼠标样式
  • 原文地址:https://www.cnblogs.com/xingboy/p/9543727.html
Copyright © 2020-2023  润新知