[STM32F4] 401SPI2的半双工模式???

[复制链接]
1160|11
 楼主| 1021256354 发表于 2020-11-28 20:56 | 显示全部楼层 |阅读模式
spi, AN, ST, ni, TI
spi2半双工模式,主模式下发送和接收部分,官方有例程么???
调试不通单线spi2:
  hspi2.Instance = SPI2;
  hspi2.Init.Mode = SPI_MODE_MASTER;
  hspi2.Init.Direction = SPI_DIRECTION_1LINE;
  hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi2.Init.NSS = SPI_NSS_SOFT;
  hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi2.Init.CRCPolynomial = 7;
  if (HAL_SPI_Init(&hspi2) != HAL_OK)
  {
    Error_Handler();
  }
        HAL_Delay(100);
LL_SPI_SetTransferDirection(hspi2.Instance, LL_SPI_HALF_DUPLEX_TX);
  
  /* Enable SPI before start transmission */
  LL_SPI_Enable(hspi2.Instance);

  while(ubNbDataToTransmit > 0)
  {
    /* Check TXE flag to transmit data */
    if(LL_SPI_IsActiveFlag_TXE(hspi2.Instance))
    {
      /* Transmit 8bit Data */
      LL_SPI_TransmitData8(hspi2.Instance, aTxBuffer[ubNbDataTransmitted++]);
      ubNbDataToTransmit--;
    }
  }
  
  /* Wait End Of Transmission: TXE set and Tx Fifo empty */
  while((LL_SPI_IsActiveFlag_TXE(hspi2.Instance) != 1));
        /*rx*/
        LL_SPI_SetTransferDirection(hspi2.Instance, LL_SPI_HALF_DUPLEX_RX);
        while(LL_SPI_IsActiveFlag_RXNE(hspi2.Instance) != 1);
        SPI_FLASH_CS_HIGH();
        while(LL_SPI_IsActiveFlag_RXNE(hspi2.Instance))
        {
                aRxBuffer[i] = LL_SPI_ReceiveData8(hspi2.Instance);
                if(i < 10)
                {
                        i++;
                }
        }
       
  /* Disable SPI after End of Transmission */
  LL_SPI_Disable(hspi2.Instance);
               
       
        printf("\r\nFlashID is %s\r\n", aRxBuffer);               
在曼谷的春 发表于 2023-1-12 14:38 | 显示全部楼层
你用的F401啊?应该是能有例程的吧
一只眠羊 发表于 2023-1-12 15:10 | 显示全部楼层
我觉得你可以用cubemx生成一个,这个底层部分都帮你处理好了
未说出口的像你 发表于 2023-1-12 15:42 | 显示全部楼层
其实看数据手册都能配置出来的,这个SPI不复杂
温室雏菊 发表于 2023-1-12 16:14 | 显示全部楼层
单线SPI好像不行吧,得双线或者三线才行,应该
故意相遇 发表于 2023-1-12 16:46 | 显示全部楼层
你调试的时候,是没有输出吗?
捧一束彼岸花 发表于 2023-1-12 17:18 | 显示全部楼层
你用逻辑分析仪或者示波器抓一下波形试试呢?
我吃小朋友 发表于 2023-1-12 17:50 | 显示全部楼层
官方好像就有SPI1的吧,你可以改一下就能用
月亮一键变蓝 发表于 2023-1-12 18:21 | 显示全部楼层
你用cubemx生成吧,这个生成之后基本直接能用的
将爱藏于深海 发表于 2023-1-12 18:53 | 显示全部楼层
你用的是LL库么?楼主
白马过平川 发表于 2023-1-12 19:25 | 显示全部楼层
是不是哪里时序错了啊,你用设备查查时序看看,感觉你写的没啥问题
SantaBunny 发表于 2023-2-19 21:57 | 显示全部楼层
这个生成了就基本能用的吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

152

主题

652

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部