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

关于LMH6401 spi读取id失败的问题

[复制链接]
_六六_ 提问时间:2017-7-7 20:56 /
1.png 2.png

上面是lmh6401的spi波形图

spi读取id失败,大家帮忙分析下问题:

下面是关键的源码:
//初始化
void SPI_FLASH_Init(void)
{
  SPI_InitTypeDef  SPI_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
   
  
  /* Enable SPI1 and GPIO clocks */
  /*!< SPI_FLASH_SPI_CS_GPIO, SPI_FLASH_SPI_MOSI_GPIO,
       SPI_FLASH_SPI_MISO_GPIO, SPI_FLASH_SPI_DETECT_GPIO
       and SPI_FLASH_SPI_SCK_GPIO Periph clock enable */
  /*!< SPI_FLASH_SPI Periph clock enable */
    macSPI_APBxClock_FUN ( macSPI_CLK, ENABLE );

  /*!< Configure SPI_FLASH_SPI_CS_PIN pin: SPI_FLASH Card CS pin */
    macSPI_CS_APBxClock_FUN ( macSPI_CS_CLK, ENABLE );
  GPIO_InitStructure.GPIO_Pin = macSPI_CS_PIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(macSPI_CS_PORT, &GPIO_InitStructure);
   
  /*!< Configure SPI_FLASH_SPI pins: SCK */
    macSPI_SCK_APBxClock_FUN ( macSPI_SCK_CLK, ENABLE );
  GPIO_InitStructure.GPIO_Pin = macSPI_SCK_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(macSPI_SCK_PORT, &GPIO_InitStructure);

  /*!< Configure SPI_FLASH_SPI pins: MISO */
    macSPI_MISO_APBxClock_FUN ( macSPI_MISO_CLK, ENABLE );
  GPIO_InitStructure.GPIO_Pin = macSPI_MISO_PIN;
  GPIO_Init(macSPI_MISO_PORT, &GPIO_InitStructure);

  /*!< Configure SPI_FLASH_SPI pins: MOSI */
    macSPI_MOSI_APBxClock_FUN ( macSPI_MOSI_CLK, ENABLE );
  GPIO_InitStructure.GPIO_Pin = macSPI_MOSI_PIN;
  GPIO_Init(macSPI_MOSI_PORT, &GPIO_InitStructure);

  /* Deselect the FLASH: Chip Select high */
  macSPI_FLASH_CS_DISABLE();


  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;//128
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;//7
  SPI_Init(macSPIx , &SPI_InitStructure);

  /* Enable SPI1  */
  SPI_Cmd(macSPIx , ENABLE);
   
}

//主函数循环读取id
.
.
.
.
    while(1)
    {
   
    macSPI_FLASH_CS_ENABLE();
    Delay( 1 );
    while (SPI_I2S_GetFlagStatus(macSPIx , SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData(macSPIx , 0x0);
    while (SPI_I2S_GetFlagStatus(macSPIx , SPI_I2S_FLAG_RXNE) == RESET);   
    DeviceID=SPI_I2S_ReceiveData(SPI1);
        
    Delay(1);

    macSPI_FLASH_CS_DISABLE();  
   
    }


spi波形图如下:
四线已经在图中标注,发送0x00,典型值应为0x30,但sdo毫无反应,无论发什么都是这样.

4.png


收藏 评论3 发布时间:2017-7-7 20:56

举报

3个回答
回答时间:2017-7-8 08:50:24
从波形上看SDI和SDO是不正确的。楼主配置SPI时,未对SPI引脚进行功能配置。比如:

                GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI1);
                GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI1);
                GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI1);
_六六_ 回答时间:2017-7-8 09:43:57
安 发表于 2017-7-8 08:50
从波形上看SDI和SDO是不正确的。楼主配置SPI时,未对SPI引脚进行功能配置。比如:

                GPIO_PinAFConfig(GPI ...

sdi ,sdo  引脚都配置了  sdi 发送的0x00  所以一直是低电平,sdo没有返回
MrJiu 回答时间:2017-7-8 09:51:54
波形对的,没有返回,有可能是LMH6401没工作!!!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版