​     AMS6212是一个完整的温度测量模块,模块中集成的传感元件、模拟前端、AD转换器和数字处理部分组成一个高精度的数字式传感器,极小的体积极大的节省了PCB面积;同时使用标准的I2C总线,引出两条信号线即可实现主机通讯,设置ADD0和ADD1的引脚关系拓展到8个可选地址。本文使用STM32微控制的I2C总线外设实现与AMS612的通讯,实现快速读取温度值,并且通过串口打印到上位机。
### 一、AMS6212的简介

#### AMS6212特性简介

- AMS6212 的测量精度: ±0.2°C   温度测量范围: -10°C - 65°C
- 低功耗运行电流
  运行电流:6 µA  (typical, @ 4 Hz)
  待机电流:0.1 µA (typical)
- 电压供应范围:  1.71V – 3.6 V (0 °C -125 °C)
- 模块封装 1.5 mm x 1 mm (WLCSP)
#### AMS6212的寄存器分布:

- 索引寄存器
- 温度寄存器
- 控制寄存器
- 报警寄存器
控制寄存器的可设置位:

- Alert Bit:报警位(只读模式)

- Conversion Rate Bits:转换速率

- Sleep Mode:休眠模式

- Interrupt Mode:中断模式

- Polarity Bit:空闲时电平极性

- Consecutive Faults:错误报警的上限值

- Single Shot Conversion:单次转换

参考芯片手册的电路连接方式:使用中断位时需要参考地址选择要求确定地址
### 二、I2C控制总线介绍               

#### 总线地址:AMS6212提供8个可访问地址

通过设置ADD0和ADD1的值确定:根据ALERT/ADD1的引脚关系,需要注意使用中断时的地址设置。

在设置读写操作时,需要将地址值左移一位,保证符合时序图中的操作要求内容,否则读取操作失败!

#### 使用标准的I2C通讯,使用STM32的引脚模拟时序,读取AMS6212寄存器中数据值

启动总线 :当 SCL 线是高电平时 SDA 线从高电平向低电平切换。

停止总线 :当 SCL 线是高电平时 SDA 线由低电平向高电平切换。

数据传输:

发送一个字节数据:

​                第一步,发送一个起始信号。
  第二步,发送7bit从机地址,发送7bit地址+1bit读写选择位,最低位为1表示读,为0表示写。
  第三步,等待从机的应答信号
  第四步,发送寄存器地址,8bit数据。
  第五步,等待从机的应答信号
  第六步,发送一个数据,8bit数据。
  第七步,等待从机应答信号
  第八步,发送一个停止信号。

接收一个字节数据:

​                第一步,发送一个起始信号。
  第二步,发送7bit从机地址,此处发送了7bit地址+1bit读写选择位。最低位为1表示读,为0表示写。
  第三步,等待从机应答
  第四步,发送寄存器地址。
  第五步,等待从机应答
  第六步,再次发送一个起始信号
  第七步,发送7bit地址+1bit读写选择位。最低位为1表示读,为0表示写。
  第八步,等待从机应答
  第九步,读取一个字节(8bit)的数据。
  第十步,产生一个ACK应答信号,此应答信号为CPU产生。
  第十一步,产生一个NACK信号。此无应答信号由CPU产生。
  第十二步,产生一个停止信号。


应答信号:

CPU产生一个ACK信号

CPU产生一个NACK信号
### 三、实验操作

​          使用STM32F103ZET6的PB6和PB7引脚连接到AMS6212的SDA信号线和SCL信号,通过I2C模拟时序,读取操作AMS6212的寄存器值,来设置AMS6212的相关参数以及读取转换完成的温度值。               

1、建立基础的STM32工程文档,添加串口输出打印的驱动函数,通过串口输出获取的温度值

2、使用单片机PB6和PB7引脚,参照标准的I2C时序实现I2C总线协议,用来操作AMS6212寄存器

3、添加AMS6212的读取操作功能函数

4、使用模块中的默认的参数数据值,可以根据此处的内容,进行不同模式的设置

报警为默认初始:     AL  1  

模块默认转化速率: CR :[1:0]  4

休眠模式默认值:     SM :0  关闭  

终端模式默认值:         IM :0  关闭

报警输出默认值:        POL:0 低电平

错误输出上限值:        CF   :[0:1] 发生一次即报警输出   

单次转化默认值:    SS   :0 关闭  

选择地址值:ADD0-----GND   ADD1-----SCL

​                                                总线访问地址:0x44
5、通过串口获取,以1HZ的频率读取温度寄存器中的数据值,通过计算转化为浮点数模式,传输到上位机串口软件
说明:通过参照AMS6212的芯片手册可以设置AMS6212的多种模式

​                        1、温度报警值设置 :读取寄存器地址1和地址2,获取预设的温度阈值

​                        2、报警输出位设置 :根据极性位设置输出电平值

​                        3、中断模式设置        :需要注意地址位的选择

​                        4、连续转换模式

​                        5、单次转换模式

​                        6、休眠低耗模式        :配合中断模式

总结:AMS612芯片接口简单,操作灵活,测量精度高,使用标准I2C总线即可轻松通讯测试,实际应用中也可以提供多种模式,极大的丰富了温度操作的内容,并且极小的PCB封装极大的节约了PCB面积,而且适应的安装环境变得更加灵活。对于低功耗,体积要求严格的场所十分实用,并且操作简单,安全稳定性也是很好的。