Linux系统的DS18B20驱动程序源代码
下面是 [Linux系统的DS18B20驱动程序源代码]的电路图
Linux系统的DS18B20驱动程序源代码
选取mini2440开发板为硬件平台(主芯片为Samsung公司的S3C2440),选取Linux的最新内核Linux2.6.29为软件平台。通过mini2440的扩展接口引出GPIO口(GPBl)为数据线DQ。
DS18B20为单总线器件,因此对其操作的时序比较严格。DS18B20驱动最终能否得以正常运行,获得实时温度值,关键在于能否正确地编写复位程序、位写程序和位读程序。
3.1 复位程序
对DS18B20进行读写之前要对其复位初始化,以检测DS18B20的存在。复位要求MCU将数据线下拉480~960 μs,再释放数据线,等待约60 μs。若MCU接收到DS18B20发出的存在低电平,则表示复位成功。
下面是复位程序代码:
3.2写1字节子程序
发送ROM和RAM指令,需向DS18B20写入数据。写1字节子程序如下:
3.3读N字节子程序
当温度转换完毕,需从DS18B20的RAM中读取第0和第1字节的二进制数据。
读1字节子程序如下:
读N字节子程序如下:
4 结 论
本文采用模块加载的方法来调试DS18B20的驱动程序。调试结果如图5所示。
图5显示的是手离开DS18B20后温度值不断降低的情况。由显示结果可知,DS18B20驱动成功加载进了Linux2.6.29内核,能实时显示当前的温度值。
(责任编辑:电路图)
评论