XS2184四通道PSE,兼容 IEEE 802.3at/af,内建 N-MOSFET以太网供电 PSE 控制器

产品概述
XS2184 是一个四通道、供电设备( PSE )电源控制
器,内建 N 通道 MOSFET ,设计用于 IEEE ® 802.3at/af
兼容 PSE 。器件提供用电设备( PD )侦测、分级、限流
以及负载断开检测。器件支持自动工作和软件编程。器
件还支持最新二事件分级。采用单电源供电,能够为单
个端口提供高达 30W 的功率,并为传统的 PD 设计提供
大电容检测。
器件通过 I 2 C 兼容 3 线串口进行软件配置和编程,
通过 I 2 C 接口随时提供端口的电流和电压读数。全面的
可编程能力提高了系统设计灵活性,并提供现场诊断功
能,满足各种非标准系统应用。
采用 48 引脚 QFN48L(0707x0.75-0.50)(H) 功率封
装,工作在扩展级( -40 ℃至 +105 ℃)温度范围。
主要特点
兼容 IEEE 802.3at/af
0.25Ω 电流检测电阻
9 位端口电流和电压实时监测
兼容 I 2 C 3 线串口
支持独立供电操作
为遗留设备提供高容值检测
支持直流负载断开检测
内建 100V DS N 通道 MOSFET
48-PIN QFN48L(0707x0.75-0.50)(H) 功率封装
典型应用
PSE-ICM
供电设备( PSE
交换机 / 路由器
 中跨电源注入
简化应用框图
最大额定值
(除非额外说明,所有电压均参考 V EE
AGND.............................................................-0.3V ~ +85V
DGND, SVEE_..............................................-0.3V ~ +0.3V
V DD …………...…. -0.3V ~ 低于 (V AGND + 0.3V) +4V
OUT_..............................................-0.3V ~ (V AGND + 0.3V)
SENSE_..........................................................-0.3V ~ +22V
A3, A2, A1, A0, MIDSPAN, AUTO,
INT
_______
, SCL, SDAIN, SDAOUT, EN DGND..-0.3V ~ +6V
INT
_______
SDAOUT 流入最大电流 ...............................20mA
OUT_ 流入最大电流 ............................................. 内部调制
连续功耗( T A = +70 ℃)
48-PIN QFN(derate 34.5mW/ above +70 ) 2758mW
封装热阻(注 1 ):
θ JA .........................................................................+29 /W
θ JC ..........................................................................+1.7 /W
工作温度范围 ............................................-40 ~ +105
存储温度范围 ............................................-65 ~ +150
节温 ...........................................................................+150
合金温度(焊接, 10 秒) ............................................+300
焊接温度(回流) .......................................................+260
1 :封装热阻依据 JEDEC 规范 JESD51-7 获得。
电参数
V AGND = 32V ~ 60V, V EE = V DGND = 0V, T A = -40 ~ +105 ℃。除非特别标注,所有电压均参考 V EE 。典型值均在
V AGND = 54V T A = +25 ℃,且所有寄存器默认设置时测得。 PIN 脚流入的电流记为正,反之为负。(注 2)
功能框图
详细说明
XS2184 是一款 4 通道 PSE 电源控制器,设计应用
在符合 IEEE 802.3at/af 规范的 PSE 中。该芯片提供 PD
检测、分级、限流和负载断开检测。芯片支持全自动工
作的同时也支持软件编程操作。芯片还支持新二事件分
级。芯片支持单电源供电工作,单个端口可提供高达
30W 的功率,同时还提供非 PD 设备提供高电容检测。
芯片具有兼容 I 2 C 3 线串行接口以及可完全被软件
配置和编程的特点。芯片可以通过 I 2 C 接口立即读出出
端口电流和电压。芯片还提供输入欠压锁定、输出过压
锁定、过温保护和启动时输出电压摆率限制。
复位
芯片可以通过以下任一方式复位:
1 )、电源上 / 下电。一旦 VEE 掉电小于欠压阈值时,
复位条件将触发。
2 )、硬件复位。将 EN 拉低至 DGND 持续 100us
以上,即可触发硬件复位。硬件复位一旦清除, EN
VDD 高电平,同时所有的寄存器被重置到默认状态。
3 )、软件复位。对 RESET_IC 寄存器 (R1Ah[4])
写入逻辑“ 1 ”,即可触发软件复位。复位会自动清除,
同时所有的寄存器会被重置到默认状态。
4 、热关断。当温度达到 +140 ℃时,芯片进入热关
断。一旦温度下降到 +120 ℃以下,芯片将离开热关断状
态,并被复位。
在正常工作模式下,更改 Address Inputs MIDSPAN
以及 AUTO 都会被忽略,在被复位之前,他们可以随
时被更改。在复位事件结束时,芯片将被锁定在这些输
入状态。
端口复位
在 正 常 供 电 工 作 任 意 时 刻 , 设 置 RESET_P_
(R1Ah[3:0]) 至高电平,将关断端口,禁止检测和分级,
同时清除端口事件和状态寄存器。如果一个端口未被供
电,设置那个端口的 RESET_P_ 置高电平,是无效的。
单独的端口被复位并不会使整个芯片被复位。
中跨模式
在中跨模式下,芯片在检测阶段采用有节奏的时
序。当有节奏的时序有效而检测失败发生时,端口将等
待至少 2s 后再尝试下一次检测。通过设置 MIDSPAN
至高电平,以激活中跨模式,然后供电或复位芯片。作
为选择,通过设置 MIDSPAN_ (R15h[3:0], Table 23)
逻辑“ 1 ”,中跨模式可以为每个端口单独进行软件编
程。默认情况下, MIDSPAN 输入被内部上拉,令节奏
性间隔置有效。将 MIDSPAN 强制置低电平关闭该功能。
工作模式
芯片提供四种工作模式以适用不同的系统需求。默
认情况下,自动模式允许芯片采用默认配置自动运行,
无需任何软件操作。半自动模式将对连接到端口上的设
备进行检测和分级,但不会对其进行供电,直到被软件
指令要求上电。人工模式允许软件全权控制芯片,对系
统诊断非常有用。关断模式将终结所有操作并安全地关
闭端口电源。
在自动、半自动和人工模式之间切换并不会妨碍影
响输出端口的正常工作。当一个端口被设置在关断模
式,该端口的所有操作都会立刻停止,该端口保持空闲
直到退出关断模式。
自动模式
默认情况下,当 AUTO 输入悬空时,待上电完成或
复位状态被清除时,芯片进入到自动模式。通过设置相
应端口模式位 (R12h[7:0])
<think>好的,我现在需要帮助用户解决他们遇到的链接错误。首先,我得仔细看看错误信息。用户提供的错误显示在链接阶段出现了“multiple definition of `hspi1&#39;”,也就是说hspi1这个符号被重复定义了。具体来说,spi.c.obj和main.c.obj中都定义了这个变量。 首先,我应该回忆一下C语言中变量定义和声明的区别。在C中,全局变量如果在多个文件中被定义,就会导致重复定义的错误。通常,正确的做法是在一个源文件中定义变量,然后在其他文件中使用extern关键字声明它,而不是再次定义。 接下来,用户的问题可能出在hspi1变量的定义方式上。比如,可能在头文件里使用了没有extern关键字的定义,导致每个包含该头文件的源文件都生成一个hspi1的定义,从而引发冲突。或者,用户在spi.c和main.c中都直接定义了hspi1,而没有适当的声明。 然后,我需要考虑如何指导用户检查他们的代码。首先应该查看spi.c和main.c的第26和27行,确认hspi1是如何被定义的。如果这两个文件里都有类似SPI_HandleTypeDef hspi1;这样的语句,那就是问题所在。应该改为在一个文件中定义,另一个文件中用extern声明。 另外,头文件也是一个可能的问题点。如果hspi1在头文件中被定义,而没有使用extern或者条件编译保护,那么每个包含该头文件的源文件都会有一个定义,导致重复。这时候需要建议用户将头文件中的定义改为声明,即加上extern,并在一个源文件中进行实际的定义。 此外,用户可能没有使用静态变量,或者错误地使用了inline等关键字,但这种情况可能较少。主要焦点还是在全局变量的定义和声明上。 链接器错误后的内存使用信息显示RAM和FLASH的使用率并不高,所以应该不是内存不足的问题,可以排除这个因素。错误明确指向重复定义,所以需要集中解决变量定义的问题。 总结下来,解决方案应该是: 1. 检查hspi1在两个源文件中的定义,确保只有一个地方有定义,其他地方用extern声明。 2. 检查头文件,确保没有在头文件中直接定义变量。 3. 使用extern关键字在头文件中声明变量,在对应的源文件中定义。 可能需要用户提供相关代码片段以更准确地定位问题,但根据现有信息,这些步骤应该能解决问题。</think>这个错误属于**链接阶段的多重定义(Multiple Definition)问题**,具体分析如下: #### 错误原因分析: 1. **关键错误信息**: ``` multiple definition of `hspi1&#39; first defined here ``` 表明符号 `hspi1` 在以下两个文件中被重复定义: - `spi.c` 第27行 - `main.c` 第26行 2. **根本原因**: - `hspi1` 是一个**全局变量**,在两个不同的源文件(`spi.c` 和 `main.c`)中均被直接定义(例如通过 `SPI_HandleTypeDef hspi1;`),导致链接器发现重复符号。 --- #### 逐步解决方案: 1. **定位重复定义的位置**: - 检查 `spi.c` 和 `main.c` 文件中关于 `hspi1` 的定义。 - 错误提示的行号(`spi.c:27` 和 `main.c:26`)是重要线索。 2. **修正变量定义方式**: - **保留一个定义**:选择一个源文件(如 `main.c`)保留实际定义: ```c SPI_HandleTypeDef hspi1; // 仅在一个文件中定义 ``` - **其他文件用 `extern` 声明**:在其他文件(如 `spi.c`)和头文件中改为声明: ```c extern SPI_HandleTypeDef hspi1; // 声明而非定义 ``` 3. **检查头文件**: - 如果 `hspi1` 的声明出现在头文件(如 `spi.h`)中,需确保使用 `extern` 关键字,避免头文件被包含时产生多个定义: ```c // spi.h 中正确写法 #ifndef SPI_H #define SPI_H extern SPI_HandleTypeDef hspi1; // 声明 #endif ``` 4. **验证修改**: - 清理并重新编译项目: ```bash make clean && make ``` --- #### 附加建议: - **避免全局变量**:如果可能,改用局部变量或封装结构体。 - **使用 `static` 关键字(谨慎)**:若变量仅在单文件内使用,可定义为 `static SPI_HandleTypeDef hspi1;` 限制作用域。 - **链接脚本检查(高级)**:确保 `RAM` 和 `FLASH` 区域分配合理(当前使用率较低,暂无需调整)。 修改后应能解决链接错误。如果问题依然存在,请提供 `hspi1` 相关的代码片段以便进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值