本文主要是介绍TLF35584 SPI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SPI
- SPI介绍
- SPI对受保护寄存器的写访问
- SPI写初始状态转换请求和稳压器配置
SPI介绍
- 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 master中应用。读操作必须从CMD-bit为1’b0开始,写操作必须从CMD-bit为1’b1开始。
在执行写操作的情况下,将写到SDl的命令循环回SDO。
如果执行读操作,则对输出数据流计算奇偶校验。用于计算的数据包括1’b1, status[5:0]和rd_data[7:0]。如果输出数据流中的“1”为奇数,则奇偶校验位设置为“1”,即异或功能之间的所有15位发送出去。
对写数据进行奇偶校验。奇偶校验是在输入的位流上计算cmd位、六个地址位和八个数据位的。
如果状态机(FSM)处于INIT状态、NORMAL状态、WAKE状态或SLEEP状态,则可以随时通过SPI进行配置。在睡眠状态期间,SPI的最大时钟频率降低,详细信息请参见表19。
SPI访问时序见下图:
- 在写入过程中,来自MOSI的数据直接回圈,在读取过程中,寻址寄存器内容将在相同的SPI帧中提供。
- cmd位总是设置为1’b1。所有其他状态位被置零。
SPI对受保护寄存器的写访问
某些内部寄存器(SYSPCFGO、SYSPCFG1、WDCFGO、WDCFG1、FWDCFG、WWDCFGO、WWDCFG1)需要防止被意外覆盖。保护的状态可以通过读取寄存器PROTSTAT中的LOCK位来检查。
只有在专用的32位解锁序列通过SPI发送后,才能对这些寄存器进行写访问。这四个字节需要在没有任何其他SPI写访问的情况下发送。发送出错误将重置序列检测,即必须发送新的UNLOCK序列。如果对任何其他寄存器进行写访问,则在两者之间检测到PROTCFG,则产生中断并成功检测到的解锁序列字节数设置为零。在INIT, NORMAL和WAKE状态下可以访问受保护的寄存器。
UNLOCK序列由4个连续字节的32位序列组成(1:0xAB;2:0xEF;3:0x56;4:0x12),必须在没有其他SPI写访问的情况下发送。每个写入字节的正确性可以通过读取寄存器PROTSTAT来检查。一旦UNLOCK序列被成功执行,任何受保护的配置请求寄存器都可以被写入。为了确保正确写入受保护的配置请求寄存器,微控制器应回读寄存器值并通过检查数据来验证正确性。在读取操作期间,写入受保护的配置请求寄存器的数据位被反转然后发送回来,这意味着微控制器可以计算读取和期望的寄存器数据的异或。如果寄存器数据正确,结果应该是OxFF。TLF35584不会检查寄存器中值的正确性。
所有受保护的配置请求寄存器值只有在成功执行LOCK序列之后才由相应的函数捕获。一个成功的锁序列包含一个32位的4个连续字节序列(1:OxDF;2:0x34;3:0xBE;4:0xCA),必须在没有其他SPI写访问的情况下发送。每个写入字节的正确性可以通过读取寄存器PROTSTAT来检查。
发送出错将重置序列检测,即必须发送一个新的锁序列。在这种情况下(在LOCK序列之间的任何SPI写访问)都会产生中断。
一旦检测到成功的LOCK序列,配置寄存器和所有内部函数就会使用受保护的配置请求寄存器的值进行更新。μC的责任是通过将新值写入特定寄存器或通过回读应该保持不变的寄存器来确保所有寄存器都正确配置。不支持部分重新配置受保护的寄存器,即只配置一个函数而保持其他函数不变,因为通过成功的锁序列,所有受保护的配置请求寄存器都被接管到配置中(RSYSPCFGO, RSYSPCFG1,RWDCFGO, RWDCFG1, RFWDCFG, RWWDCFGO, RWWDCFG1)。
在LOCK序列之后,内部配置时间为max。必须考虑60个us,以确保新的配置被接管。
受影响的功能:
- 所有看门狗配置寄存器为WWD和FWD。
- 设备处于SLEEP状态时使能WD功能
- 所有错误管脚监控配置寄存器
- FSM处于SLEEP状态时的使能Error pin监控功能
- 用于启用或禁用STDBY LDO的专用寄存器
- SS2延迟时间不导致FAILSAFE状态的故障事件配置
对任何受保护的配置请求寄存器的读访问始终是可能的。
SPI写初始状态转换请求和稳压器配置
状态机转换可以通过SPI命令启动。如果任何可选电压源(post regular)的状态预计会在下一个状态下发生变化,则该信息必须与命令一起发送到相同的寄存器中。如果特定电压源(后稳压器)的设置应该改变,但状态需要保持不变,则可以采用相同的方法。这基本上意味着,SPI命令包含FSM的当前状态,但对于可配置的电压源(后稳压器)有不同的设置。
为了请求状态转换和/或更改LDO配置,请求数据必须依次写入两个分离的寄存器DEVCTRL和DEVCTRLN。与写入DEVCTRL的数据相比,写入DEVCTRLN的数据必须按位反转。只有当两个寄存器在彼此之后连续写入时(第一个DEVCTRL和第二个DEVCTRLN ),请求才会被接受,并将在第二个命令结束时在CS的上升沿被接管。
在无效请求的情况下(错误的顺序或DEVCTRLN没有倒转到DEVCTRL),它将被拒绝,一个中断被生成,并设置相应的状态标志(NO_OP)。根据第11章的状态机,如果一个无效的状态转换请求,该请求将被忽略而不发出中断。
相关的寄存器可以查看data sheet寄存器,这里不再赘述。
这篇关于TLF35584 SPI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!