当前位置: 首页 > news >正文

【FPGA】单总线——DS18B20

目录

项目:项目(含quartus工程、仿真文件)

1. 单总线通信时序详解

1.1 初始化(复位脉冲 + 存在脉冲)

1.2 写时隙(写“0”和写“1”)

1.3 读时隙

2. DS18B20 暂存器与温度数据格式

2.1 暂存器结构

2.2 温度数据格式(16位补码)

2.3 常用 ROM 命令

3. 温度读取工作流程

3.1 状态机流程(ds18b20_driver.v)

3.2 数据处理流程(data_process.v)

4. 系统框架结构

4.1 顶层模块(sys_top.v)

4.2 模块功能说明

4.3 数据流图

总结


项目:项目(含quartus工程、仿真文件)

1. 单总线通信时序详解

DS18B20 采用单总线(1-Wire)协议进行通信,所有操作都通过一根数据线(DQ)完成,包括初始化、写时隙和读时隙。

1.1 初始化(复位脉冲 + 存在脉冲)

  • 主机行为:拉低总线至少 480µs,然后释放总线。

  • 从机响应:DS18B20 在接收到复位脉冲后,会在 15~60µs 内拉低总线 60~240µs,作为存在脉冲。

  • 代码实现ds18b20_driver.v):

if(cnt_xx < 480) begindq_out <= 1'b0;dq_out_en <= 1'b1;
end else begindq_out <= 1'b0;dq_out_en <= 1'b0;
end

1.2 写时隙(写“0”和写“1”)

  • 写“0”:主机拉低总线至少 60µs。

  • 写“1”:主机拉低总线 1~15µs,然后释放总线。

  • 代码实现

if(wr_data[cnt_bit] == 0) begindq_out <= 1'b0;dq_out_en <= (cnt_xx < 61) ? 1'b1 : 1'b0;
end else begindq_out <= 1'b0;dq_out_en <= (cnt_xx < 1) ? 1'b1 : 1'b0;
end

1.3 读时隙

  • 主机行为:拉低总线 1µs,然后释放并采样。

  • 从机响应:DS18B20 在时隙内保持输出数据。

  • 代码实现

dq_out <= 1'b0;
dq_out_en <= (cnt_xx < 1) ? 1'b1 : 1'b0;
if(cnt_xx == 13)rd_data_r[cnt_bit] <= dq_in;

2. DS18B20 暂存器与温度数据格式

2.1 暂存器结构

字节内容说明
0-1温度值LSB 和 MSB
2-3TH 和 TL报警阈值
4配置寄存器分辨率设置
5-7保留
8CRC校验码

2.2 温度数据格式(16位补码)

  • 示例0x0550 表示 +85.0°C,0xFC90 表示 -55.0°C。

  • 数据处理data_process.v):

    src_data <= rd_data[15] ? (~rd_data[10:0] + 1'b1) : rd_data[10:0];

2.3 常用 ROM 命令

命令功能
SKIP_ROM0xCC跳过 ROM 寻址
CONVERT_T0x44启动温度转换
READ_SCRATCH0xBE读取暂存器

3. 温度读取工作流程

3.1 状态机流程(ds18b20_driver.v

  1. INIT:发送复位脉冲,检测存在脉冲。

  2. SKIP_ROM:发送 0xCC 跳过 ROM 寻址。

  3. CONVERT_T:发送 0x44 启动温度转换。

  4. WAIT:等待 750ms 转换完成。

  5. 再次 INIT 和 SKIP_ROM

  6. READ_SCRATCH:发送 0xBE 读取暂存器。

  7. RXDATA:读取 2 字节温度数据。

3.2 数据处理流程(data_process.v

  1. 将补码温度转换为原码。

  2. 将温度值乘以 625(扩大 10000 倍,便于显示小数)。

  3. 使用 binary2bcd 模块将二进制转换为 BCD 码。

  4. 输出到数码管和串口。


4. 系统框架结构

4.1 顶层模块(sys_top.v

  • 实例化各子模块:

    • ds18b20_driver:驱动温度传感器。

    • data_process:处理温度数据。

    • uart_tx:串口发送数据。

    • seg_driver:驱动数码管。

4.2 模块功能说明

模块名功能
ds18b20_driver实现单总线协议,读取温度数据
data_process数据转换与处理
binary2bcd二进制转 BCD 码
uart_tx串口发送数据
seg_driver动态数码管显示

4.3 数据流图

DS18B20 → ds18b20_driver → data_process → uart_tx → PC↓seg_driver → 数码管

总结

本项目实现了一个基于 FPGA 的 DS18B20 温度测量系统,具备以下特点:

  • ✅ 单总线协议完整实现(初始化、读、写)

  • ✅ 温度数据补码转原码、BCD 转换

  • ✅ 数码管实时显示温度

  • ✅ 串口输出温度值(含小数点)

  • ✅ 状态机控制流程清晰,代码可读性强

适用于嵌入式系统、FPGA 学习、温度监控等场景。


文章转载自:

http://E3lsh6Gj.LLqky.cn
http://TnaR1b0q.LLqky.cn
http://qvZnef8O.LLqky.cn
http://OhWK4Iun.LLqky.cn
http://fbxtJPgy.LLqky.cn
http://858QOeIi.LLqky.cn
http://WmE26Jh9.LLqky.cn
http://inqY4eRB.LLqky.cn
http://Q6XoLdOz.LLqky.cn
http://ayAEmgy1.LLqky.cn
http://bKbhmqlF.LLqky.cn
http://Kr606Bst.LLqky.cn
http://pMPy8hZu.LLqky.cn
http://9qftOdGa.LLqky.cn
http://dwOBVP4n.LLqky.cn
http://3iIOBo9M.LLqky.cn
http://vyRuplZu.LLqky.cn
http://fNMyU6zz.LLqky.cn
http://y4PhqcgR.LLqky.cn
http://u3v4GiZy.LLqky.cn
http://WdN5zhxC.LLqky.cn
http://p4w83l1Q.LLqky.cn
http://eUwttaLM.LLqky.cn
http://0I7vG4Ov.LLqky.cn
http://SZcJ43FO.LLqky.cn
http://GPXW50Jk.LLqky.cn
http://Ja3c9LY6.LLqky.cn
http://kXRuNL1c.LLqky.cn
http://WWB7v4E5.LLqky.cn
http://nMMmgcS7.LLqky.cn
http://www.dtcms.com/a/367669.html

相关文章:

  • 安装VScode和nodeJS
  • 【SuperSocket 】SuperSocket 中自定义 Session
  • 【涂鸦T5】6. lvgl显示光感数值
  • 【CS32L015C8T6】配置单片机PWM输出(内附完整代码及注释)
  • 华为校招实习留学生机试全攻略:真题目录+算法分类+在线OJ+备考策略
  • 【机器学习】HanLP+Weka+Java=Random Forest算法模型
  • Photoshop - Photoshop 触摸功能
  • Java Web :技术根基与产业实践的多维耦合
  • 在树莓派集群上部署 Distributed Llama (Qwen 3 14B) 详细指南
  • 解析PE文件的导入表和导出表
  • Flutter 3.35.2 以上版本中 数字转字符串的方法指南
  • 跨平台RTSP|RTMP|GB28181推拉流端智能录像模块技术探究
  • “人工智能+”的新范式:应用赋能与风险应对
  • 聚焦GISBox矢量服务:数据管理、数据库连接与框架预览全攻略
  • 如何避免 “空的 Windows 宿主机目录” 挂载时覆盖容器内的重要目录文件(导致容器关键文件丢失、无法启动)
  • wins中怎么用一个bat文件启动jar包和tomcat等多个服务
  • 深入理解awk
  • Leetcode 206. 反转链表 迭代/递归
  • RFID+工业互联网:汽车全景天幕全生命周期智能检测体系构建
  • javaweb基础第一天总结(HTML-CSS)
  • Django全局异常处理全攻略
  • 阵列信号处理之均匀面阵波束合成方向图的绘制与特点解读
  • 钉钉 AI 深度赋能制造业 LTC 全流程:以钉钉宜搭、Teambition 为例
  • JS对象进阶
  • 【109】基于51单片机自动感应迎宾门【Proteus仿真+Keil程序+报告+原理图】
  • 来自AI的背包系统
  • 【操作系统-Day 24】告别信号量噩梦:一文搞懂高级同步工具——管程 (Monitor)
  • 前端url参数拼接和提取
  • Qt 中添加并使用自定义 TTF 字体(以 Transformers Movie 字体为例)
  • 基于STM32的智能家居环境监控系统设计