简介
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:
- Fully compliant with IEEE802.3af Power-over-Ethernet specification
- Device Discovery and Classification
- AC or DC disconnect √ Power Management
- Legacy Device Detection √ Logical-to-Physical Port Mapping
- Save-to-Flash and Restore-Factory-Defaults
- 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毫秒。主循环的状态跳转如图所示。
关于图中的每个状态的详细描述会在文档下面的章节中描述。
总结来说,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正常工作启动之前,就需要预先初始化好的。
一般而言,系统初始化的过程为:
- 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
- Host program sends information to the MSP430 at this point:
- System Write
- Port Write (one command for each of the available ports)
- Port Write (one command for each of the available ports)
- Save Configuration
- Host program then 'starts' the application
- System Write Start
- MSP430 releases all TPS2384 devices from reset
- Initializes them, and can begin the application in earnest, powering ports, etc.
- 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。
如果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就是通过这些状态的跳转来实现功率管理。
状态包含:
可以看出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的状态机流程图如下所示:
个人的理解,这个流程图总是在进入到一个状态之后,先处理,然后打开一个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。