通信控制篇——DS18B20温度传感器
1.简介
DS18B20温度传感器温度读取——基于FPGA。
2.原理
DS18B20简介:
The DS18B20 Digital Thermometer provides 9 to 12–bit centigrade temperature measurements and has an alarm function with nonvolatile user-programmable upper and lower trigger points. The DS18B20 communicates over a 1-Wire bus that by definition requires only one data line (and ground) for communication with a central microprocessor. In addition, the DS18B20 can derive power directly from the data line (“parasite power”), eliminating the need for an external power supply.
引脚分布
name | description |
---|---|
Vdd | Power Supply Voltage |
GND | Ground |
DQ | Data In/Out |
初始化时序
初始化操作:
Master拉低总线,持续至少480us后,释放总线,等待15-60us后,在60-120us内读取总线,若为0,表示接收到响应,初始化成功,释放总线,等待一段时间,初始化完成。
读写时序
写时序:
写0:Master拉低总线,持续60-120us,释放总线,等待至少1us;
写1:Master拉低总线,持续至少1us,但要在15us内释放总线,然后等待;
注:写0和写1尽量控制周期一致,可设置为90us
读时序:
读0:Master拉低总线,持续至少1us,然后释放总线,在15us内读取总线(Master拉低总线持续时间不宜过长,否则会影响数据读取),数据持续时间大约45us,所以需要等待超过45us;
读1:Master拉低总线,持续至少1us,然后释放总线,在15us内读取总线(Master拉低总线持续时间不宜过长,否则会影响数据读取);
注:读0和读1尽量控制周期一致,可设置为90us
温度读取时序
初始化→Skip ROM(发送命令0XCC,LSB First)→启动温度转换(发送命令0X44)→初始化→Skip ROM(发送命令0XCC,LSB First)→启动数据接收(发送命令0XBE)→数据接收→复位(即初始化)
Master Mode | Data(LSB First) | Description |
---|---|---|
TX(RX) | Reset | Master reset, DS18B20 respond |
TX | 0XCC | Skip ROM command |
TX | 0X44 | Convert command |
TX(RX) | Reset | Master reset, DS18B20 respond |
TX | 0XCC | Skip ROM command |
TX | 0XBE | Read data command |
RX | data | Temperature data |
TX(RX) | Reset | Master reset, DS18B20 respond |
寄存器数据格式
当我们读取完所需要的数据之后&