AN-1250:ADT7310/ADT7410与基于Cortex-M3的精密模拟微控制器 (ADuCM360)的接口

简介

本应用笔记描述如何连接评估板,以及如何通过ADI基于Cortex-M3®的精密模拟微控制器(如 ADuCM360 )轻松收集来自 ADT7310ADT7410传感器的高精度数字温度读数。

本应用笔记还包括示例代码,显示微控制器和温度传感器如何通过 I2C 和SPI接口相互通信。提供控制ADT7310和ADT7410的简单函数。

请参考AN-1250随附代码压缩文件,您可以从analog.com网 站下载随附代码。

与评估板实现对接

ADI提供评估板,允许对应用进行快速原型制作。例如,考察ADuCM360 (EVAL-ADuCM360QSPZ)、ADT7310和ADT7410 (EVAL-ADT7x10EBZ)评估板。

Figure 1. EVAL-ADuCM360QSPZ Connected to EVAL-ADT7X10EBZ.

图1显示EVAL-ADuCM360QSPZ连接至EVAL-ADT7x10EBZ。

ADT7310评估板


表1列出ADT7310评估板连接器支持快速原型制作的信号。

表1. ADT7310评估板的连接器信号
J1引脚 信号 说明
1 VDD 正电源电压(2.7 V至5.5 V)。利用0.1 µF陶瓷电容将此电源去耦至地。
2 GND 模拟地和数字地。
3 SCLK 串行时钟输入。
串行时钟用于向ADT7310的任一寄存器逐个输入数据或从其逐个输出数据。
4 DOUT 串行数据输出。
数据在SCLK下降沿逐个输出,而且在SCLK上升沿有效。
5 DIN 串行数据输入。
此输入端提供要载入控制寄存器的串行数据。数据在SCLK的上升沿逐个 输入寄存器。
6 CS 片选输入引脚。
此输入为低电平时,选择该器件。此引脚为高电平时,该器件禁用。

注意,检查微控制器电源范围非常重要。例如,ADuCM360电源范围为1.8 V至3.6 V。

图2显示主机与ADT7310之间的典型SPI连接。

Figure 2. An ADuCM360 (Master) with Single ADT7310 (Slave) SPI Block.

图2. ADuCM360(主机)与单个ADT7310(从机)SPI模块

ADT7410评估板


表2列出ADT7410评估板连接器支持快速原型制作的信号。

表2. ADT7410评估板的连接器信号
J1引脚 信号 说明
1 VDD 正电源电压(2.7 V至5.5 V)。 利用0.1 µF陶瓷电容将此电源去耦至地。
2 GND 模拟地和数字地
3 SCL I2C 串行时钟输入。
串行时钟用于向ADT7410开漏配置的任一寄存器逐个输入数据或从其逐个 输出数据。需要上拉电阻,典型值10 kΩ。
4 SDA I2C 串行数据输入/输出。
此引脚提供输入输出器件的串行数据。开漏配置。需要上拉电阻,典型值10 kΩ。
5 A0 I2C 串行总线地址选择引脚。
逻辑输入。连接至GND或VDD,设置一个I2C地址。
6 A1 I2C 串行总线地址选择引脚。
逻辑输入。连接至GND或VDD,设置一个I2C地址。

注意,检查微控制器电源范围非常重要。例如,ADuCM360 电源范围为1.8 V至3.6 V。

图3显示主机与ADT7410之间的典型I2C连接。

Figure 3. An ADuCM360 (Master) with Single ADT7410 (Slave) I2C Block.

图3. ADuCM360(主机)与单个ADT7410(从机)I2C模块

SCL与SDA线路上建议使用外部上拉电阻。ADuCM360通常在GPIO上集成内部上拉电阻,使用 I2C 总线时可通过软件禁用。随附代码演示如何禁用内部上拉电阻。


ADUCM360评估板


ADuCM360评估板属于微型电路板,边缘连接器上提供所有GPIO。表3显示ADuCM360的连接示例。

表3. ADuCM360评估板(修订版B)上的J1连接器信号
J1引脚 信号 说明
3 DVDD 正电源电压(1.8 V至3.6 V)。
4 DGND 数字地。
17 P1.4 SPI0端口:MISO。
18 P1.5 SPI0端口:SCLK。
19 P1.6 SPI0端口:MOSI。
20 P1.7 SPI0端口:CS。
21 P2.0 I2C端口:SCL。
22 P2.1 I2C 端口:SDA。

Figure 4. ADuCM360 Top Side View.

图4. ADuCM360顶视图

随附代码

通常,一个项目需含有3个源文件和2个定义文件,才能实现温度传感器与ADuCM360的接口。表4列出了这些文件。

表4. 提供的文件
源文件与 定义文件 说明
ADT7410I2C.c 通过 I2C实现ADuCM360与ADT7410接口的一组函数
ADT7410I2C.h 通过 I2C实现ADuCM360与ADT7410接口的函数和参数定义
ADT7310SPI.c 通过SPI实现ADuCM360与ADT7410 接口的一组函数
ADT7310SPI.h 通过SPI实现ADuCM360与ADT7410 接口的函数和参数定义
ADT7x10_Demo.c 调用部分函数的示例代码

使用演示代码


完成电路板连接后,将代码下载至ADuCM360,打开串行 端口终端应用,如HyperTerminal®.

检查UART设置(9600 bps)。图5显示串行端口结果。

Figure 5. Results on Serial Port.

图5. 串行端口结果

演示代码流程图


图6显示演示代码流程图。演示代码将传感器配置为连续 转换模式。在连续模式下,每240 ms产生一个新结果。

Figure 6. Demo Code Flow Chart.

图6. 演示代码流程图

在每两个温度测量结果请求之间使用软件延迟。该软件延 迟可采用定时器代替,间歇性中断ADuCM360,读取传感 器测量结果。


接口函数


表6列出ADT7410I2C和ADT7310 SPI文件中的全部函数。

ADT7310函数

这5个函数涵盖了ADT7310的主要特性。这些函数的参数在头文件 (ADT7310SPI.h)中定义。所有函数均基于ADuCM360的SPI低级函数。注意,某些微控制器可能有不 止一个SPI。应用笔记AN-1248“SPI接口”提供有关SPI的一般信息。

ADT7310的最大SPI速度为5 Mbps。有关ADT7310特性的更多信息,请参考ADT7310数据手册。

ADT7410函数

这5个函数构成了ADT7410的主要特性。这些函数的参数(包括传感器地址)在头文件(ADT7410I2C.h)中定义。所有函数均基于应用笔记AN-1159“Cortex-M3精密模拟微控制器(ADuCxxx系列)上的I2C兼容接口”中描述的I2C低级函数。

有关ADT7410特性的更多信息,请参考ADT7410数据手册。

表5. ADT7310函数
函数名 函数说明
int ADT7310_SPICFG (int Resolution, int iMode, int CT, int INT, int INTCTmode, int Fault_queue); 配置温度传感器分辨率、模式、CT引脚极性、 INT引脚极性等。
int ADT7310_SPI_T_Setpoint (int REG_Address, int value); 配置四组指针寄存器(THIGH,TLOW, TCRIT, THYST)中的某一组。
float ADT7310_SPIGetTemperature (void); 返回温度测量结果(°C)。
long ADT7310_SPI_Status (char REG_Address); 返回寄存器REG_Address的内容(状态、配置、 ID或T_setpoint)。
int ADT7310_Reset (void); 复位ADT7310。
表6. ADT7410函数
函数名 函数说明
int ADT7410_I2CCFG (char Address, int Resolution, int iMode, int CT, int INT, int INTCTmode, int Faultqueue); 配置温度传感器分辨率、模式、CT引脚极性、 INT引脚极性等。
int ADT7410_I2C_T_Setpoint (char BusAddress, char REGadd, int RorW, int Value); 配置或回读四组指针寄存器 (THIGH,TLOW, TCRIT, THYST)中的某一组。
float ADT7410_I2CGetTemperature (char Address, unsigned char *Status, unsigned char *Config); 返回温度测量结果(°C)。该函数还可更新状态和 配置变量。
int ADT7410_I2CID (char Address); 返回传感器ID。
int ADT7410_I2CReset (char Address) 复位ADT7410。

限制

本应用笔记未涵盖ADT7310和ADT7410的全部特性(如过温和欠温检测),因为评估板一般不允许访问INT和CT输出。

作者

Generic_Author_image

Aude Richard