35584电源管理芯片——SPI介绍
  ImvLajAA0m1B 2023年11月12日 25 0

Main functions:

串行外设接口总线或SPI总线是以全双工模式工作的同步串行数据链路。TLF35584在主机(μC)启动数据帧的从机模式下进行通信。TLF35584应通过专用芯片选择线寻址。这允许其他从设备连接到SPI总线。

Data transmission:

要开始通信,μC首先使用小于或等于TLF35584支持的最大频率的频率来配置时钟。μC拉下TLF35584的片选。

Functional description:

SPI基本访问:MOSI(引脚SDI)上的所有数据都在SPI时钟信号(引脚SCL)的上升沿捕获,并在SPI时钟信号(引脚SCL)的下降沿移入或移出。在MISO(SDO)的SPI主设备中需要应用相同的方法。读操作必须以CMD位为1'b0开始,写操作必须以CMD位为1'b1开始。

在执行写入操作的情况下,将写入的SDI命令循环回到SDO。

在执行读操作的情况下,针对输出数据流计算奇偶校验。计算数据由1'b1,状态[5:0]和rd_data [7:0]组成。如果输出数据流中'1'的数目是奇数,即奇偶位被设置为'1',即要发送的所有15位之间的XOR函数。

在写入数据上检查奇偶校验。对于cmd位,六个地址位和八个数据位,传入位流计算奇偶校验。

如果状态机(FSM)处于INIT状态,NORMAL状态,WAKE状态或SLEEP状态,则可以随时通过SPI进行配置。在休眠状态下,SPI的最大时钟频率下降。

SPI MISO:

l  在写入期间,来自MOSI的数据直接循环回去,在读取期间,所寻址的寄存器内容将在完全相同的SPI帧中提供

l  cmd位始终设置为1'b1。 所有其他状态位都设置为零。

SPI errors:

l  在写入期间错误的奇偶校验位,写入数据被忽略。

l  写入无效地址,写入数据被忽略。

l  当SCS为低电平时的SPI时钟周期数量错误(时钟周期超出SCS低电平区间),忽略写入数据,读取数据由器件在每个SPI时钟周期内提供。

l  从无效地址读取(MISO返回的所有数据位为读取数据)。在这种情况下,设备完成计算后,奇偶校验位会反转/损坏。

l  无效的帧持续时间,写入数据被忽略,并且tSPI_fl后,器件在内部关闭SDO的输出驱动器。只要SCS低于tSPI_fl,就会在每个SPI时钟周期提供读数据。

l  如果SPI时钟周期的数量不是16并且器件检测到无效的帧持续时间错误,则设置无效的帧持续时间状态标志并设置错误的SPI时钟周期状态标志数量。

如果发生SPI错误,将产生中断。

只有在SCS被驱动为高电平或发生帧超时后才会启动SPI错误中断。

SPI Write Access To Protected Registers:

需要对某些内部寄存器(SYSPCFG0,SYSPCFG1,WDCFG0,WDCFG1,FWDCFG,WWDCFG0,WWDCFG1)进行保护,以防意外覆盖。可以通过读取寄存器PROTSTAT中的LOCK位来检查保护状态。

只有在通过SPI发送了专用的32位UNLOCK序列后,才能对这些寄存器进行写访问。需要发送四个字节,而不需要其他任何SPI写入访问。这样做的错误将重置序列检测,即必须发送新的UNLOCK序列。如果在两者之间检测到对任何其他寄存器的写入访问,则检测到成功的UNLOCK序列字节的次数为零。在INIT,NORMAL和WAKE状态下可以访问受保护的寄存器。

UNLOCK序列由一个由4个连续字节组成的32位序列(1:0xAB; 2:0xEF; 3:0x56; 4:0x12)组成,它们之间不得有其他SPI写入访问。每个写入字节的正确性可以通过读取寄存器PROTSTAT来检查。一旦UNLOCK序列成功执行,任何受保护的配置请求寄存器都可以被写入。为了确保正确写入受保护的配置请求寄存器,微控制器应读取寄存器值并通过检查数据来验证正确性。写入受保护的配置请求寄存器的数据位在读操作期间反向发回,这意味着微控制器可以计算读取和预期的寄存器数据的XOR。如果寄存器数据正确,结果应该是0xFF。 TLF35584不会检查寄存器中值的正确性。

只有在执行了成功的LOCK序列后,所有受保护的配置请求寄存器值才会被相应的功能捕获。一个成功的LOCK序列包含一个由4个连续字节组成的32位序列(1:0xDF; 2:0x34; 3:0xBE; 4:0xCA),这两个字节必须发送,而不需要其他SPI写入访问。每个写入字节的正确性可以通过读取寄存器PROTSTAT来检查。

这样做的错误将重置序列检测,即必须发送新的LOCK序列。在这种情况下(在LOCK序列之间的任何SPI写入访问都会产生中断。

在检测到成功的LOCK序列后,配置寄存器和所有内部函数将使用来自受保护配置请求寄存器的值进行更新。uC负责确保所有寄存器的配置都是正确的,方法是将新值写入特定的寄存器或通过读回原本应该保持不变的寄存器。部分重新配置受保护的寄存器,即仅配置单个功能并保持其他功能不变,不受支持,因为成功的LOCK序列将所有受保护的配置请求寄存器接收到配置中(RSYSPCFG0,RSYSPCFG1,RWDCFG0,RWDCFG1,RFWDCFG,RWWDCFG0 ,RWWDCFG1)。

在LOCK序列之后,最大的内部配置时间。必须考虑60μs以确保新的配置被接管。

Affected functions:

l  用于WWD和FWD的所有看门狗配置寄存器。

l  当器件处于休眠状态时启用WD

l  所有错误引脚监视配置寄存器

l  在FSM处于休眠状态时启用错误引脚监视

l  一个专用寄存器来启用或禁用STDBY -LDO

l  SS2延迟时间故障事件的配置不会导致FAILSAFE状态。

读访问任何受保护的配置请求寄存器始终是可能的。

SPI Write Initiated State Transition Request And Regulator Configuration:

状态机转换可以通过SPI命令启动。如果任何可选电压源(常规后)的状态预计会在下一个状态中改变,则该信息必须与命令一起发送到同一寄存器中。如果特定电压源(后置调节器)的设置应该改变,但状态需要保持不变,则可以采用相同的方法。这基本上意味着,SPI命令包含FSM的当前状态,但是可配置电压源(后置稳压器)的设置不同。

为了请求状态转换和/或LDO配置的改变,请求数据必须在彼此之后相继地写入到两个分离的寄存器DEVCTRL和DEVCTRLN中。 写入DEVCTRLN的数据必须与写入DEVCTRL的数据进行逐位反转。只有当两个寄存器连续写入后(第一个DEVCTRL和第二个DEVCTRLN),才会接受该请求,并在第二个命令结束时接收CS的上升沿。

如果请求无效(序列错误或DEVCTRLN未反转为DEVCTRL),它将被拒绝,产生一个中断并设置相应的状态标志(NO_OP)。根据第11章中的状态机,一个无效的状态转换请求包含在内,这个请求会被忽略而不会发出中断。

执行请求操作后的ABIST状态信息,一旦START位清零,信息只能被视为有效。位具有与整个寄存器不同的复位类别。位根据* R1)重置。

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读