ds18b20温度传感器代码VHDL
时间: 2023-11-09 18:09:38 浏览: 152
DS18B20 温度传感器 FPGA 驱动源代码
DS18B20是一种数字温度传感器,可以通过单总线进行通信。以下是使用VHDL编写的DS18B20驱动代码,实现12位精度的温度采集,输出使用原始数据输出,需要自己进行符号位及小数位的处理。
1. 初始化序列:通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个从总线控制器发出的复位脉冲和其后由从机发出的存在脉冲,存在脉冲让总线控制器知道DB18B20存在且已经做好操作准备。
2. ROM指令:这里采用单从机模式(只有一个DB18B20),只挑取几个比较重要的指令做以说明。
- READ ROM[33h](读取ROM指令):只有在总线上存在单只DS18B20的时候才能使用这条命令。该命令允许总线控制器在不使用搜索ROM指令的情况下读取从机的64位片序列码。如果总线上有不止一只从机,当所有从机试图同时传送信号时就会发生数据冲突。
- SKIP ROM[CCh](忽略ROM指令) :这条指令允许总线控制器不用提供64位ROM编码就是用功能指令。例如,总线控制器可以先发出一条忽略ROM指令,然后发出温度转换指令[44h],从而完成温度转换操作。注意:当只有一直从机在总线上时,无论如何,忽略ROM指令之后只能跟着发出一条读取暂存器指令[BEh]。
3. 功能指令:在总线控制器发给欲连接的DS18B20一条ROM指令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。
- CONVERT T[44h](温度转换指令):这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果数据以2个字节的形式被存储在告诉暂存器中,而后DS18B20保存等待状态。如果DS18B20以外部电源供电,总线控制器在发出该命令后跟着发出读时序,DS18B20如果处于转换中,将在总线上返回0,若温度转换完成,则返回1。
- READ SCRATCHPAD(读取暂存器指令):该指令用于读取DS18B20的暂存器数据,包括温度值和配置信息等。
阅读全文