TLF35584快速上手


最近在调试TLF35584的时候遇到一些问题,头疼了很长时间,所以记录一些,本文只叙述初步的使用,完整的内容很复杂我也暂时没有全部搞完,希望可以帮助看到的朋友少走弯路。

TLF35584框图

在这里插入图片描述

TLF35584状态机

在这里插入图片描述

TLF35584的状态机比较复杂,从上图就可以看出来,但是我们这里只说他的第一步,也就是从Init到Normal的转换,因为如果实现这一步基本上主要的机制也就都了解了。

二、从Init到Normal

在这里插入图片描述
实现的条件:

  • 看门狗(s)需要根据默认配置或根据在INIT计时器内的重新配置维修一次(SPI喂狗一次);
  • ERR监视器需要使用一个有效的信号(至少3个周期)或在INIT计时器内禁用。
  • 如果功能看门狗被激活,则需要提供一个有效的前驱触发器。(功能狗一般默认处于禁能状态);
  • 必须考虑所提供服务后的60µs延迟,以确保内部验证信号的正确释放。(从第一次喂狗结束到进入Normal状态的电平拉高之间必须有大于60us的延时)

1、TLF35584的SPI

在这里插入图片描述
SPI模式:时钟极性:LOW;时钟切换:第二个边沿
SPI指令格式:CMD(1 bit)+ Address(6 bit) +Data(8 bit) +Parity(1 bit)。
0bit:CMD = 1为写操作;CMD = 0读操作;
1~6bit:16进制地址;
7~14bit:数据;
15bit: Parity,奇偶校验位,偶为0。

2、TLF35584的看门狗

在这里插入图片描述
如图所示,两个看门狗,一个窗口狗,一个功能狗,窗口狗就是定时喂狗就可以,喂狗通过SPI指令或者WDI引脚,这个可以修改,但是上电默认是SPI喂狗;功能狗就是会通过SPI发出一个指令,然后对应的指令有对应的答案,功能狗上电默认处于禁能状态。

3、如何使用SPI喂狗

在这里插入图片描述
SPI喂狗通过往17H寄存器写数据实现,先读取TRIG_STATUS位,然后根据此位取反写入TRIG即可。
eg:先读地址0x17的值(寄存器WWDSCMD),若TRIG_STATUS位是1,则TRIG位取反,往地址0x17里写入数据:00000000,信息组装,SPI格式为:1010111000000001,即0xAE01;若TRIG_STATUS位是0,则TRIG位取反,往地址0x17里写入数据:00000001,信息组装:1010111000000010,即0xAE02。

4、ERR监控引脚

在这里插入图片描述

  • 周期为50~100us,通过中断给这个引脚输出一个PWM信号即可。

4、一些关键的地址

//address
#define  ROTCFG   0x03      /*protect register*/
#define  SYSPCFG1 0x05      /*err pin*/
#define  WDCFG0   0x06      /*watchdog enable or disable*/
#define  WWDCFG1 0x0A       /*write open window time*/
#define  WWDCFG0 0x09       /*write clse window time*/

#define PROTSTAT 0x28        /*protect register's status*/
#define RWDCFG0  0x0D        /*watchdog status*/
#define RSYSPCFG1 0x0C       /*err pin status*/
#define RWWDCFG1  0x11       /*read open window time*/
#define RWWDCFG0  0x10       /*read clse window time*/
#define DEVSTAT  0x27       //设备状态寄存器

需要注意的是,修改看门狗状态,喂狗时间的寄存器与查看的地址是不同的。

GO TO Normal指令寄存器

请求状态转换涉及到两个寄存器:DEVCTRL和DEVCTRLN(更改LDO的配置也是配置这两个寄存器)。写入DEVCTRLN的数据必须与写入DEVCTRL的数据按位取反,只有当这两个寄存器连续写入,请求才能接受,并在第二个请求命令结束,片选(SCS)的有效上升沿生效。
在无效请求的情况下(错误的顺序或DEVCTRLN、DEVCTRL数据没有按位取反),将无法实现状态转换,并设置相应的状态标志(寄存器SYSSF,NO_OP位)。
在这里插入图片描述

    ret[1] = SPI35584_sendvalue(write, 0x15, 0xEA);   /*DEVCTRL 请求转换到normal状态*/
    ret[2] = SPI35584_sendvalue(write, 0x16, 0x15);   /*DEVCTRL  和0x15按位取反*/

5、状态切换的实现

以上讲了一些需要用到的内容,工具备好了,下面说一下具体步骤。

  • 1、读取一些地址来查看当前的状态
    • 1.窗狗的开窗时间与关窗时间
    • 2.窗狗与功能狗的状态,以及窗狗的cycle周期
    • 3.ERRPIN引脚的状态,这里可能会容易被误导,大家记住一般默认都是使能状态的
  • 2、实现流程
    • 1.喂一次窗狗
    • 2.发送切换状态的SPI指令(第一次喂狗之后给一个短暂的延时)
    • 3.期间要有至少三次的ERRPIN信号输入,这里开个中断进行输出就行。

到这里如果操作正确35584已经进入到Normal状态,并且将SS1和SS2引脚拉高了,可以查看一下状态寄存器(0x27)的值。
然后需要根据上面查看过的窗狗喂狗周期进行喂狗,因为不喂狗的话就又进入到错误状态了。

  • ERRPIN引脚检测,窗狗与功能狗的使能,与窗狗的喂狗周期,都可以通过SPI指令进行修改。有些地址是受保护地址,需要解锁之后才能访问,并且当访问结束后需要再次加锁,加锁之后新写入的状态开始生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我见山河如故

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值