AN-1250:ADT7310/ADT7410与基于Cortex-M3的精密模拟微控制器 (ADuCM360)的接口
简介
本应用笔记描述如何连接评估板,以及如何通过ADI基于Cortex-M3®的精密模拟微控制器(如 ADuCM360 )轻松收集来自 ADT7310 和 ADT7410传感器的高精度数字温度读数。
本应用笔记还包括示例代码,显示微控制器和温度传感器如何通过 I2C 和SPI接口相互通信。提供控制ADT7310和ADT7410的简单函数。
请参考AN-1250随附代码压缩文件,您可以从analog.com网 站下载随附代码。
与评估板实现对接
ADI提供评估板,允许对应用进行快速原型制作。例如,考察ADuCM360 (EVAL-ADuCM360QSPZ)、ADT7310和ADT7410 (EVAL-ADT7x10EBZ)评估板。
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连接。
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连接。
SCL与SDA线路上建议使用外部上拉电阻。ADuCM360通常在GPIO上集成内部上拉电阻,使用 I2C 总线时可通过软件禁用。随附代码演示如何禁用内部上拉电阻。
ADUCM360评估板
ADuCM360评估板属于微型电路板,边缘连接器上提供所有GPIO。表3显示ADuCM360的连接示例。
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。 |
随附代码
通常,一个项目需含有3个源文件和2个定义文件,才能实现温度传感器与ADuCM360的接口。表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显示串行端口结果。
演示代码流程图
图6显示演示代码流程图。演示代码将传感器配置为连续 转换模式。在连续模式下,每240 ms产生一个新结果。
在每两个温度测量结果请求之间使用软件延迟。该软件延 迟可采用定时器代替,间歇性中断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数据手册。
函数名 | 函数说明 |
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。 |
函数名 | 函数说明 |
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输出。