1. 项目概述:从零开始玩转TI FSI高速串行接口评估板
如果你正在设计一个多轴伺服驱动器、一个复杂的数字电源系统,或者任何需要在多个微控制器(MCU)之间、或者跨越高压隔离屏障进行高速、可靠数据交换的工业应用,那么德州仪器(TI)的FSI(Fast Serial Interface)外设很可能就是你正在寻找的解决方案。FSI是一种为C2000™实时微控制器家族设计的高速串行接口,它用极简的硬件(一根时钟线,一到两根数据线)实现了高达50MHz时钟频率、200Mbps有效吞吐率的通信能力。但问题来了:如何快速上手、评估这个强大的外设,并将其集成到你的实际系统中?
这就是TMDSFSIADAPEVM FSI Adapter Board(后文简称FSI适配板)的价值所在。它不是一个简单的转接板,而是一个集成了隔离电源(SN6505)、数字隔离器(ISO7763)、高速LVDS收发器(DSLVDS1047/48)和中速RS485收发器(THVD1452)的完整硬件参考设计平台。简单来说,它把FSI外设评估中最复杂、最容易出错的硬件部分——信号调理、隔离、电平转换和物理层接口——都帮你做好了,让你能专注于FSI协议本身的应用和软件调试。
我接触这块板子是在一个多电机同步控制项目中,当时需要在主控板和三个独立的功率板之间建立高速、实时的通信链路,同时确保高压侧和低压侧的安全隔离。FSI适配板让我在几天内就搭建起了完整的硬件测试环境,跳过了漫长的PCB设计和调试周期。这篇文章,我将结合官方用户指南和我的实际使用经验,为你拆解这块板子的硬件设计精髓、配置要点、性能实测数据以及高级应用技巧,目标是让你拿到板子后,能立刻上手,并理解其背后的设计逻辑,为你的产品设计提供可靠的参考。
2. 硬件深度解析:不只是连接器与跳线
刚拿到FSI适配板时,你可能会被板子上密密麻麻的跳线帽和连接器搞得有点懵。别担心,我们一步步来拆解。理解其硬件架构,是正确使用和发挥其最大潜力的第一步。
2.1 核心功能模块与设计意图
FSI适配板的硬件设计清晰地划分为几个功能域,理解这个划分至关重要,尤其是在处理隔离和供电时。
1. 主控侧(Primary Side)与隔离边界板子的左侧区域(以J1、J2连接器为中心)是主控侧。这里的GND1地平面与你所使用的LaunchPad或controlCARD开发板的地直接相连。所有来自C2000 MCU的FSI原始信号(TX_CLK, TX_D0, TX_D1, RX_CLK, RX_D0, RX_D1)都通过J1或J2进入板卡。这部分电路是“冷”侧或低压侧。
2. 隔离通道与次级侧(Secondary Side)FSI信号首先会经过ISO7763高速数字隔离器。这是实现电气安全隔离的关键。隔离器之后,信号进入了次级侧,其地平面为GND2。GND1和GND2在物理和电气上是完全隔离的。次级侧包含了LVDS和RS485收发器电路,以及RJ45网络接口。这部分电路可以认为是“热”侧或外部接口侧,它可以工作在另一个不同的地电位上。
重要安全提示:板上有多个隔离的GND区域(主要是GND1和GND2)。在给不同区域供电时务必小心,必须使用隔离电源。一个简单的安全法则是:如果你不确定,只给主控侧(Primary Side)供电,然后利用板载的隔离DC/DC转换器(SN6505)为次级侧生成隔离的3.3V电源。这样可以避免因共地导致隔离失效或损坏设备。
3. 接口与收发器选型
- LVDS通道:采用DSLVDS1047(发送)和DSLVDS1048(接收)芯片。LVDS(低压差分信号)适用于高速、点对点的板间通信,在本板上通过一对RJ45(J18 TX, J19 RX)引出,使用CAT5e/6网线连接,支持长达10米以上的传输距离(实测可达50MHz时钟)。
- RS485通道:采用THVD1452收发器。RS485适用于中速、多点通信,具有更强的抗共模干扰能力和更远的传输距离(理论可达千米级,实际受限于FSI时序)。在本板上通过另一对RJ45(J21 TX, J20 RX)引出。
- 信号选择矩阵:板子中间区域的跳线帽(J11-J16)是灵魂所在。它们决定了经过隔离后的FSI信号是路由到LVDS收发器还是RS485收发器,或者不经过任何收发器直接跳通。这提供了三种核心工作模式:隔离直连模式、隔离+LVDS/RS485模式、非隔离LVDS/RS485模式。
2.2 关键连接器与跳线功能速查
为了快速查阅,我将板载主要接口的功能整理如下表。在实际操作时,对照此表和板子上的丝印,能极大提高效率。
表1:FSI适配板主要硬件接口与指示灯说明
| 标识 | 类型 | 功能描述 | 实操注意点 |
|---|---|---|---|
| J1 | 2x5 2.54mm排母 | LaunchPad FSI接口。连接LaunchPad开发板上的FSI插座。 | LAUNCHXL-F280049C Rev A版是8针接口,不支持D1信号和3.3V供电,需通过J6从BoosterPack引脚取电。 |
| J2 | 2x5 2.00mm排母 | controlCARD FSI接口。需使用附带的10pin扁平电缆连接controlCARD。 | TMDSCNCD280049C Rev B等版本也是8针接口,注意事项同J1。 |
| J3, J4 | 2x10 2.54mm排针 | LaunchPad BoosterPack兼容接口。主要起机械固定作用。 | 仅使用了其中一个引脚的3.3V(通过J6跳线)。如需堆叠其他BoosterPack,可使用其通孔焊盘。 |
| J5 | 3-pin跳线 | 主控侧电源选择。决定主控侧(Primary Side)3.3V的来源。 | 最易出错点!必须根据你的供电方案正确配置,详见下文供电章节。 |
| J6 | 2-pin跳线 | LaunchPad 3.3V电源桥接。将J3上的3.3V引至板子主控侧。 | 当使用LaunchPad且其FSI接口无3.3V引脚时,必须短接此跳线。 |
| J7 | 3-pin跳线 | 次级侧电源选择。选择次级侧(Secondary Side)的3.3V来自板载隔离DC/DC还是外部USB。 | 选择“ISO_3V3”则使用板载隔离电源;选择“USB_3V3”则使用J8的USB供电(需隔离)。 |
| J8 | Micro-USB接口 | 5V USB电源输入。用于单独为次级侧电路供电。 | 供电时,D3(USB PWR)LED会亮起。注意:此路电源非隔离!若系统需要隔离,慎用或确保USB电源是隔离的。 |
| J10 | 3-pin跳线 | 差分收发器电源选择。选择为LVDS还是RS485收发器供电。 | LVDS和RS485不能同时供电!必须根据你使用的通信标准选择其一。 |
| J11-J16 | 3-pin跳线组 | FSI信号路由选择矩阵。每个跳线控制一个FSI信号(CLK, D0, D1)是通向LVDS还是RS485。 | 配置关键!必须为所有使用的信号线(CLK和至少D0)统一选择LVDS或RS485路径。 |
| J18-J21 | RJ45接口 | CAT5网络接口。J18/J19用于LVDS TX/RX;J20/J21用于RS485 TX/RX。 | 使用标准的T568B直通网线进行连接。网线质量对高速LVDS信号的眼图影响很大。 |
| D4 | LED | 主控侧电源指示灯。主控侧得电时亮起。 | 快速判断主控侧供电是否正常。 |
| D5 | LED | LVDS收发器电源指示灯。J10跳线选择LVDS且供电正常时亮起。 | 快速判断LVDS电路是否上电。 |
| D6 | LED | RS485收发器电源指示灯。J10跳线选择RS485且供电正常时亮起。 | 快速判断RS485电路是否上电。 |
3. 实战配置指南:从开箱到建立通信
理论清晰后,我们进入实战环节。假设你手头有一块LAUNCHXL-F280049C LaunchPad和这块FSI适配板,目标是建立一个点对点的LVDS通信链路。
3.1 硬件连接与跳线配置(以LaunchPad + LVDS为例)
步骤1:物理连接
- 将FSI适配板的J3和J4两个20针排针,垂直对齐插到LaunchPad顶部的两组40针扩展座子上。这一步主要提供机械支撑。
- 将LaunchPad上的FSI连接器(一个2x5的排座)与适配板上的J1(2x5排母)连接起来。确保引脚1(通常有方形焊盘或“1”标识)对齐。
步骤2:供电配置(重中之重)这是最容易出错的地方。我们的目标是:从LaunchPad取电,并通过板载隔离器为次级侧产生隔离电源。
配置主控侧(Primary Side)电源:
- 查看你的LaunchPad原理图或用户指南,确认其FSI连接器是否提供3.3V引脚。对于LAUNCHXL-F280049C Rev A,它不提供。因此,我们需要通过J6从BoosterPack接口取电。
- 短接J6跳线帽(2-pin)。这将J3引脚上的3.3V引至板子的主控侧。
- 配置J5跳线。由于我们通过J6从BoosterPack取电,J5应短接下方两个引脚(标记为“3V3 from J6”)。此时,主控侧的3.3V来自J6。
- 上电后,D4(PRIMARY PWR)LED应亮起,表明主控侧供电正常。
配置次级侧(Secondary Side)电源:
- 我们希望使用板载的隔离DC/DC(SN6505)为次级侧(包含LVDS收发器)供电。该隔离电源的输入正是主控侧的3.3V。
- 因此,将J7跳线帽短接右侧两个引脚(标记为“ISO_3V3”)。这样,次级侧的3.3V就来自隔离电源模块。
- 不要连接J8的USB线,除非你需要额外的非隔离电源。
配置收发器电源:
- 因为我们使用LVDS通信,需要给LVDS收发器芯片供电。
- 将J10跳线帽短接右侧两个引脚(标记为“LVDS_3V3”)。
- 上电后,D5(LVDS PWR)LED应亮起,表明LVDS收发器供电正常。D6(RS485 PWR)应保持熄灭。
步骤3:信号路由配置我们需要将FSI信号路由到LVDS收发器。
- 对于发送信号(TX):将跳线J11(CLK)、J12(D0)、J13(D1)全部短接到标有“LVDS”的一侧(通常是跳线帽竖直插在中间和右侧引脚)。
- 对于接收信号(RX):将跳线J14(CLK)、J15(D0)、J16(D1)同样全部短接到“LVDS”一侧。
- 注意:如果你只使用单数据线(D0)模式,D1(J13/J16)可以不连接或保持开路,但为了一致性,建议一并配置。
步骤4:外部环路连接最后,用一根CAT5e或更高规格的网线,将适配板上用于LVDS发送的RJ45(J18)连接到用于LVDS接收的RJ45(J19)。这就完成了一个最简单的自发自收(Loopback)硬件连接。如果你想连接两块板子进行点对点通信,则将板A的J18(TX)连接至板B的J19(RX),同时将板B的J18连接至板A的J19。
3.2 软件环境搭建与示例程序运行
硬件就绪后,需要在CCS(Code Composer Studio)中配置和运行示例程序。
- 安装C2000Ware:确保你安装了对应你MCU型号的C2000Ware软件包。里面包含了所有FSI的驱动库和示例工程。
- 导入示例工程:以最基础的
fsi_ex_loopback_cpucontrol为例。在CCS中,通过Project -> Import CCS Projects导入该工程。 - 关键工程配置:
- 预定义符号:由于我们使用LaunchPad,必须在工程属性的
Build -> C2000 Compiler -> Predefined Symbols中,添加_LAUNCHXL_F280049C。如果使用controlCARD,则不要定义此符号。 - 启用外部环回:在
fsi_external_loopback.h或类似配置文件中,找到EXTERNAL_FSI_ENABLE宏定义,确保其值设置为1。这告诉代码使用外部物理连接进行环回测试,而非MCU内部的数字环回。 - 检查FSI引脚配置:在
fsi_pin_setup.c或device_init.c中,确认FSI的TX和RX引脚映射与你的硬件连接(J1)一致。示例工程通常已为评估板配置好。
- 预定义符号:由于我们使用LaunchPad,必须在工程属性的
- 编译与下载:编译工程并将其下载到LaunchPad的F280049C MCU中。
- 运行与验证:运行程序。示例程序通常会通过FSI TX发送一个特定的数据模式(例如0xAAAA),然后通过FSI RX接收回来,并在内存中比较发送和接收的数据是否一致。你可以通过CCS的表达式窗口(Expressions)或内存浏览器(Memory Browser)查看状态变量(如
errorCount)来验证通信是否成功。如果errorCount为0且持续不变,恭喜你,硬件和基础软件配置成功!
4. 性能实测与数据分析:电缆能拉多长?
官方用户指南提供了宝贵的性能实测数据,这对于我们设计实际系统的通信距离和可靠性至关重要。我们来深入解读一下这些数据背后的含义。
4.1 LVDS模式下的CAT5电缆性能
下表是基于LAUNCHXL-F280049C平台,使用LVDS收发器,在50MHz FSI时钟(单数据线模式,理论吞吐率100Mbps)下的测试结果:
表2:LVDS FSI over CAT5 性能实测
| CAT5线缆长度 (米) | FSI时钟频率 | 数据线数量 | 实测吞吐率 | 典型RX建立时间 (ns) | 典型RX保持时间 (ns) |
|---|---|---|---|---|---|
| 1 | 50 MHz | 1 | 100 Mbps | 4.4 | 4.2 |
| 5 | 50 MHz | 1 | 100 Mbps | 4.6 | 4.0 |
| 10 | 50 MHz | 1 | 100 Mbps | 4.1 | 4.1 |
数据解读与设计启示:
- 传输距离:在50MHz的极限时钟下,使用10米标准CAT5网线,FSI接收端(FSIRX)的建立时间和保持时间仍然有约4ns的余量。这个余量非常健康。这意味着在典型的工业机柜内布线(10米以内),使用LVDS+CAT5的方案是完全可以稳定工作的,甚至可能留有应对更差线缆或接头的裕量。
- 时序余量是关键:FSI通信的稳定性不直接取决于“电缆能否通”,而取决于信号到达RX引脚时,是否满足MCU数据手册中规定的FSIRX建立时间(t_SU)和保持时间(t_HD)要求。实测数据(4ns左右)需要与具体MCU(如F28004x)数据手册中的FSIRX时序参数(可能要求最小2-3ns)进行对比。实测值远大于最小值,说明链路非常稳定。
- 双数据线模式:如果使用双数据线(D0和D1),在相同50MHz时钟下,理论吞吐率可达200Mbps。虽然用户指南注明因硬件限制未测试此模式,但根据LVDS收发器和FSI协议原理,只要单线模式稳定,双线模式在相同电缆长度下也应能工作,但可能需要更严格的PCB布局和信号完整性处理。
实操心得:在实际项目中,如果通信距离接近10米或环境干扰较大,建议:
- 使用CAT5e或CAT6线缆,它们有更好的绞合度和屏蔽性能,能提供更优的信号完整性。
- 在软件中启用并运行FSI的误码率测试,进行长时间(如24小时)的压力测试,而不仅仅是功能测试。
- 用示波器测量RX端的眼图,直观观察信号质量。干净的信号眼图是稳定通信的最佳保证。
4.2 RS485模式下的CAT5电缆性能
RS485以其强大的抗共模干扰能力和更长的传输距离著称,但速度通常低于LVDS。FSI适配板上的RS485收发器(THVD1452)支持更高的速率,但受限于FSI协议和收发器性能,测试在25MHz时钟下进行。
表3:RS485 FSI over CAT5 性能实测
| CAT5线缆长度 (米) | FSI时钟频率 | 数据线数量 | 实测吞吐率 | 典型RX建立时间 (ns) | 典型RX保持时间 (ns) |
|---|---|---|---|---|---|
| 5 | 25 MHz | 1 | 50 Mbps | 8.0 | 8.8 |
| 10 | 25 MHz | 1 | 50 Mbps | 7.6 | 8.8 |
| 15 | 25 MHz | 1 | 50 Mbps | 8.2 | 8.6 |
数据解读与设计启示:
- 距离优势:RS485模式在15米电缆下依然保持了良好的时序余量(~8ns)。这证明了其在更长距离、更恶劣电磁环境下的适用性。对于车间内设备分散、布线较长的应用,RS485是比LVDS更可靠的选择。
- 速度与距离的权衡:RS485模式的最大稳定时钟为25MHz(单线50Mbps),约为LVDS模式(50MHz)的一半。这是RS485收发器本身和其差分信号摆率(Slew Rate)限制所致。设计时需要权衡:要速度(LVDS),还是要距离和抗干扰性(RS485)?
- 终端匹配:用户指南未强调,但对于RS485长距离通信至关重要。板载的RS485收发器可能已集成或预留了终端电阻配置。在实际长线应用时,务必根据电缆特性阻抗(通常120Ω)在链路两端配置正确的终端电阻,以避免信号反射。
波形分析参考:用户指南中图12展示了15米电缆下RS485的FSIRX时序波形。可以看到,尽管经过长电缆传输,时钟和数据信号的边沿依然清晰,建立和保持时间窗口充足。这为我们设计系统提供了直观的信心。
5. 高级应用与系统拓扑设计
FSI适配板的价值远不止于简单的点对点环回测试。它为我们搭建更复杂的多节点通信网络提供了硬件基础。TI的参考设计展示了FSI在构建分布式系统中的潜力。
5.1 利用板载跳线实现多种评估模式
除了标准的“隔离+LVDS/RS485”模式,通过巧妙配置跳线,这块板还能变身,实现另外两种有价值的评估场景:
模式一:纯隔离通信评估(无收发器)
- 应用场景:你的产品设计只需要跨越隔离栅传输单端CMOS信号(例如,通过光耦或数字隔离器),而不需要LVDS/RS485这样的差分长线驱动。你想单独评估FSI协议在隔离环境下的性能和可靠性。
- 硬件配置:
- 确保主控侧和次级侧供电正常(如3.1节所述)。
- 不要给J10(收发器电源)插跳线帽,让LVDS和RS485收发器断电。
- 找到板子中间区域的信号选择跳线(J11-J16)。使用短路帽,直接将每组跳线的“ISO”侧(来自隔离器)和“FSI”侧(去向J1/J2)的引脚短接。例如,对于TX_CLK(J11),将跳线帽插在标记为“ISO7763”和“FSI_TX_CLK”的两个引脚上,从而绕过收发器。
- 连接方式:此时,FSI信号经过隔离器后直接环回。你可以用杜邦线将次级侧的FSI TX信号直接连到RX信号,构成一个隔离环回测试。这种模式剥离了收发器的影响,让你能专注于评估隔离器和FSI协议本身的时序。
模式二:非隔离差分通信评估
- 应用场景:你想评估FSI在同一地平面下,通过LVDS或RS485进行板间通信的性能。例如,在大型背板或机箱内,多个板卡共地,但需要高速数据链接。
- 硬件配置:
- 只给次级侧供电!可以通过J8的Micro-USB接口供电,并将J7跳线设置为“USB_3V3”。绝对不要连接LaunchPad/controlCARD,或者确保其电源完全断开。这是为了避免通过MCU侧意外引入地环路。
- 根据需求,给J10跳线选择LVDS或RS485供电。
- 正确配置J11-J16信号选择跳线,将信号路由到对应的收发器。
- 关键一步:你需要用导线将次级侧的地(GND2)与你目标系统(另一块板卡)的地可靠连接起来,确保共地。
- 连接方式:用网线连接两块板卡的RJ45接口即可。这种模式下,隔离器实际上未被使用(因为两侧地已连接),你测试的是纯粹的“FSI + 差分收发器”链路的性能。
5.2 FSI接收端偏移补偿:应对信号延迟的利器
在高速通信中,时钟线(CLK)和数据线(D0/D1)由于布线长度差异、收发器或隔离器延迟不同,到达接收端MCU引脚时会产生微小的时序偏差(Skew)。这个偏差过大会导致采样错误。FSI外设一个非常实用的高级功能是内置可编程延迟线(Skew Compensation Block)。
- 原理:FSI的每个接收输入(RXCLK, RXD0, RXD1)都有一组独立的、可配置的延迟单元(见图15 Delay Line Control Circuit)。你可以通过寄存器为每个信号添加精细的延迟(每个Tap的延迟时间在芯片数据手册中给出),从而“对齐”所有信号在进入采样器之前的时刻。
- 如何使用:
- 校准需求:在系统硬件固定后(PCB布线完成,电缆连接好),应运行一次偏移校准程序。TI在C2000Ware中提供了相关示例(如
fsi_ex_delay_tap_measurement,fsi_ex_single_line_delay_select)。 - 校准过程:通常,发送端发送一个已知的、带边沿变化的测试模式。接收端程序遍历不同延迟单元的配置,寻找能正确采样到数据的“延迟窗口”。找到最优值后,将对应的延迟配置写入寄存器。
- 价值:这个功能极大地提高了系统的鲁棒性。它允许硬件设计有一定的灵活性,无需为了追求绝对的等长布线而牺牲布局,也能补偿不同批次器件或环境温度变化带来的延迟差异。
- 校准需求:在系统硬件固定后(PCB布线完成,电缆连接好),应运行一次偏移校准程序。TI在C2000Ware中提供了相关示例(如
5.3 构建多设备网络:菊花链与星型拓扑
FSI支持多节点通信,适配板是构建这些网络的原型利器。用户指南中提到了两种典型拓扑:
1. 菊花链拓扑
- 结构:设备A的TX连接到设备B的RX,设备B的TX连接到设备C的RX,依次串联,形成一个链。链首的设备是“主(Lead)”,链中的设备是“节点(Node)”。
- FSI适配板实现:每块适配板配置为“隔离+LVDS/RS485”模式。用网线将上一块板的TX(J18或J21)连接到下一块板的RX(J19或J20)。注意:对于LVDS,标准点对点驱动器不支持多点,需确保链中每个节点都是“接收-转发”的模式,或者使用支持多点的LVDS发送器。
- 软件配合:需要使用TI提供的
fsi_ex_daisy_handshake_lead/node示例工程。该工程实现了握手机制,确保数据能在链中可靠地逐级传递。
2. 星型拓扑
- 结构:一个中心主机(Host)的多个FSI TX端口,分别连接到多个从机(Slave)的RX端口。主机广播或轮询与各从机通信。
- FSI适配板实现:主机需要一块MCU有多个FSI TX模块(如F2838x有8个)。每个从机一块适配板。主机侧可能需要自定义连接,因为一块适配板通常只有一个TX通道。关键点:用户指南特别指出,在LVDS星型拓扑中,主机应使用支持多点(Multi-drop)的LVDS发送器,以便驱动多个接收端。
- 软件配合:使用
fsi_ex_star_broadcast示例工程。主机以广播方式向所有从机发送数据。
分布式多轴伺服系统示例:图18展示了一个完美的应用场景。一个主控MCU通过FSI菊花链,连接多个轴控制节点(每个节点包含一个C2000 MCU和电机驱动器)。FSI的高带宽和低延迟特性,非常适合同步多个电机的运动指令和反馈数据。TI的参考设计“Distributed multi-axis servo drive over fast serial interface (FSI)”提供了该系统的详细实现,是进行此类开发的绝佳起点。
6. 常见问题排查与实战经验分享
即使按照指南操作,在实际调试中也可能遇到各种问题。下面是我在项目中总结的一些常见故障点和解决方法。
6.1 硬件连接与供电问题排查
问题1:上电后,预期的LED指示灯不亮。
- D4不亮(主控侧无电):
- 检查LaunchPad/controlCARD是否正常供电并启动。
- 用万用表测量J5跳线中间引脚是否有3.3V。如果没有,检查J6跳线是否已短接(LaunchPad方案),或检查从controlCARD底板的3.3V是否正确跳线到J5。
- 检查J1/J2连接器是否插紧,接触不良会导致电源引脚断路。
- D5或D6不亮(收发器无电):
- 确认J10跳线已正确短接(LVDS或RS485)。
- 确认次级侧已供电。检查J7跳线:如果选择“ISO_3V3”,确保主控侧供电正常且D4已亮;如果选择“USB_3V3”,确保J8已插入USB线且D3(USB PWR)亮起。
- 测量LVDS或RS485收发器芯片的VCC引脚是否有3.3V。
问题2:软件运行无错误,但通信失败(errorCount持续增加)。
第一步:检查最基本的配置
- 确认跳线:反复核对J11-J16所有信号选择跳线帽,确保TX和RX信号都统一路由到了LVDS或RS485,不能混用。这是最常见的疏忽。
- 确认电缆连接:TX端口必须连接到对端的RX端口。用网线将本板的J18(LVDS TX)连接到对端板的J19(LVDS RX),反之亦然。RS485同理(J21->J20)。
- 确认软件宏定义:确保在工程中正确定义了
_LAUNCHXL_F28xxxxx(如果使用LaunchPad),并且EXTERNAL_FSI_ENABLE设置为1。
第二步:深入信号级排查
- 示波器是王道:如果条件允许,使用示波器测量。
- 测量点1:测量MCU的FSI TX引脚(在LaunchPad上找到对应测试点)。确认是否有50MHz(或25MHz)的时钟信号和随机的数据信号输出。如果没有,检查软件初始化代码,确认FSI外设时钟是否使能,GPIO是否正确复用。
- 测量点2:测量隔离器输出端(或跳线帽处)的信号。确认信号已通过隔离器,且幅度正常(3.3V CMOS电平)。
- 测量点3:测量RJ45接口处的差分信号。对于LVDS,你应该看到约350mV的差分摆幅。如果信号幅度很小或没有,检查收发器供电和使能引脚。
- 检查接地:尤其是在非隔离模式下,必须确保通信双方(两块板卡的GND2)有良好的共地连接。一个浮空的地会导致差分接收器无法正确判断信号。
- 示波器是王道:如果条件允许,使用示波器测量。
6.2 软件配置难点解析
问题:如何根据我的应用调整FSI数据帧结构?FSI不是简单的串口,它传输的是有结构的数据帧。在fsi_ex_loopback示例中,帧结构通常在fsi_common.h或类似文件中定义。一个典型的帧包括:
- 前导码:用于接收端时钟同步。
- 数据负载:你的有效数据。
- CRC字节:用于错误检测。
- 后导码:标志帧结束。 你需要根据MCU的TRM修改
FSI_FRAME_CONFIG寄存器设置,以匹配你的帧长度、数据位宽等。切记,发送端和接收端的帧配置必须完全一致。
问题:FSI中断和DMA如何配置以提高效率?对于高速持续数据传输,使用CPU轮询是低效的。应利用FSI的中断和DMA。
- 中断:可以配置FSI在发送完成、接收完成、或发生错误(如CRC错、前导码错)时产生中断。在中断服务程序中进行缓冲区管理。
- DMA:这是最推荐的方式。可以将FSI TX/RX的数据寄存器直接映射到DMA通道。这样,数据在内存和FSI外设之间的搬运完全由DMA完成,无需CPU干预,极大解放CPU资源。示例工程
fsi_ex_loopback_dmacontrol展示了如何配置。
6.3 性能优化与可靠性设计建议
PCB布局借鉴:FSI适配板本身就是一个优秀的参考设计。注意观察其布局:
- 电源去耦:在每个芯片的电源引脚附近,都放置了0402或0603封装的0.1uF陶瓷电容,用于滤除高频噪声。
- 差分走线:LVDS和RS485的差分对走线(从收发器到RJ45)保持了等长、等距,并尽可能减少了过孔,这对保持信号完整性至关重要。
- 隔离栅清晰:板上的隔离带(Isolation Barrier)清晰可见,GND1和GND2的铺铜区域被严格分开,避免了爬电距离不足的风险。在你的设计中,务必遵守相关安规距离要求。
电缆与连接器选择:
- 对于LVDS高速通信,尽量使用屏蔽CAT5e/CAT6网线,并将屏蔽层在连接器处良好接地(连接到GND2)。
- RJ45连接器建议选择带金属外壳的型号,以提供额外的屏蔽和固定强度。
上电顺序与热插拔:
- 虽然FSI收发器和隔离器通常支持热插拔,但为稳妥起见,建议在系统设计时遵循固定的上电/下电顺序。
- 避免在通信过程中带电插拔网线,这可能会产生较大的ESD冲击。板载的ESD保护二极管(如TVS管)提供了一定保护,但仍需小心。
通过这篇指南,我希望你不仅学会了如何操作FSI适配板,更理解了其每个设计细节背后的考量。从硬件跳线配置到软件驱动,从性能测试到系统拓扑,这块小小的评估板是通往构建高性能、高可靠性工业通信系统的坚实桥梁。剩下的,就是发挥你的创意,将它应用到你的下一个创新项目中了。如果在实践中遇到新的问题,不妨回头再看看板子的原理图和芯片数据手册,往往能找到最根本的答案。