ds18B20 读取ID号

本篇结合上篇一起食用,本篇为DS18B20读取ID号。需要注意的是,只能在总线上有一个设备的时候使用。

module ds18b20_dri(
		//系统时钟_50M
        input clk_n,
        input clk_p,
	input				rst_n		,       //低电平有效的复位信号	
//	input 				clk			,
	inout				dq					// 符号使
);
 		//单濻线(双向信号)
	 reg [19:0]   temp_data  ;  	// 转换后得到的温度倿
    reg          sign 	;
//------------<参数定义>----------------------------------------------
 
 
 
INBUF_DIFF CLK
(
.PADN (clk_n),
.PADP (clk_p),
.Y (clk)
);
localparam	INIT1		= 6'b000001 ,
			WR_CMD      = 6'b000010 ,
		    RX_ID 		= 6'b001000 ;
//时间参数定义
localparam	T_INIT = 1000		,			//初始化最大时间,单位us
			T_WAIT = 780_000	;			//转换等待延时,单位us
	
//命令定义	
localparam 	WR_CMD_DATA = 16'heecc, 		//跳过 ROM 及温度转换命令,低位在前
			RD_CMD_DATA = 16'hbecc,		//跳过 ROM 及读取温度命令,低位在前
			READ_ROM=8'h33;	
//------------<reg定义>----------------------------------------------		
reg	[5:0]	cur_state	;					//现濿
reg	[5:0]	next_state	;					//次濿
reg	[6:0]	cnt			;					//50分频计数器,1Mhz(1us)
reg			dq_out		;					//双向总线输出
reg			dq_en		;					//双向总线输出使能_1则输出,0则高阻濿
reg			flag_ack	;					//从机响应标志信号
reg			clk_us		;					//us时钟
reg [19:0]	cnt_us		;					//us计数噿,朿大可表示1048ms
reg [5:0]	bit_cnt		;					//接收数据计数噿
reg [63:0]	data_temp	;					//读取的ID数据寄存
reg [63:0]	data		;					//ID
				
//------------<wire定义>----------------------------------------------				
wire		dq_in		;					//双向总线输入
 
//===============================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值