SPI全双工模式实际测试有数据但是采集不到

2019-07-14 15:45发布

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_RESET );片选0

HAL_SPI_Transmit(&hspi1,&liming,sizeof(liming),1000);发送数据

HAL_SPI_Receive(&hspi1,lmGET_data,sizeof(lmGET_data),1000);接收数据

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_SET );片选1


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
yagan1405
1楼-- · 2019-07-16 04:08
 精彩回答 2  元偷偷看……
xiuyuan56789
2楼-- · 2019-07-16 08:10
贴上代码来看看
yagan1405
3楼-- · 2019-07-16 10:40
xiuyuan56789 发表于 2018-11-26 09:42
贴上代码来看看

本帖最后由 木子-387117 于 2017-2-21 16:47 编辑
两种方式调用HAL库函数  单独测试过
uint8_t liming=0x06;地址
uint8_t liming2=0x00;
uint8_t lmGET_data;  返回数据存放
        while(1){
               
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_RESET );
          HAL_SPI_Transmit(&hspi1,&liming2,sizeof(liming2),1000);        
          HAL_SPI_Receive(&hspi1,&lmGET_data,sizeof(lmGET_data),1000);
                HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_SET );
               
if(lmGET_data==0x6c)
printf(" LoRaOn ");        

   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_RESET );
       HAL_SPI_Transmit(&hspi1,&liming,sizeof(liming),1000);
       HAL_SPI_TransmitReceive(&hspi1, &liming2, &lmGET_data, 1, 1000);
   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_SET );
if(lmGET_data==0x6c)
printf(" LoRaOn ");        
}
xiuyuan56789
4楼-- · 2019-07-16 14:44
或许你的初始化配置有问题,贴出你的spi配置图or代码
yagan1405
5楼-- · 2019-07-16 20:16
xiuyuan56789 发表于 2018-11-26 10:10
或许你的初始化配置有问题,贴出你的spi配置图or代码

本帖最后由 木子-387117 于 2017-2-21 17:03 编辑
9楼有spi协议  (今天传图太多 不让传了~~只能劳驾往上翻一翻了)
/* SPI1 init function */
void MX_SPI1_Init(void)
{

  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;//ËÙ¶È×îÂýÊÔÊÔ¿´
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 7;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    Error_Handler();
  }

}
xiuyuan56789
6楼-- · 2019-07-16 23:33
 精彩回答 2  元偷偷看……

一周热门 更多>