MAX1452通过单引脚接口进行异步串行数据通信。本应用笔记详细介绍了所使用的串行通信系统,应结合MAX1452数据资料阅读。
本应用笔记描述了MAX1452中使用的串行通信系统,最好结合MAX1452数据资料阅读。它扩展了数据手册中包含的串行通信信息,并提供了通信示例。
MAX1452数字模式
MAX1452数字输入/输出(DIO)提供单引脚串行通信,具有内部控制功能和存储器。所有命令输入流入一组 16 个寄存器,这些寄存器构成接口寄存器集 (IRS)。控制逻辑提供了其他级别的命令处理,该逻辑从 IRS 获取其输入。双向 16 位锁存器缓冲进出 16 位校准寄存器和内部(8 位宽)EEPROM 位置的数据。图3显示了各种串行命令与MAX1452内部架构之间的关系。
通信协议
DIO串行接口用于MAX1452与主机校准测试系统或计算机之间的异步串行数据通信。MAX1452在主机发送初始化序列时自动检测上位机的波特率。可以检测和使用 4800 到 38,400 之间的波特率。数据格式始终为 1 个起始位、8 个数据位和 1 个停止位。8个数据位首先传输LSB,最后传输MSB。当MAX1处于数字模式时,弱上拉电路可用于在DIO上保持逻辑1452。这是为了防止此引脚上出现意外的 1 到 0 转换,这将被解释为通信起始位。仅当安全锁时才允许通信™字节被禁用(即 CL[7:0] = 00十六进制) 或 解锁 保持高电平。
初始化顺序
MAX1452使用上电后或收到重新初始化命令后发送给MAX1452的第一个命令字节来学习通信波特率。初始化序列是 1 个十六进制的 81 字节传输,如下所示:
起始位(如上以粗体显示)启动波特率同步。8 个数据位 81 十六进制(首先是 LSB)遵循此数据位,然后是停止位,也以上面的粗体显示。MAX1452使用该序列计算1位传输的时间间隔,作为其内部振荡器周期的倍数。然后,得到的振荡器时钟周期数在内部存储为 8 位数字 (BITCLK)。请注意,在发送初始化序列之前,设备的电源应至少稳定 1 毫秒。这为上电复位功能完成和 DIO 由安全锁定字节或解锁配置留出时间。
重新初始化顺序
MAX1452提供重新建立或重新学习波特率。重新初始化序列是 FF 十六进制的 1 字节传输,如下所示:
当收到串行重新初始化序列时,接收逻辑将自身复位到其上电状态并等待初始化序列。初始化序列必须遵循重新初始化序列才能重新建立波特率。
串行接口命令格式
MAX1452的所有通信命令均遵循起始位、8个命令位(一个命令字节)和一个停止位的格式。命令字节控制接口寄存器集的内容,包括一个 4 位接口寄存器集地址 (IRSA) 半字节和一个 4 位接口寄存器集数据 (IRSD) 半字节。IRS 字节命令的结构如下:
国税局[7:0] = 国税局[3:0] , IRSA[3:0]
所有命令首先传输 LSB。起始位之后的第一个位是 IRSA[0],停止位之前的最后一个位是 IRSD[3],如下所示:
IRS 的一半寄存器内容用于数据保存和转向信息。将数据写入 IRS 中的两个位置会导致立即操作(命令执行)。这些位置位于地址 9 和 15,分别是内部逻辑和重新初始化命令的命令寄存器。表 9 显示了 IRS 地址解码的完整列表。
命令序列可以作为连续流写入MAX1452,例如起始位、命令字节、停止位、起始位、命令字节、停止位等。MAX1452接收数据时,命令之间没有延迟要求。
命令寄存器到内部逻辑 (CRIL)
写入 CRIL 位置(IRS 地址 9)的数据会导致立即执行与写入的 4 位数据半字节关联的命令。所有EEPROM和校准寄存器读写以及EEPROM ERASE命令都通过CRIL位置进行处理。CRIL还用于使能MAX1452模拟输出,并将输出数据(串行数字输出)放在DIO上。表 10 显示了 CRIL 命令的完整列表。
串行数字输出
通过将读取 IRS (RdIRS) 命令(5 十六进制)写入 CRIL 位置,将 DIO 配置为数字输出。收到此命令后,MAX1452输出一个字节的数据,其内容由IRS[3:0] = 3十六进制位置的IRS指针(IRSP[0:8])值确定。数据以单个字节输出,由起始位和停止位成帧。表 12 列出了为每个 IRSP 地址值返回的数据。
发送RdIRS命令后,所有与DIO的连接必须三态,以允许MAX1452驱动DIO线路。收到RdIRS命令后,MAX1452在一个字节后将DIO驱动为高电平。MAX1452保持DIO高电平1452位,然后通过驱动DIO低电平来置位起始位。然后,起始位后跟数据字节和停止位。在停止位传输后,MAX1452将立即三态DIO,释放线路。MAX<>在释放DIO后一个字节即可接收下一个命令序列。
注意,在MAX1452发送数据字节之前和之后会有时间间隔,此时DIO线路上的所有器件都将处于三态状态。建议在这些时间间隔内对 DIO 线路施加弱上拉,以防止不必要的转换。在DIO和模拟输出(OUT)未连接的应用中,上拉电阻应永久连接到DIO。如果MAX1452 DIO和OUT连接,则在模拟测量期间不要加载该公共线路非常重要。在这种情况下,合适的事件顺序如下:
将上拉电阻连接到 DIO/OUT 线路(最好使用 接力)。
发送 RdIRS 命令。
用户连接的三态(设置为高阻抗)。
从MAX1452接收数据。
激活用户连接(将 DIO/OUT 线拉高)。
松开上拉电阻。
图1所示为发送/接收序列示例,发送RdIRS命令(59十六进制),MAX1452响应字节值为10十六进制。
图1.DIO 输出数据格式。
内部时钟设置
初始上电后或电源复位后,MAX1452内的所有校准寄存器都包含00十六进制,必须进行编程。请注意,在模拟模式下,内部寄存器从EEPROM自动刷新。
当MAX1452以数字模式启动时,应特别注意配置寄存器的3个CLK位:3MSB。MAX1452内部振荡器的频率在生产测试期间测量,计算3位调整(校准)代码并存储在EEPROM位置3十六进制(EEPROM上部配置字节)的上161位中。MAX1452内部时钟控制所有定时功能,包括信号路径增益、DAC功能和通信。建议在数字模式下,为配置寄存器CLK位分配EEPROM中包含的值(上部配置字节)。3 个 CLK 位代表一个 9 的补码数,标称时钟调整为每位 15%。表 <> 显示了可用的代码和调整。
对配置寄存器中包含的CLK位值的任何更改都必须遵循MAX1452波特率学习序列(重新初始化和初始化命令)。为了在时钟复位期间最大限度地提高通信系统的鲁棒性,一次仅将CLK位更改1LSB值。因此,配置寄存器CLK位的推荐设置过程如下:在设置过程中使用9600的最小波特率,以防止时钟值接近最大值时MAX1452波特率计数器可能溢出。
以下示例基于所需的 CLK 代码 010 二进制文件:
第 1 步。从 EEPROM 位置读取 CLK 位 (3MSB) 161 十六进制 CLK = 010 二进制。
第 2 步。将配置寄存器中的 CLK 位设置为 001 二元的。
第 3 步。发送重新初始化命令,然后初始化 (波特率学习)命令。
第 4 步。将配置寄存器中的 CLK 位设置为 010 二元的。
第5步。发送重新初始化命令,然后初始化 (波特率学习)命令。
内部振荡器的频率可以随时通过读取 BITCLK[7:0] 的值来检查。这个 8 位数字表示对应于通信波特率的一个周期(一位时间)的内部振荡器周期数。
擦除和写入 EEPROM
在对所需内容进行编程之前,必须擦除内部EEPROM(字节设置为FF十六进制)。MAX1452以标称擦除状态供电,字节161十六进制和字节16B十六进制除外。字节 3 十六进制的 161MSB 包含内部振荡器校准设置。字节 16B 十六进制设置为 00 十六进制以允许串行通信,而不管“解锁”状态如何。
擦除 EEPROM 时,首先保存字节 3 十六进制的 161MSB。擦除后,必须重写这 3 位,以及 00 十六进制的安全锁字节值。如果不这样做,可能会导致部件停止通信。在重写这些值之前,请勿断开设备的电源。
内部EEPROM可以使用擦除命令完全擦除,也可以使用PageEras命令部分擦除(请参阅表10,CRIL命令)。发出 ERASE 或 PageErase 命令后需要等待 6 毫秒。任何在6ms之前与器件通信或中断电源的尝试都可能在EEPROM中产生不确定的状态。
要擦除 EEPROM 中的页面(页面擦除命令):首先将所需的页码(见表1)加载到IRS位置IEEA[3:0]。然后发送 CRIL PageErase 命令(79 十六进制)。
要将字节写入 EEPROM:使用字节地址(地址 [9:8])加载 IRS 位置 IEEA[7:4]、IEEA[3:0] 和 IEEA[9:0]。加载 IRS 位置 DHR[7:4] 和 DHR[3:0] 以及要写入的 8 个数据位 (Data[7:0])。将EEPROM WRITE命令发送到CRIL(19十六进制)。
要从 EEPROM 读取字节:加载国税局位置 IEEA[9:8], IEEA[7:4] 和带有字节地址(地址 [3:0])的 IEEA[9:0]。发送一个 将EEPROM命令读取到CRIL寄存器(49十六进制);这将加载所需的 EEPROM 字节转换为 DHR[7:0]。加载 IRS 位置 IRSP[3:0] 与 00 十六进制(返回 经[7:0])。将读取 IRSP 命令发送到 CRIL 寄存器(59 十六进制)。
多路复用模拟输出
MAX1452提供在数字模式下通过读取模拟(RdAlg)命令输出模拟信号的功能。在收到RdAlg命令后的一个字节时间,由ALOC[3:0]寄存器确定的内部模拟信号(见表14)被多路复用为OUT。信号在 ATIM[3:0] 寄存器设置的持续时间内保持与 OUT 的连接。ATIM功能使用通信波特率作为定时基础。详见表13。在ATIM[3:0]确定的周期结束时,模拟信号与模拟输出断开,OUT恢复三态状态。MAX1452在OUT恢复三态状态后,可以在DIO 1字节上接收进一步的命令。图 2 说明了此方案的时序。
MAX1452 DIO在模拟输出有效期间为三态。这是为了允许 OUT 和 DIO 引脚并联连接。当DIO和OUT并联连接时,上位机还必须三态其与MAX1452的通信连接。这一要求将产生与DIO的所有连接同时三态的周期,因此在这些期间必须对DIO施加一个弱上拉电阻。有关更多详细信息,请参阅“串行数字输出”部分。
“连续输出”模式可用于模拟输出,可通过将 ATIM[3:0] 设置为 F 十六进制来选择。仅当 DIO 和 OUT 分开时,才能使用此模式。在此模式下,在收到 RdAlg 命令或任何其他命令后,DIO 三态为 32,769 字节时间。经过此时间段后,DIO 将进入接收模式,并将接受进一步的命令输入。在连续模式下,模拟输出始终处于活动状态。
注意:连接到OUT时,内部模拟信号不缓冲。在测量这些内部信号之一时,任何OUT负载都可能产生测量误差。读取内部信号(如BDR、FSOTC等)时,不要加载OUT引脚。
图2.模拟输出定时。
图3.MAX1452串行命令结构和硬件原理图
通信命令示例
以下是MAX1452中各种功能的命令序列示例。
示例 1:更改波特率设置,并检查通信。注意:如果在发送重新初始化命令之前,由于系统波特率变化导致与MAX1452的通信中断,则必须进行电源复位以保证初始化条件。
命令 | 行动 |
FF 六角 | 重新初始化准备进行波特率学习的零件。 |
将系统波特率更改为新值。 | |
81 十六进制 | 学习波特率。 |
F8 六角 | 将 15(F 十六进制)加载到 IRSP[3:0] 寄存器。 |
59 十六进制 | 阅读国税局。 |
主机必须准备好在发送读取 IRS 命令的一个(波特率)字节时间内接收串行线路上的数据。MAX1452将返回CA十六进制(IRSP值为10至15,配置为返回CA十六进制,用于通信检查)。 |
示例 2:读取查找表指针 (临时索引)。
命令 | 行动 |
78 十六进制 | 将 7 加载到 IRSP[3:0] 寄存器。 |
59 十六进制 | 阅读国税局。 |
主机已准备好在发送读取 IRS 命令后的一个字节内接收数据。MAX1452将返回当前温度指数指针值。 |
例3:在 OUT 引脚上启用 BDR 测量,持续时间为 3.4 秒,波特率为 9600。
命令 | 行动 |
1B 十六进制 | 加载 1(BDR 测量)到 ALOC[3:0] 寄存器。 |
CA六角 | 将 12 加载到 ATIM[3:0] 寄存器:(212+1) 8/9600 = 3.4秒 |
69 十六进制 | RdAlg |
DIO 引脚为三态,OUT 引脚在内部连接到 BDR 引脚,持续时间约为 3.4 秒。 |
例4:将 8C40 十六进制写入 FSODAC 寄存器。
命令 | 行动 |
00 十六进制 | 将 0 十六进制加载到 DHR[3:0] 寄存器。 |
41 十六进制 | 将 4 十六进制加载到 DHR[7:4] 寄存器。 |
C2 六角 | 将 C 十六进制加载到 DHR[11:8] 寄存器。 |
83 十六进制 | 将 8 十六进制加载到 DHR[15:12] 寄存器。 |
36 十六进制 | 将 3 (FSODAC) 加载到 ICRA[3:0] 寄存器。 |
09 十六进制 | 低沉管 |
8C40十六进制写入FSODAC寄存器。 |
例5:将 8C40 十六进制写入 FSODAC 查找表位置 温度指数为 40。本示例使用“页面擦除”命令清除 EEPROM的相关部分,并假设没有现有数据 在该部分中需要保留。
命令 | 行动 |
A6 六角 | 加载 A 十六进制(对应于 EEPROM 位置的页码 280 十六进制 和 281 十六进制)到 IEEA[3:0] 寄存器。 |
79 十六进制 | “页面擦除”命令。 |
等待 6 毫秒,然后再发送任何进一步的命令。 | |
06 十六进制 | 将 0 十六进制加载到 IEEA[3:0] 寄存器。 |
87 十六进制 | 将 8 十六进制加载到 IEEA[7:4] 寄存器。 |
28 十六进制 | 将 2 个十六进制加载到 IEEA[9:8] (IRSP[3:0]) 寄存器。 |
00 十六进制 | 将 0 十六进制加载到 DHR[3:0] 寄存器。 |
41 十六进制 | 将 4 十六进制加载到 DHR[7:4] 寄存器。 |
19 十六进制 | 编写 EEPROM。40 十六进制加载到 EEPROM 地址 280 十六进制,其中 是对应于 TEMP-INDEX 指针值的低字节位置 的 40。 |
16 十六进制 | 将 1 加载到 IEEA[3:0] 寄存器。IEEA[7:4] 和 IEEA[9:8] 已经 分别包含 8 和 2。 |
C0 六角 | 将 C 十六进制加载到 DHR[3:0] 寄存器。 |
81 十六进制 | 将 8 十六进制加载到 DHR[7:4] 寄存器。 |
19 十六进制 | 编写 EEPROM。8C十六进制加载到EEPROM地址281十六进制,其中 是对应于 TEMP-INDEX 指针的高字节位置 值为 40。 |
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !