硬石社区

 找回密码
 立即注册
查看: 1605|回复: 0

[STM32F4 & F7] 多个DS18B20单总线挂载出现

[复制链接]

0

主题

1

帖子

915

积分

见习海贼

Rank: 2Rank: 2

积分
915
发表于 2021-11-14 19:38:34 | 显示全部楼层 |阅读模式
用手头上的2只18B20,数据线并连在PA15,电源线接了5V,地线在GND。在已经获取两个ROM的情况下,通过对源码案例主函数修改,串口助手上显示2只18B20都是0度。(单个都可以获取温度,数据线连一块就不行),这是为什么呢,怎么解决。int main(void)
{  

  uint8_t i, DS18B20ID[8]={0x28,0xF1,0x74,0x73,0x04,0x00,0x00,0x97},DS18B20ID1[8]={0x28,0x86,0x11,0x73,0x04,0x00,0x00,0x49};
  float temperature,temperature1;

  /* 复位所有外设,初始化Flash接口和系统滴答定时器 */
  HAL_Init();
  /* 配置系统时钟 */
  SystemClock_Config();
  /* 初始化串口并配置串口中断优先级 */
  MX_DEBUG_USART_Init();

  while(DS18B20_Init())        
  {
                printf("DS18B20温度传感器不存在\n");
    HAL_Delay(1000);
  }
  printf("检测到DS18B20温度传感器,并初始化成功\n");



  /* 无限循环 */
  while (1)
  {
    for ( i = 0; i < 8; i ++ )            
          printf ( "%.2X", DS18B20ID
);
    printf("\n");  
    temperature=DS18B20_GetTemp_MatchRom(DS18B20ID);
    /* 打印通过 DS18B20 序列号获取的温度值 */
    printf("获取该序列号器件的温度:%.1f\n",temperature);
    HAL_Delay(1000);

    for ( i = 0; i < 8; i ++ )            
          printf ( "%.2X", DS18B20ID1
);
    printf("\n");  
    temperature1=DS18B20_GetTemp_MatchRom(DS18B20ID1);

    printf("获取该序列号器件的温度:%.1f\n",temperature1);
    HAL_Delay(1000);
  }
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Comsenz Inc. ( 粤ICP备16080364号

GMT+8, 2022-9-26 04:07 , Processed in 0.055442 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表