带隙温度传感器和10位A/D转换器可以按照预先设定的工作方式对环境温度进行实时测量。同时把转换结果以10位二进制数形式保存到温度值寄存器。
设点比较器把实际测量到的温度值与预先设定的高低门限值进行比较,如果超限则按配置寄存器设置在OTI端输出高低电平。OTI在使用中需要外接一个约1O k的上拉电阻。
AD7416中有一个故障排队计数器用以避免干扰造成的OTI输出端误触发,这个计数器的排队长度由配置寄存器设定。如果排队设置为4,那么就需要连续4次测量温度超限才能引起OTI的有效输出,小于4次都认为是干扰,将复位故障排队计数器。
2 系统设计
2.1 硬件设计
系统中AD7416部分硬件原理图如图3所示,A2、A1、A0 分别接低、低、高电平,在八位地址中,高四位为1001表示选中7416,次三位为A2、A1、A0表示的地址,最低位表示读写,所以应用中AD7416 的写地址为10010010B,读地址为10010011B。本例中仅使用AD7416进行测量温度,OTI悬空,没有利用。串行时钟、数据总线对应连接处理器的时钟、数据总线端口。
2.2 软件设计
AD7416的01H为配置寄存器,其最低位为0,则启动芯片采集温度值并进行AD转换;为1则停止芯片工作。软件开始首先启动芯片工作,程序如下:
这段程序向AD7416的配置寄存器写入00H,完成芯片的测温启动。I2C_START子程序启动IIC总线,I2C_WwRITE子程序向IIC总线写一个字节,I2C_STOP子程序关闭IIC总线。程序首先向IIC总线写92H,选中AD7416芯片,然后把01H写入AD7416的地址指针寄存器,选中配置寄存器,最后把00H写入配置寄存器。
读取双字节温度值时,首先要向AD7416写入目的寄存器地址00H,即要读取数据的寄存器的地址,存放于地址指针寄存器中。然后发送读命令,接收到第一个字节后,处理器向总线发送应答信号,接收第二字节发送非应答信号,完毕后停止总线操作。从AD7416中读取温度值的部分程序如下,TEMPH存放高字节,TEMPL存放低字节:
3 结论
系统设计中使用了AD7416的测温功能,从使用过程看,该芯片结构简单,操作方便,功耗低,是低功耗测温系统的最佳选择。又由于使用片内温度传感器,所以大大简化了设计结构,同时也在很大程度上提高了系统的可靠性。