read PSE TPS2384 POE Firmware Guide

简介

TPS2384是颗4 port的PSE芯片,支持auto mode和manaul mode。

在auto mode的情况下,不需要外界MCU的控制,就可以独立完成基于IEEE 820.3AF的所有工作,包括PD检测,分类,power up和power on。

在manual mode的情况下,配合TI的MSP430系列MCU,可以实现复杂的power management应用。MSP430 MCU通过I2C总线和TPS2384 连接,最多可以挂12颗TPS2384 ,支援最多48 port。MCU再通过UART或者I2C和switch CPU沟通。

本文档就是介绍TPS2384配合MSP430系列MCU应用时,MCU firmware的使用说明。

The firmware supports the following features:

  1. Fully compliant with IEEE802.3af Power-over-Ethernet specification
  2. Device Discovery and Classification
  3. AC or DC disconnect √ Power Management
  4. Legacy Device Detection √ Logical-to-Physical Port Mapping
  5. Save-to-Flash and Restore-Factory-Defaults
  6. Firmware Download Support

Firmware design

在一个PSE系统中,Firmware跑在MSP430  MCU上面,并控制着下面多颗TPS2384。它既控制着每颗TPS2384的system-level的参数,也控制着port-level参数。Firmware里面实现了一个状态机,跟踪每一颗TPS2384的每个port的state。状态机按照固定的顺序依次服务每颗TPS2384的每个port。

在Firmware中,有2类interrupts可以在任何时候发生:1个是通讯接口中断事件,例如I2C或者UART;第2个是system-timer每隔一段固定时间的中断,也叫timer tick,用于让状态机中状态的跳转。

Firmware还跟踪system和device的error conditions,以及任何管理性的事件,这些事件会影响到port states。例如disable a port,改变某个port的设定以让这个port不再支持某个feature,这些都是管理性的事件。

Firmware的主循环,依次执行这些状态,在main.c中。For DC-Disconnect,主循环一次的耗费的时间大概是75毫秒,For AC-Disconnect,耗费的时间大概是25毫秒。主循环的状态跳转如图所示。

image

关于图中的每个状态的详细描述会在文档下面的章节中描述。

总结来说,firmware会参与到每个状态的子状态中,例如会控制discovery中的每一个过程,把硬件该做的事件,软件都做到了。

firmware在port power up之后会实时polling port的current和voltage,计算power,以判断是否有过流,超载,欠压,过压以及power超过threshold的错误发生。并且在错误发生时,有两种选择,立即shutdown port,或者设定delay timer,当delay timer超时之后才会shutdown port。

Host Interface Protocol

在一个PSE系统中,不只有TPS2384和MSP430 MCU,还有Host CPU,Host CPU和MSP430之间通过I2C或者UART连接,HOST CPU发送命令控制整个PSE系统。所以跑在MSP430上的firmware需要定义一些命令接口,来方便Host CPU使用。

Initialization

MSP430上面的firmware支持很多可配置的参数,这样提高了POE系统使用的灵活性。这些参数中很多都是动态可调的,有些则是在MSP430的firmware正常工作启动之前,就需要预先初始化好的。

一般而言,系统初始化的过程为:

  1. Release the msp430 from reset
    • Boot loader application starts, checks for valid PoE image in flash.
    • PoE image begins and initializes microcontroller and restores default or flash values for necessary parameters .
    • TPS2384 devices are held in reset at this point
  2. Host program sends information to the MSP430 at this point:
    1. System Write
    2. Port Write (one command for each of the available ports)
    3. Port Write (one command for each of the available ports)
    4. Save Configuration
  3. Host program then 'starts' the application
    1. System Write Start
    2. MSP430 releases all TPS2384 devices from reset
    3. Initializes them, and can begin the application in earnest, powering ports, etc.
    4. At this point, most commands can be given. (Normal operation)

Power Management(功率管理策略)

POE power management method是为了管理POE系统的电源功率资源,从而更有效率和尽可能满足多个PD的供电需求。Power management不是IEEE standard规定的,它是一种系统功率管理策略,目标是给尽可能多的PD供电,限制PD的供电。在系统功率有限,不能满足所有PD的要求时,power management可以提供系统功率的使用效率。

  • Power Management  Configuration

Power management 功能模块允许用户配置每个port的power management策略。此Firmware提供2个参数供配置,port limit from classification,use port power limit for power management。

image

如果port消耗功率多余port power limit,port会被powered down。The total power management power 是所有port power allocation的总和。

因为TPS2384只符合IEEE 802.3af,所以每个port最多只能draw 15.4W,超过,就会被干掉。

  • Disabling power management

power management模块渗透到很多模块里面去了,为了disable power management功能,可以将power limit设的很高,这样port实际消耗的功率就不会超过limit,等于power management功能模块失效。

  • Definitions and Formulas

Pcsys, the current total power consumed by PDs.

Pmsys, the maximum total power available for PDs.

  • System Parameters

power management 算法有一些内部参数,有些参数是run time时可配置的,有些参数是软件里面的常数。

port priority是可配置的。

  • State machine

power management的state machine包含一系列的状态,power management就是通过这些状态的跳转来实现功率管理。

状态包含:

image

可以看出power management的状态就这么几个,

第1个是刚上电或者没出现状况时的状态,例如功率还比较富裕没有出现overload,这时候新插入的port总能power up。

第2个状态是系统消耗的功率已经超过了系统最大能提供的功率threshold,有PD已经被关掉了。

第3个状态是系统消耗的功率过多超过一定threshold,无法满足所有PD要求,有一些PD被关掉了,使得高优先级的PD可以power up并且系统消耗的总功率不超过Pmsys-d1。

第4个状态是高优先级的PD已经被power up。

第5个状态时系统消耗功率过多,出于被限制的状态。

第6个状态时,power需求将到threshold Pmsys-d2以下,并且有port被power up。

power management的状态机流程图如下所示:

image

个人的理解,这个流程图总是在进入到一个状态之后,先处理,然后打开一个timer,设置好timer delay。然后回到主循环开始的地方,判断该进入哪个mode。因为IEEE对于detection/classification/power up是有时间限制的。所以timer需要满足这些要求才好。

这里面比较另外knockoff mode,limit mode,和re-enable mode,感觉没有多大实际意义。

个人会在后面的文章当中给出比较好的规划。

MSP430 Firmware upgrade

firmware是保存在MSP430单片机上的内置flash上。MSP430内置flash还有一个区域是保存boot loader code,也叫BSL。MSP430还有一个JATG接口,所以说firmware可以有2种方式升级:

第1是外部Host通过I2C或者UART把firmware传给MSP430,再请里面BSL帮忙写到flash里面去;

第2个方法是直接通过JATG工具去写,JATG既可以升级firmware,又可以升级BSL。

原文地址:https://www.cnblogs.com/ironx/p/4864820.html