打印
[综合信息]

hc32f030读取DS18B20实在搞不定了。哪位有代码参考下呀

[复制链接]
楼主: fjhcpu
手机看帖
扫描二维码
随时随地手机跟帖
21
earlmax| | 2024-10-7 17:08 | 只看该作者 回帖奖励 |倒序浏览
给 DS18B20 提供稳定的电源。如果使用寄生电源模式(从数据线上获取电源),要确保总线上的上拉电阻合适(通常为 4.7kΩ 左右),并且总线上的设备数量和负载情况不会影响电源供应。如果使用外部电源,要确保电源电压在 DS18B20 的工作电压范围内(一般为 3 - 5.5V),同时正确连接 DS18B20 的 VDD 和 GND 引脚。

使用特权

评论回复
22
olivem55arlowe| | 2024-10-7 18:47 | 只看该作者
如果使用外部上拉电阻,通常在DQ线上串联一个4.7kΩ至10kΩ的电阻到VCC。

使用特权

评论回复
23
kkzz| | 2024-10-7 20:27 | 只看该作者
DS18B20有特定的ROM命令和功能命令。ROM命令用于识别DS18B20的唯一序列号,功能命令用于执行特定的操作,如启动温度转换。

使用特权

评论回复
24
ingramward| | 2024-10-7 22:06 | 只看该作者
DS18B20的通信协议要求严格的时序控制,包括写0、写1、读0和读1等操作。
在写操作时,写0和写1的区别在于低电平保持的时间不同。写0需要保持低电平60~120微秒,而写1则是拉低后迅速释放(拉低时间大于1微秒,然后在15微秒内释放)。
在读操作时,主机需要在读时序开始的15微秒内读取总线电平状态。

使用特权

评论回复
25
averyleigh| | 2024-10-8 09:13 | 只看该作者
由于 DS18B20 是单总线设备,数据和电源共用一根线(在寄生电源模式下)或者数据传输线对干扰比较敏感,所以在布线时要尽量避免与其他强干扰源(如高频信号线、大电流线路等)平行布线。可以采用地线隔离或者增加屏蔽层等措施来减少电磁干扰对数据传输的影响。

使用特权

评论回复
26
pl202| | 2024-10-8 11:02 | 只看该作者
DS18B20采用单总线数据传输方式,其数据引脚(DQ)需要连接一个上拉电阻。通常,这个电阻的阻值在4.7kΩ左右,确保在总线空闲时能将信号拉至高电平。

使用特权

评论回复
27
youtome| | 2024-10-8 12:56 | 只看该作者
DS18B20可以由数据线供电,但这需要在数据线上连接一个上拉电阻到电源。确保上拉电阻的阻值适当,以便DS18B20能够正常工作。

使用特权

评论回复
28
usysm| | 2024-10-8 14:43 | 只看该作者
DS18B20对时序有严格的要求。在发送命令和读取数据时,必须遵守正确的时序,否则可能会导致通信失败。

使用特权

评论回复
29
lihuami| | 2024-10-8 16:18 | 只看该作者
在编写控制DS18B20的软件时,需要实现初始化、复位、读写操作等函数,并处理可能发生的通信错误和异常情况。

使用特权

评论回复
30
bartonalfred| | 2024-10-8 17:55 | 只看该作者
DS18B20的时序要求非常严格,特别是在高速通信时。

使用特权

评论回复
31
sheflynn| | 2024-10-8 19:47 | 只看该作者
使用现有的代码来初始化DS18B20,包括复位操作、发送跳过ROM命令和开始转换温度的命令。

使用特权

评论回复
32
alvpeg| | 2024-10-8 21:21 | 只看该作者
在与 DS18B20 通信之前,要正确配置 HC32F030 相关的 GPIO 引脚。将其设置为开漏输出模式(用于发送数据),并且在需要读取数据时设置为输入模式(带上拉电阻)。同时,要设置好引脚的初始状态,例如在复位操作之前,将引脚设置为高电平。

使用特权

评论回复
33
sdCAD| | 2024-10-9 09:02 | 只看该作者
使用逻辑分析仪或示波器来观察1-Wire总线的波形,确保时序正确。

使用特权

评论回复
34
tifmill| | 2024-10-9 10:56 | 只看该作者
读取DS18B20的温度数据后,需要进行计算才能得到实际的温度值。
注意温度测量周期为750ms,根据应用场景灵活设置温度读取间隔时间。

使用特权

评论回复
35
bestwell| | 2024-10-9 12:38 | 只看该作者
DS18B20 的单总线协议对时序要求非常严格。例如,复位脉冲的宽度、应答脉冲的检测、写 0 和写 1 的时间槽、读 0 和读 1 的时间槽等都有精确的时间要求。在 HC32F030 的编程中,要使用精确的延时函数来满足这些时序要求。一般可以通过定时器或者指令循环来实现精确的微秒级延时。

使用特权

评论回复
36
pl202| | 2024-10-9 14:13 | 只看该作者
从DS18B20读取数据时,需要在适当的时刻读取引脚状态。

使用特权

评论回复
37
wilhelmina2| | 2024-10-9 15:47 | 只看该作者
按照正确的顺序操作 DS18B20。首先要发送复位脉冲,然后等待 DS18B20 的应答,接着发送 ROM 操作命令(如果总线上只有一个 DS18B20,可以发送跳过 ROM 命令 0xCC),再发送功能命令(如启动温度转换命令 0x44)。在转换完成后,再发送读命令(0xBE)来读取温度数据。

使用特权

评论回复
38
sanfuzi| | 2024-10-9 17:21 | 只看该作者
在与DS18B20通信之前,需要对其进行初始化,通常是通过发送一个复位脉冲来实现。

使用特权

评论回复
39
物联万物互联| | 2024-10-9 18:44 | 只看该作者
试试逻辑分析仪,也许就好了

使用特权

评论回复
40
Pretext| | 2024-10-10 15:50 | 只看该作者
由于ds18b20使用单线(单总线)通信协议,因此需要精确的时序控制。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则