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

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

[复制链接]
木子-387117 提问时间:2017-2-21 10:52 /
阅读主题, 点击返回1楼
收藏 1 评论33 发布时间:2017-2-21 10:52
33个回答
木子-387117 回答时间:2017-2-21 13:47:12
无力了 应该不是硬件问题啊  试了两个板子 都是一样的
jackten 回答时间:2017-2-21 14:23:48
我也来学习学习                    
木子-387117 回答时间:2017-2-21 14:26:54
jackten 发表于 2017-2-21 14:23
我也来学习学习

我已经分析不出了
xmshao 回答时间:2017-2-21 16:19:34
不知你用哪个芯片。
不过不管哪个芯片,STM32各系列库里都有SPI全双工的例程,先用例程跑下。
木子-387117 回答时间:2017-2-21 16:20:41
本帖最后由 木子-387117 于 2017-2-21 16:51 编辑
xmshao 发表于 2017-2-21 16:19
不知你用哪个芯片。
不过不管哪个芯片,STM32各系列库里都有SPI全双工的例程,先用例程跑下。 ...

STM32L031的  没找到例程
xuezhimeng2010 回答时间:2017-2-21 16:24:53
贴上代码来看看
木子-387117 回答时间:2017-2-21 16:46:36
本帖最后由 木子-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("\r\n LoRaOn \r\n");        

   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("\r\n LoRaOn \r\n");        
}
xuezhimeng2010 回答时间:2017-2-21 16:55:19
或许你的初始化配置有问题,贴出你的spi配置图or代码

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

木子-387117 回答时间:2017-2-21 16:59:44
本帖最后由 木子-387117 于 2017-2-21 17:03 编辑
xuezhimeng2010 发表于 2017-2-21 16:55
或许你的初始化配置有问题,贴出你的spi配置图or代码
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();
  }

}
xuezhimeng2010 回答时间:2017-2-21 17:03:26
你这个初始化代码调用了么?看下spi1的寄存器

所属标签

相似问题

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