进程9 LM75温度传感器读取
LM75温度传感器对应电路板中的元器件U3,由于该器件没有明显的引脚标示,所以大家在焊接一定要注意,正确的焊接方向是元器件上的标示LM75倒着的。
LM75温度传感器内部的传感器共5个寄存器,分别为指针寄存器、配置寄存器、温度寄存器、过热关断阈值寄存器、滞后寄存器,其中指针寄存器对于用户来说是不可访问的,但通过将指针数据字节包含到总线命令中可选择进行读/写操作的寄存器,温度寄存器用来保存测得的温度数据,该寄存器包含2个8位的数据字节,由一个高数据字节(MS)和一个低数据字节(LS)组成,其它寄存器的信息可以参照附件中的相关资料。对温度的读取即是对温度寄存器的读取,LM75采用I2C总线与主机进行通讯,具体时序见下图。
CPLD与LM75之间通信大概可以分为4种类型:启动、停止、写、读,启动需要在SCL中间时刻出现下降沿,停止需要在SCL中间的时刻出现上升沿,写需要满足在SCL为高电平数据数据线SDA上数据稳定,读需要在SCL中间时刻读取这时信号最为稳定。为此在产生SCL的同时产生一个SCL的2倍频的时钟SCLK,用于控制在SCL的中间时刻进行数据更新。
I2C总线通信主要采用有限状态机进行,这方面可以参考《verilog 数字系统设计教程》中168页。在此就不在叙述了,最后给大家附上代码及相关的参考资料,I2C总线调试面临诸多不确定的问题,希望大家耐心的分析,调这个程序我前前后后折腾了一个星期,预祝大家能够调试顺利。
贴9.rar PS:按S1刷新显示温度。