Tic10024介绍
1 驱动代码
tic10024.rar
2 功能描述
2.1 设备初始化
当设备首次通电时,这种情况称为上电复位(POR),它将寄存器设置为其默认值并初始化设备状态机。初始化过程完成后,INT引脚被拉低以通知微控制器,INT_STAT寄存器中的POR位被置为逻辑1。SPI输出(SO)上的SPI标志位POR也被置为逻辑1。在设备初始化期间,工厂设置会被编程到设备中,以确保设备运行准确。设备在编程后会进行自检,以确保正确设置已加载。如果自检返回错误,INT_STAT寄存器中的CHK_FAIL位将与POR位一起被置为逻辑1。如果发生此事件,建议微控制器启动软件复位,以重新初始化设备,允许正确设置再次编程。
2.2 设备触发
设备初始化完成后,TIC10024-Q1即可进行配置。微控制器通过SPI命令将所需的设置写入配置寄存器。完成设备配置后,微控制器需要将配置寄存器中的位触发器设置为逻辑1,以激活湿流并启动外部开关监控。一旦开关监控开始,配置寄存器将变为只读状态(除了配置寄存器中的触发位、CRC_T和复位位以及CCP_CFG1寄存器中的所有位)。如果需要重新配置设备设置,微控制器首先需将配置寄存器中的位触发器设置为逻辑0,以停止湿流和开关监控。之后,微控制器可以将配置寄存器设置为所需的值。重新配置完成后,微控制器可以将位触发器重新设置为逻辑1,以重新启动开关监控。
2.3 设备重置
硬件复位
微控制器可以通过切换复位引脚来执行设备的硬件复位。复位引脚内部由电阻(典型值为1.25MΩ)下拉,必须保持低电平以保证正常运行。当复位引脚被切换到高电平时,设备进入复位状态,大部分内部模块关闭,消耗的电流非常少。复位状态下,开关监控和SPI通信停止,所有寄存器内容被清零。当复位引脚再次切换回低电平时,所有寄存器恢复到默认值,设备状态机重新初始化,类似于POR事件。复位过程完成后,INT引脚被置为低电平,中断寄存器位POR和SPI状态标志POR均被置位,通知微控制器设备已完成复位过程。请注意,为了成功复位设备,复位引脚需要保持高电平至少tRESET时间。引脚必须以稳定的输入驱动(逻辑低电平需低于VRESET_L或逻辑高电平需高于VRESET_H),以防设备意外复位。
软件复位
除了硬件复位外,微控制器还可以发出SPI命令以启动软件复位。软件复位通过将配置寄存器中的复位位设置为逻辑1来触发,这会将设备的所有寄存器重置为其默认值。一旦重新初始化过程完成,INT引脚被拉低,中断寄存器位POR和SPI状态标志POR均被置位,以通知微控制器设备已完成复位过程。
2.4 输入配置
输入电流源选择
在24个输入端中,IN10至IN23仅用于监控接地开关,并连接到电流源。通过配置CS_SELECT寄存器,IN0至IN9可以编程为监控接地开关或电池连接的开关。POR后,IN0至IN9的默认设置为监控接地开关(此时选择电流源)。若要将某个输入设置为监控电池连接的开关,请将对应的位设置为逻辑1。
输入启用选择
TIC10024-Q1可以监控多达24个输入的开关状态,但在某些情况下,并非所有输入都需要持续监控。微控制器可以通过配置IN_EN寄存器来选择启用或禁用某些输入的监控。将相应的位设置为逻辑0 ,并停止对输入的开关状态监控。禁用未使用的输入可以减少设备的整体功耗。设备复位时,默认情况下所有输入均被禁用。
阈值调整
中断生成的阈值水平可以通过设置THRES_COMP寄存器来编程。每个输入组可以分别设置阈值水平,每个组包含4个输入。有四个可用的阈值水平:2V、2.7 V、3V和4V。请注意,在设置连接到电池外部的开关的阈值时要谨慎,因为电流吸收器之间存在有限的电压降(对于10 mA和15 mA设置,最高可达VCSI_DROP_OPEN)。因此,即使对于断开的开关,INx引脚上的电压也可能高达VCSI_DROP_OPEN,检测阈值应配置在此之上。还应注意,较低的湿润电流吸收器设置可能不足以在外部开关漏电的情况下将INx引脚电压拉近地电位,如下图所示(见图8-3)。在这个例子中,尽管外部开关处于断开状态,但其泄漏电流较大,可以建模为5kΩ的等效电阻(RDIRT)。2 mA电流吸收器只能将INx引脚电压降至4V,即使开关处于断开状态。
湿电流配置
有6种不同的湿润电流设置(0 mA、1 mA、2 mA、5 mA、10 mA和15 mA),可以通过配置WC_CFG0和WC_CFG1寄存器来编程。设备复位时,默认选择0 mA。当VS电压较低时,湿润电流的准确性更依赖于VS电压。VS电压越低,湿润电流与标称值的偏差越大。
2.5 中断生成和INT断言
INT引脚是一个低电平有效、开漏输出,当TIC10024-Q1检测到事件(如开关输入状态变化、温度警告、过压关机等)时,该引脚会断言低电平。INT引脚需要连接一个外部上拉电阻至VDD(参见图8-4)。INT引脚也可以直接连接到12V汽车电池,以支持微控制器的唤醒功能。
2.6 温度监测器
当多个开关输入闭合且高湿电流设置启用时,设备可能会耗散大量功率并导致温度升高。TIC10024-Q1集成了温度监测和保护电路,可将设备置于低功耗模式,防止因过热而损坏。设备中集成了两种温度保护机制:温度警告(TW)和温度关机(TSD)。触发温度和迟滞时间在下面的表8-2中规定。
2.7 奇偶校验和奇偶生成
TIC10024-Q1通过奇偶校验位检查确保与SPI控制器的数据传输无误。该设备采用奇偶校验,即奇校验,其中奇校验位设置为使传输数据(包括奇校验位)中1的总数为奇数(即Bit0⊕Bit1⊕…⊕Bit30⊕Bit31⊕奇校验= 1)。此外,设备在从SPI控制器的SI线接收数据后也会进行奇校验。如果接收到的数据(包括奇校验位)中1的总数为偶数,则丢弃该数据。此时,INT信号将被置为低电平,中断寄存器(INT_STAT)中的PRTY_FAIL位将被设置为逻辑1,以通知主机传输错误。在SPI通信过程中,PRTY_FAIL标志也会被置为高电平。
2.8 循环冗余校验(CRC)
TIC10024-Q1包含一个CRC模块,用于支持配置寄存器的冗余检查,以确保数据的完整性。CRC计算基于ITU-T X.25实施标准,所使用的CRC多项式(0x1021)通常被称为CRC-CCITT-16,这是因为它最初由ITU-T(前身为CCITT)委员会提出。CRC计算规则在表8-3中定义。
2.9 功能模式
TIC10024-Q1具有两种工作模式:连续模式和轮询模式。
连续模式
在连续模式下,湿电流持续施加到每个启用的输入通道,每个通道的状态依次采样(从IN0到IN23)。TIC10024-Q1监控启用的输入,并在检测到开关状态变化事件时发出中断(如果启用)。每个输入的湿流设置可以通过将WC_CFG0和WC_CFG1配置为0 mA、1 mA、2 mA、5 mA、10 mA或15 mA来单独调整。
下图展示了连续模式下检测序列的时序图。触发位在寄存器CONFIG中设置为逻辑1后,需要tSTARTUP时间激活所有启用输入的湿流。湿流持续不断,每个输入依次被路由到比较器进行采样。完成一个输入的检测后,开关状态(低于或高于检测阈值)会被存储在寄存器(IN_STAT_COMP)中,作为后续检测周期的默认状态。第一个轮询周期结束后,INT引脚被拉低以通知微控制器,默认开关状态已准备好读取。INT_STAT寄存器中的SSC位和SPI状态标志SSC也被置为逻辑1。轮询周期时间(tPOLL)决定了每个输入被采样的频率,可以在寄存器CONFIG中配置。
如果向寄存器发出SPI读取命令,INT_STAT寄存器将被清空,INT引脚也将断言解除。请注意,中断总是在首次检测周期后生成(即在寄存器配置中的触发位设置为逻辑1之后)。在后续的检测周期中,只有当检测到开关状态变化时才会生成中断。虽然没有湿电流施加到0mA配置的输入端,但可能仍有一些偏置电流(由IIN_LEAK_0mA指定)流入或流出输入端。对于输入端,仍然使用定义的阈值(s)进行阈值跨越监测。0 mA设置有助于利用集成比较器测量特定输入上的施加电压,而不受器件湿电流的影响。
轮询模式
轮询模式可以激活,以减少点火关闭状态下的电流消耗,从而节省电池电量。与连续模式不同,在轮询模式下,电流源不会持续开启。相反,它们会依次从IN0到IN23开启和关闭,并循环通过每个单独的输入通道。微控制器可以进入休眠状态,以降低整个系统的功耗。如果TIC10024-Q1检测到开关状态变化(SSC),则INT引脚(如果输入通道已启用)会被拉低(并且INT_STAT寄存器中的SSC位和SPI状态标志SSC也会被置为逻辑1)。INT引脚的拉低可用于唤醒系统调节器,进而唤醒微控制器。随后,微控制器可以使用SPI通信读取开关状态信息。当配置寄存器中的触发位设置为逻辑1时,轮询模式会被激活。
在轮询模式下,湿流被施加到每个输入端,持续时间由配置寄存器中的POLL_ACT_TIME位设定,范围在64 μs到2048 μs之间。湿流施加结束后,比较器会对输入电压进行采样。每个输入依次从IN0到IN23循环。采样的频率范围为2 ms到4096 ms,由配置寄存器中的POLL_TIME位设定。湿流仅在轮询有效时间内施加到闭合的开关上;因此,整个系统的电流消耗可以大幅减少。
类似于连续模式,在第一个轮询周期之后,每个输入(低于或高于检测阈值)的开关状态会被存储在寄存器(IN_STAT_COMP)中,作为后续轮询周期的默认状态。INT引脚被拉低以通知微控制器,默认开关状态已准备好读取。INT_STAT寄存器中的SSC位和SPI状态标志SSC也被置为逻辑1。如果向寄存器发出SPI读取命令,INT_STAT寄存器将被清空且INT引脚断言。请注意,中断总是在第一个轮询周期后生成(在寄存器配置中的触发位设置为逻辑1后)。在后续的轮询周期中,只有当检测到开关状态变化时才会生成中断。轮询模式的时序图如下。
如果在两次主动轮询之间开关位置发生变化,则不会生成中断,状态寄存器(IN_STAT_COMP)也不会反映这种变化。下图给出了一个示例。
3 编程
SPI接口通信由4个引脚组成:CS、SCLK、SI和SO。该接口可以工作在高达4 MHz的SCLK频率下。
3.1 SPI时序
读操作
需要将SI总线上的读/写位(第31位)设置为逻辑0以执行读操作。接下来是待访问寄存器的6位地址。从第24位到第1位的内容不是有效的读操作命令,将被忽略。LSB(第0位)是用于检测通信错误的奇偶校验位。
在SO总线上,状态标志将由TIC10024-Q1输出,随后是请求的寄存器中的数据内容。LSB是用于检测通信错误的奇偶校验位。请注意,除了常规功能寄存器外,TIC10024-Q1中还使用了多个测试模式寄存器,向这些测试寄存器发出读命令会返回寄存器内容。如果向无效的寄存器地址发出读命令,TIC10024-Q1将返回全0。
写操作
需要将SI总线上的读/写位(第31位)设置为1以执行写操作。接下来是待访问寄存器的6位地址。请注意,该寄存器必须是一个可写的配置寄存器,否则命令将被忽略。第24位到第1位的内容表示要写入寄存器的数据。LSB(第0位)是用于检测通信错误的奇偶校验位。
在SO总线上,状态标志将由TIC10024-Q1输出,随后是写入寄存器的前一个数据内容。寄存器的前一个内容在SI命令中完整寄存器地址解码后(第25位传输后)被锁存。如果SI写入是一个有效的命令(有效的寄存器地址且没有SPI/奇偶校验错误),新数据将在SPI事务结束时替换前一个数据内容。如果写入命令无效,新数据将被忽略,寄存器内容将保持不变。LSB是用于检测通信错误的奇偶校验位。
请注意,除了常规功能寄存器外,TIC10024-Q1还使用了多个测试模式寄存器。向这些测试寄存器写入命令不会影响寄存器内容,尽管寄存器内容会在SO输出中返回。如果向无效的寄存器地址发出写入命令,SO输出将返回全0。
状态标志
在每次读取或写入SPI事务期间,状态标志由SO输出以指示系统条件。这些位不属于实际寄存器,但其内容会从中断寄存器INT_STAT中镜像。对INT_STAT执行的读取命令会清除寄存器内的两个位以及状态标志。下表描述了可以从每个SPI状态标志获取的信息。
SYMBOL | NAME | DESCRIPTION |
---|---|---|
POR | Power-on Reset | 此标志反映了中断寄存器INT_STAT中的POR位,如果设置为1,则表示已发生复位事件。在成功进行上电复位、硬件复位或软件复位后,该位被激活。 |
SPI_FAIL | SPI Error | 此标志位反映了中断寄存器INT_STAT中的SPI_FAIL位,当设置为1时,表示(SI)事务中的最后一个SPI响应器无效。要编程一个完整的字,必须向设备输入32位信息。SPI逻辑会计算进入IC的位数,并且只有当恰好有32位被时钟输入时才会启用数据锁存。如果字长超过或未达到所需大小,中断寄存器INT_STAT中的SPI_FAIL位将被设置为1,该位反映其值到此SPI_FAIL状态标志,INT引脚将被拉低。接收到的数据将被视为无效。一旦读取INT_STAT寄存器,其内容将在CS上升沿清除。SPI_FAIL状态标志,反映INT_STAT寄存器中的SPI_FAIL位,也将被取消断言。请注意,如果SCLK不存在,则SPI_FAIL位不会被标记。 |
PRTY_FAIL | Parity Fail | 此标志位反映了中断寄存器INT_STAT中的PRTY_FAIL位,当设置为1时,表示最后一个SPI响应器在(SI)事务中存在奇偶校验错误。设备使用奇校验。如果接收到的数据(包括奇偶校验位)中的1的总数是偶数,则丢弃接收到的数据。INT将被拉低,中断寄存器(INT_STAT)中的PRTY_FAIL位被标记为逻辑1,同时反映INT_STAT寄存器中PRTY_FAIL位的PRTY_FAIL状态标志也被设置为1。一旦读取INT_STAT寄存器,其内容将在CS上升沿被清除。反映INT_STAT寄存器中PRTY_FAIL位的PRTY_FAIL状态标志也将被取消拉低。 |
SSC | Switch State Change | 此标志位反映了中断寄存器INT_STAT中的SSC位,当设置为1时,表示一个或多个开关输入超过了阈值。为了确定状态变化的来源,微控制器可以读取寄存器IN_STAT_COMP的内容。一旦读取了中断寄存器(INT_STAT),其内容将在CS上升沿被清除。反映INT_STAT寄存器中SSC位的SSC状态标志位也将被取消。 |
RES | Reserved | 此标志为保留标志,始终为逻辑0。 |
TEMP | Temperature Event | 如果中断寄存器INT_STAT中的温度警告(TW)或温度关闭(TSD)位被标记为1,则该标志设置为1。这表示发生了TW事件或TSD事件。如果清除了TW事件或TSD事件,该标志也会被标记为1。需要读取中断寄存器INT_STAT以确定发生了哪种事件。SPI指挥器还可以读取IN_STAT_MISC寄存器来获取设备温度状态的信息。一旦读取了中断寄存器(INT_STAT),其内容将在CS上升沿被清除,TEMP状态标志也将被解除。 |
OI | Other Interrup | 其他中断包括OV、UV、CRC_CALC和CHK_FAIL等。当上述任一位在中断寄存器INT_STAT中被标记时,该标志将被置为1。需要读取中断寄存器INT_STAT以确定发生了哪些事件。SPI指挥器还可以读取IN_STAT_MISC寄存器以获取设备最新状态的信息。一旦读取了INT_STAT寄存器,其内容将在CS上升沿被清除,同时OI状态标志也将被取消。 |
3.2 寄存器表
表9-3列出了TIC10024-Q1的内存映射寄存器。未在表9-3中列出的所有寄存器偏移地址应视为保留位置,且不应修改寄存器内容。