在我们的产品中经常有需要温度检测的地方,而热电偶温度检测电路是我们常用的。热电偶温度检测的方法很多,有时出于简单方便的考虑我们会选择热偶温度变送器来实现,这一篇我们就来讨论使用MAX31856热电偶温度变送器实现温度的检测。
我们了解了MAX31856热偶温度变送器的基本情况,接下来我们考虑如何实现MAX31856热偶温度变送器的驱动程序。
我们依然是基于对象的概念来实现驱动程序的设计。所以我们首先来考虑对象类型的定义。
作为一个对象至少包含有属性和操作。我们先来分析一下MAX31856热偶温度变送器对象的属性有哪些。MAX31856热偶温度变送器拥有16个寄存器,这些寄存器标识了MAX31856热偶温度变送器当前时刻所处的状态,所以我们将它们定义为属性。同时考虑到记录当前时刻读取的温度转换值和根据物理量程转换的温度值,所以我们将目标温度及冷端温度的ADC转换值及物理量值作为MAX31856热偶温度变送器对象的属性。
接下来我们考虑一下MAX31856热偶温度变送器对象需要实现哪些操作。我们只考虑与具体平台依赖性较强的操作。对于MAX31856热偶温度变送器对象,当其完成AD转换回给出一个就绪指示,我们需要实时的检测这个信号,并且这个过程依赖于具体的软硬件平台,所以我们将检测过程设计为对象的操作。我们使用MAX31856热偶温度变送器需要对其进行读写,这一过程也同样依赖于具体的软硬件平台,所以我们也将其作为对象的操作。另外MAX31856用一个片选信号,在实现总线操作时我们需要以此来选择目标器件,所以我们也将其作为对象的操作。根据前述对属性和操作的分析,我们可以定义对象类型如下:
我们已经定义了对象类型,使用对象类型l可以声明类型变量,但类型变量必须要初始化才能使用,所以我们还需要设计一个对象的初始化函数。在这个初始化函数中,我们需要将对象变量以及具体应用相关的属性及操作作为参数传入,并对对象的各个属性及操作函数指针赋初值。具体实现如下;
根据前面的描述及上述时序图的要求可以编写读寄存器的函数如下:
同样我们写寄存器时,我们根据前述寄存器的相关描述和写寄存器的时序图来实现。写寄存器的时序图如下:
根据上述描述我们可以实现写寄存器值的函数如下:
根据上述描述我们一次性读取6个字节的数据,具体实现如下:
我们已经实现了MAX31856热偶温度变送器的驱动程序,这一节我们来使用该驱动程序实现一个简单应用,以验证驱动程序的正确性。
首先我们需要使用前面定义的MAC31856热偶温度变送器对象类型声明一个对象变量。在我们的系统中,总线上挂载了4个MAX31856,所以我们声明如下:
声明的对象变量需要先初始化方可使用,而初始化函数有5个参数。第一个参数是需要要初始化的对象变量的指针,而余下的4个参数则是平台相关的操作函数指针。这些函数的原型定义如下:
这几个函数则是我们需要根据具体的软硬件平台来实现的。由于是在同一总线上,所以读写函数只需统一定义就好,但偏选信号和就绪信号则需根据模块单独定义。具体的函数实现如下:
完成这些函数的定义后我们就可以初始化对象变量了!将对象变量的指针以及这些函数的指针作为参数传递给初始化函数,具体实现如下:
至此我们就完成了对象变量的声明及初始化,在后续操作中就可以使用对象变量对对应的MAX32856热偶温度变送器进行各种操作。
现在我们就可以在应用中使用驱动程序完成我们想要对MAX31856进行的操作了!在这个例子中我们分别读取4个MAX31856对象去测量值,并对这个测量值进行滤波处理。
到这里我们就完成了整个测试程序的编写,运行后能够正确读取温度数据,说明我们设计的驱动程序是正确的。
当然,如果您想及时了解我的博客更新,不妨点击下方的【关注我】按钮。
如果您希望更方便且及时的阅读相关文章,也可以扫描上方二维码关注我的微信公众号【木南创智】
到此这篇max31855程序(max31856中文手册)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/81717.html