TI SimpleLink Wi-Fi STA/AP模式深度配置与实战优化指南

发布时间:2026/7/25 11:29:48
TI SimpleLink Wi-Fi STA/AP模式深度配置与实战优化指南 1. 项目概述与核心价值在嵌入式物联网项目里让设备“上网”是第一步也是最关键的一步。无论是智能家居中的传感器需要将数据上报到云端还是一个临时的配置热点让手机可以快速配网其底层都离不开Wi-Fi模块的两种基本工作模式STA站点模式和AP接入点模式。我过去在多个基于TI SimpleLink平台如CC3220、CC3235的项目中深刻体会到仅仅让设备连上网是远远不够的如何让它连得快、连得稳、功耗低才是真正考验开发者功力的地方。SimpleLink Wi-Fi SDK提供了一套非常灵活的API允许我们对这两种模式进行深度定制。这不仅仅是设置一个SSID和密码那么简单它涉及到从射频参数如发射功率、国家码、连接行为逻辑如自动连接策略到高级的网络维护功能如基于信号强度的漫游等一系列配置。理解并合理运用这些配置意味着你能让设备在复杂的无线环境中保持最佳状态避免那些“时好时坏”、“偶尔掉线”的玄学问题。例如在电池供电的传感器中你可能需要精细控制扫描行为和发射功率以节省每一毫安时的电量而在需要快速恢复连接的工业网关中你又需要利用“Fast”连接策略来跳过耗时的扫描过程。本文将以TI SimpleLink Wi-Fi为例深入拆解STA和AP模式的配置精髓。我不会只停留在API用法的罗列上而是会结合我实际踩过的坑和调试经验告诉你每个参数背后的设计逻辑、不同配置组合会产生什么影响以及在实际项目中如何权衡和选择。无论你是刚开始接触嵌入式Wi-Fi还是希望优化现有设备的网络性能相信这些从实战中总结出的细节都能给你带来直接的帮助。2. STA模式深度配置与连接策略STA模式即站点模式是设备作为客户端去连接外部无线网络如家庭路由器的模式。这是物联网设备最常用、也最复杂的工作模式。2.1 模式设置与基础参数调优默认情况下SimpleLink设备上电后的初始角色并非STA模式。你需要主动调用sl_WlanSetMode(ROLE_STA)来设置并且这个操作会触发设备重启。这是一个需要特别注意的“坑”模式切换不是一个轻量级的软件配置而是一个涉及底层驱动和网络协议栈重新初始化的硬操作。因此在你的应用初始化流程中应该尽早且一次性地确定设备的工作模式避免在运行时频繁切换。_i16 Status; _i16 Role; /* 设置设备为STA模式 */ Status sl_WlanSetMode(ROLE_STA); if (Status ! 0) { // 处理错误可能是内存不足或内部状态错误 } /* 设置模式后必须重启设备 */ Status sl_Stop(0); // 停止网络服务参数0表示阻塞式等待停止完成 Role sl_Start(NULL, NULL, NULL); // 重启并获取当前角色 if (Role ! ROLE_STA) { // 角色设置失败需要检查启动流程或镜像配置 }实操心得务必在sl_Start()之后检查返回的角色值。我曾遇到过因为NVM非易失性存储器中残留的配置导致角色设置不生效的情况这时需要检查是否在之前的开发中设置了持久化配置。设备进入STA模式后会加载一套默认参数。虽然可以直接使用但为了最佳性能我们通常需要根据实际场景进行调整。1. 发射功率TX Power 这个参数直接决定了设备的信号覆盖范围和功耗。值从0到15代表从最大功率开始的衰减步进0为最大功率。在TI的文档中你会看到一张输出功率与设置值的对应曲线图。_u8 StaPower 3; // 例如设置为3代表相对于最大功率有一个衰减 Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_OPT_STA_TX_POWER, 1, (_u8 *)StaPower);注意发射功率调整仅对2.4GHz频段生效。如果你的设备同时支持5GHz如CC3235在5GHz频段上的功率策略是固件内部管理的。降低功率可以显著减少功耗尤其适合电池设备但会缩小有效连接范围。我的经验是在室内环境将功率设置为3或4即衰减几dBm通常能在功耗和信号强度间取得很好的平衡且对连接稳定性影响微乎其微。2. 国家码Country Code 这绝不是一个简单的地区标识。它决定了设备可以扫描和使用的无线信道集合直接关系到产品的合规性。例如“US”码允许使用信道1-11“EU”码允许1-13“JP”码也是1-13。如果你的产品销往全球必须在启动时根据销售地动态设置此参数或者使用一个兼容性最广的默认设置如“EU”并确保硬件射频认证覆盖这些信道。_u8 countryCode[] “US”; Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_OPT_COUNTRY_CODE, strlen((char*)countryCode), countryCode);3. 5GHz信道开关 对于CC3135/CC3235等支持5GHz的设备你可以选择禁用5GHz扫描。默认是开启的这会让扫描过程变长因为要扫更多信道功耗也略高。如果你的目标网络全是2.4GHz果断关掉它。_u8 disable5G 1; // 1: 启用 0: 禁用。这里设为0以禁用 Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_OPT_ENABLE_5G, 1, (_u8 *)disable5G);4. PS-Poll模式 这是省电策略中的一个细节。STA设备在休眠时数据帧由AP暂存。唤醒后标准做法是STA发送一个PS-Poll控制帧来“索取”这些缓存帧。但有些非标准的AP可能对PS-Poll支持不好。如果你的设备在某些特定AP下出现数据收发异常可以尝试启用“No PS-Poll”模式让设备通过发送空数据帧来宣告激活以此兼容有问题的AP。SlWlanNoPSPollMode_t noPsPollMode; noPsPollMode.Enable 1; // 启用 No PS-Poll 模式 Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_OPT_NO_PS_POLL_MODE, sizeof(SlWlanNoPSPollMode_t), (_u8 *)noPsPollMode);2.2 连接策略智能联网的核心逻辑SimpleLink提供了四种连接策略它们定义了设备在启动、断线后如何尝试连接网络。策略通过一个宏SL_WLAN_CONNECTION_POLICY(Auto, Fast, AnyP2P, AutoProv)来组合设置每个参数为0或1。1. Auto自动连接 这是最常用的策略。设备会扫描环境并尝试连接存储在“偏好网络”Profile列表中的网络。关键在于优先级Priority。你可以存储最多7个网络配置Profile每个都有1-7的优先级7最高。设备会先尝试连接优先级最高的网络。如果优先级相同则按安全类型排序WPA3 WPA2PMF WPA/WPA2 WEP OPEN安全等级越高越优先。如果连安全类型都一样最后才看信号强度RSSI。2. Fast快速连接 这个策略旨在实现“秒连”。设备会尝试连接上一次成功连接的那个AP并且跳过扫描和探测请求Probe Request直接发送认证请求因为SSID和信道都是已知的。这能极大缩短连接时间。与Auto结合Auto Fast这是最常见的组合。设备先尝试“Fast”连接上次的AP。如果失败比如AP关机了则回退到“Auto”模式开始按优先级扫描Profile列表。单独使用Fast如果Fast连接失败设备就停止了不会尝试其他网络。这适用于对特定AP有强依赖的场景。3. Auto Provisioning自动配网 这个功能非常有用。如果设备启动后2秒内没有收到任何主机命令且没有保存任何网络Profile它会自动开启配网模式如SmartConfig或AP配网。另一种情况是如果设备已保存Profile但连续2分钟无法连接任何网络它也会自动开启配网让用户有机会配置新网络。策略设置示例与持久化 连接策略可以设置为持久化掉电保存或非持久化仅本次运行有效。_i16 Status; // 设置持久化策略Auto Fast Auto Provisioning Status sl_WlanPolicySet(SL_WLAN_POLICY_CONNECTION, SL_WLAN_CONNECTION_POLICY(1, 1, 0, 1), NULL, 0); // 设置非持久化策略仅Auto uint32_t flags 0; flags | SL_WLAN_CONN_POLICY_NON_PERSISTENT_FLAG; Status sl_WlanPolicySet(SL_WLAN_POLICY_CONNECTION, SL_WLAN_CONNECTION_POLICY(1, 0, 0, 0), flags, sizeof(flags));踩坑记录关于“Fast”策略有一个大坑。如果上一次连接是使用WPA2-PMF或WPA3安全协议正常断开的即调用了sl_Stop并等待超时那么Fast重连可以成功。因为AP期待收到一个加密的解除认证帧。但如果设备是突然断电没有调用sl_Stop那么下次Fast连接时AP可能会拒绝关联导致连接失败。在这种情况下设备会依赖组合策略中的“Auto”部分去重新扫描并连接。因此在产品设计中确保设备有执行正常关机流程的机会如电容维持几毫秒供电非常重要。2.3 偏好网络Profile管理Profile是设备记住的无线网络配置。管理好Profile列表是实现智能、自动连接的基础。添加一个WPA2网络Profile_u8 bssid[] {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}; // 可选指定具体AP的MAC地址 SlWlanSecParams_t secParams; _i16 profileIndex; secParams.Type SL_WLAN_SEC_TYPE_WPA_WPA2; secParams.Key “MySecurePassword123”; secParams.KeyLen strlen(secParams.Key); // 添加Profile优先级设为5范围1-7 profileIndex sl_WlanProfileAdd(“MyHomeWiFi”, strlen(“MyHomeWiFi”), bssid, // 如果为NULL则连接任何同名SSID的AP secParams, NULL, // 企业级安全参数普通网络填NULL 5, // 优先级 0); // 标志位通常为0 if (profileIndex 0) { // 添加失败错误码可能是SL_ERROR_WLAN_PREFERRED_NETWORK_LIST_FULL列表已满 }Profile的“隐身”与“复活” 除了删除你还可以临时“挂起”一个Profile。这在你想让设备暂时忽略某个已知但信号不好的网络时很有用。挂起状态在设备重启后会失效。_u32 suspendMask 0; // 假设我们想挂起索引为1和3的Profile索引从0开始 suspendMask | (1 1); // INDEX1 suspendMask | (1 3); // INDEX3 Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_OPT_SUSPEND_PROFILES, sizeof(suspendMask), (_u8*)suspendMask);更新Profile优先级 这是动态优化连接顺序的关键。例如当设备移动到办公室你可以将办公室Wi-Fi的Profile优先级调高。SlWlanSecParams_t secParams; _u32 newPriority 7; // 最高优先级 _u32 indexToUpdate 2; // 要更新的Profile索引 // 对于不需要更新的字段使用SL_WLAN_DONT_UPDATE secParams.Key “”; secParams.KeyLen 0; secParams.Type SL_WLAN_DONT_UPDATE; Status sl_WlanProfileUpdate(indexToUpdate, NULL, 0, // 不更新SSID NULL, // 不更新BSSID secParams, NULL, // 不更新扩展安全参数 newPriority);2.4 手动连接与事件处理除了自动策略你也可以随时发起一次手动连接。这在需要强制切换到特定网络时非常有用。手动连接的优先级高于任何自动连接过程。SlWlanSecParams_t secParams; secParams.Type SL_WLAN_SEC_TYPE_WPA_WPA2; secParams.Key “GuestPassword”; secParams.KeyLen strlen(secParams.Key); Status sl_WlanConnect(“Guest-WiFi”, strlen(“Guest-WiFi”), NULL, // BSSID填NULL表示连接任意同名AP secParams, 0); // 保留参数填0 // sl_WlanConnect会立即返回连接结果通过异步事件通知连接状态的事件驱动 所有Wi-Fi事件连接成功、断开、扫描完成等都是通过异步事件回调通知应用的。你必须在应用层实现并注册这个事件处理函数。// 在 user.h 或类似文件中注册事件处理函数 #define SL_DEVICE_EVENT (_u32)(1 0) #define SL_WLAN_EVENT (_u32)(1 1) ... sl_EventMask SL_DEVICE_EVENT | SL_WLAN_EVENT; sl_IfRegIntHdlr(SimpleLinkNetAppRequestHandler, SimpleLinkWlanEventHandler, ...); // 实现WLAN事件处理函数 void SimpleLinkWlanEventHandler(SlWlanEvent_t *pSlWlanEvent) { switch (pSlWlanEvent-Event) { case SL_WLAN_EVENT_CONNECT: // 连接成功 printf(“[WLAN] Connected to SSID: %.*s, BSSID: %02x:%02x:%02x:%02x:%02x:%02x, Channel: %d\n”, pSlWlanEvent-EventData.Connect.SsidLen, pSlWlanEvent-EventData.Connect.SsidName, pSlWlanEvent-EventData.Connect.Bssid[0], pSlWlanEvent-EventData.Connect.Bssid[1], // ... 打印其余BSSID字节 pSlWlanEvent-EventData.Connect.Channel); // 可以在这里启动网络应用如Socket通信 break; case SL_WLAN_EVENT_DISCONNECT: // 连接断开 printf(“[WLAN] Disconnected. Reason: %d\n”, pSlWlanEvent-EventData.Disconnect.ReasonCode); // 根据断开原因决定重连策略 break; // ... 处理其他事件 } }常见错误码解析 当API调用返回错误时以下是一些需要特别关注的错误码及其含义错误码宏定义值含义与常见原因SL_ERROR_WLAN_PREFERRED_NETWORK_LIST_FULL-2062Profile列表已满最多7个。需要先删除不用的Profile。SL_ERROR_WLAN_KEY_ERROR-2049安全参数或SSID错误。检查密码长度、格式如WEP要求HEX或特定ASCII长度、SSID长度是否超限。SL_ERROR_WLAN_GET_NETWORK_LIST_EAGAIN-2073请求网络扫描列表时扫描未启用或未完成。需要先触发扫描稍后再获取结果。SL_ERROR_WLAN_WIFI_ALREADY_DISCONNECTED-2071在已经断开连接的状态下再次调用断开连接命令。3. 高级功能RSSI触发与智能漫游对于需要移动或在信号复杂环境中工作的设备仅仅建立连接是不够的维持高质量、稳定的连接更为重要。SimpleLink提供了基于RSSI接收信号强度指示的智能触发和漫游机制。3.1 RSSI触发主动感知链路质量RSSI触发允许你设置一个信号强度阈值。当链路质量以RSSI衡量变化并跨越这个阈值时设备会向主机发送一个异步事件。你可以利用这个事件来提前预警连接质量下降或者触发一些应用层行为如降低数据上报频率、本地缓存数据等。其配置属性较为丰富不同型号CC3x20 vs CC3x35支持度不同属性描述CC3x20CC3x35取值说明Threshold触发事件的RSSI阈值支持支持单位dBm范围-100 到 100Pacing连续事件间的最小延迟支持支持单位毫秒防止事件风暴Metric质量度量方式固定为0支持0: 信标RSSI1: 数据包RSSIType触发类型固定为0支持0: 电平型每次跨越都触发1: 边沿型仅触发一次Direction触发方向固定为0支持0: 低于阈值1: 高于阈值2: 双向Hysteresis迟滞支持支持单位dB防止在阈值附近抖动触发TriggerId触发器索引固定为0支持0: 主机用RSSI触发器1: 软漫游触发器Enable使能开关支持支持0: 禁用1: 启用配置示例设置一个当RSSI低于-75dBm时触发的事件并带有3dB的迟滞防止信号在-75dBm附近波动时频繁触发。SlWlanRegisterLinkQualityEvents_t rssiTrigger; rssiTrigger.Enable 1; rssiTrigger.TriggerId 0; // 给主机应用使用的触发器 rssiTrigger.Metric SL_WLAN_METRIC_EVENT_RSSI_BEACON; rssiTrigger.Direction SL_WLAN_RSSI_EVENT_DIR_LOW; // 低于阈值时触发 rssiTrigger.Threshold -75; // 阈值 -75dBm rssiTrigger.Hysteresis 3; // 迟滞 3dB即RSSI降到-78dBm才触发升回-72dBm才解除 rssiTrigger.Type SL_WLAN_RX_QUALITY_EVENT_EDGE; // 边沿触发仅一次 rssiTrigger.Pacing 0; // 不限制事件间隔 Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_REGISTER_LINK_QUALITY_EVENT, sizeof(SlWlanRegisterLinkQualityEvents_t), (_u8 *)rssiTrigger);在事件处理函数中你需要增加对SL_WLAN_RX_QUALITY_EVENT_ID事件的处理从中解析出当前的RSSI值。3.2 软漫游Soft-Roaming无缝切换更优网络软漫游功能是RSSI触发的一个高级应用。当设备检测到当前连接的AP信号变弱低于设定阈值而环境中存在同一个网络内相同SSID信号更强的AP时会自动断开当前连接并连接到更好的那个AP。这对于在大型商场、工厂等部署了多个AP的环境下保持设备移动时的连接稳定性至关重要。实现原理软漫游使用了索引为1的RSSI触发器TriggerId 1。当触发条件满足时设备会在后台扫描寻找相同SSID的、信号更强的AP。关键配置与注意事项与Fast策略冲突软漫游功能仅在Fast连接策略被禁用时才有效。因为Fast策略试图固定连接上一个AP这与漫游的目标相悖。阈值设置官方建议阈值设为-75dBm左右。因为当RSSI低至-85dBm左右时设备可能已经要断开了-75dBm给了漫游足够的反应时间。扫描间隔通过Type和Pacing配合控制。如果Type设为LEVEL那么每当条件满足时都会以Pacing定义的间隔周期性地执行后台扫描直到找到更优AP或条件不再满足。如果设为EDGE则只触发一次扫描。SlWlanRegisterLinkQualityEvents_t softRoamingConfig; softRoamingConfig.Enable 1; softRoamingConfig.TriggerId 1; // **关键必须为1表示软漫游触发器** softRoamingConfig.Metric SL_WLAN_METRIC_EVENT_RSSI_BEACON; softRoamingConfig.Direction SL_WLAN_RSSI_EVENT_DIR_LOW; softRoamingConfig.Threshold -75; softRoamingConfig.Hysteresis 3; softRoamingConfig.Type SL_WLAN_RX_QUALITY_EVENT_LEVEL; // 电平型持续监测 softRoamingConfig.Pacing 15000; // 每15秒扫描一次如果条件持续满足 Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_REGISTER_LINK_QUALITY_EVENT, sizeof(SlWlanRegisterLinkQualityEvents_t), (_u8 *)softRoamingConfig);3.3 触发式漫游与敏捷多频段这是两种更先进的漫游技术需要AP端的配合。触发式漫游Triggered Roaming 可以看作是软漫游的增强版。它同样基于RSSI触发但选择目标AP的机制更智能邻居列表优先如果当前服务的AP向设备发送了“邻居AP列表”设备只会在该列表中的AP里选择信号更强的进行漫游。这减少了盲目扫描速度更快且由网络控制器如企业级AC智能决策。同SSID扫描如果没有邻居列表则退化为软漫游行为扫描相同SSID的AP。敏捷多频段Agile Multiband 这依赖于802.11k/v协议。当设备启用此功能且连接的AP支持时AP可以主动请求设备漫游到网络中的另一个AP可能是不同频段如从2.4G切换到5G以实现网络负载均衡和整体稳定性优化。这是一个完全由AP主导的漫游过程。启用示例// 启用触发式漫游 SlWlanNetworkAssistedRoaming_t triggeredRoaming; triggeredRoaming.Enable 1; triggeredRoaming.rssiThreshold -63; // 触发阈值 sl_WlanSet(SL_WLAN_STA_NETWORK_ASSISTED_ROAMING, SL_WLAN_ROAMING_TRIGGERING_ENABLE, sizeof(SlWlanNetworkAssistedRoaming_t), (_u8 *)triggeredRoaming); // 启用敏捷多频段网络辅助漫游 SlWlanNetworkAssistedRoaming_t assistedRoaming; assistedRoaming.Enable 1; sl_WlanSet(SL_WLAN_STA_NETWORK_ASSISTED_ROAMING, SL_WLAN_AP_TRANSITION_ENABLE, sizeof(SlWlanNetworkAssistedRoaming_t), (_u8 *)assistedRoaming);重要提示触发式漫游和敏捷多频段功能并非所有SimpleLink型号都支持。通常CC3135/CC3235等较新的型号才支持。在选用功能前务必查阅你所使用芯片的具体数据手册和SDK版本说明。4. AP模式配置详解与实战AP模式让设备自身成为一个无线热点。这在设备初次配网SmartConfig、作为局域网数据汇聚点或创建临时点对点网络时非常有用。SimpleLink设备在AP模式下默认最多支持4个STA连接。4.1 AP模式基础配置与STA模式类似首先需要设置模式。AP模式是设备上电后的默认初始模式。如果你之前切换到过STA模式需要再切回来。_i16 Status; _i16 Role; Status sl_WlanSetMode(ROLE_AP); if (Status ! 0) { /* 处理错误 */ } Status sl_Stop(0); Role sl_Start(NULL, NULL, NULL); if (Role ! ROLE_AP) { /* 角色错误 */ }AP模式有一系列可配置参数大部分需要在设置后重启生效。1. SSID与隐藏SSID 默认SSID是mysimplelink-xxyyzz后六位为MAC地址。你可以自定义一个更友好的名字。隐藏SSID可以不广播网络名称增加一点隐蔽性但会增加STA连接的复杂度需要手动输入SSID。_u8 ssid[] “MyDevice_AP”; _u8 isHidden 1; // 1: 隐藏 0: 广播默认 sl_WlanSet(SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_SSID, strlen((char*)ssid), ssid); sl_WlanSet(SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_HIDDEN_SSID, 1, isHidden);2. 信道与安全 信道需符合国家码规定。安全类型支持OPEN、WEP、WPA/WPA2。强烈建议至少使用WPA2。OPEN模式在配网场景下可用但配网完成后应尽快关闭或切换到安全模式。_u8 channel 11; // 选择一个干扰较小的信道如1, 6, 11 _u8 securityType SL_WLAN_SEC_TYPE_WPA_WPA2; _u8 password[] “AP_Password123”; sl_WlanSet(SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_CHANNEL, 1, channel); sl_WlanSet(SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_SECURITY_TYPE, 1, securityType); sl_WlanSet(SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_PASSWORD, strlen((char*)password), password);3. 连接管理与功耗 你可以限制最大连接数并设置STA老化时间。如果一个连接的STA在设定的老化时间内没有任何数据交互AP会将其踢下线以释放资源。_u8 maxStations 2; // 最多允许2个设备连接 _u16 staAgingTime 120; // STA无活动120秒后断开 sl_WlanSet(SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_MAX_STATIONS, 1, maxStations); sl_WlanSet(SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_MAX_STA_AGING, 2, (_u8*)staAgingTime); // 注意参数长度是2字节4.2 AP模式下的网络服务与信息元素SimpleLink设备在AP模式下默认开启了几项重要的网络服务这使得它不仅仅是一个简单的热点DHCP服务器自动为连接的STA分配IP地址默认网段10.123.45.x。HTTP服务器用于内部网页配置界面例如通过http://10.123.45.1访问。mDNS响应器设备可以响应mysimplelink-xxyyzz.local这样的域名查询。DNS服务器/中继处理DNS请求。这些服务在大多数情况下是自动运行的你无需额外配置。但了解它们的存在有助于你理解为什么手机连上设备热点后能自动获取IP并可能弹出配置页面。自定义信息元素Info Elements 这是一个高级功能允许你在AP发出的信标帧Beacon或探测响应帧中加入自定义的数据块。这常用于厂商特定的功能比如传递设备的型号、版本号或其他自定义信息方便周围的专用STA识别。SlWlanSetInfoElement_t infoElem; _u8 customData[] {0x01, 0x02, 0x03, 0x04}; // 你的自定义数据 infoElem.Index 0; // 使用第一个IE索引0-3 infoElem.Role SL_WLAN_INFO_ELEMENT_AP_ROLE; // 用于AP模式 infoElem.IE.Id SL_WLAN_INFO_ELEMENT_DEFAULT_ID; // ID设为221厂商自定义 infoElem.IE.Oui[0] 0x00; // 组织唯一标识符 (OUI)全0则使用TI默认OUI infoElem.IE.Oui[1] 0x00; infoElem.IE.Oui[2] 0x00; memcpy(infoElem.IE.Data, customData, sizeof(customData)); infoElem.IE.Length sizeof(customData); Status sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_OPT_SET_INFO_ELEMENT, sizeof(SlWlanSetInfoElement_t), (_u8 *)infoElem);要删除一个信息元素只需将对应索引的IE长度Length设置为0再次调用即可。5. 混合模式与实战场景策略在实际项目中设备的工作模式并非一成不变。一个经典的用例是配网流程设备上电后首先处于AP模式创建一个配置热点手机连接此热点后通过HTTP服务器或Socket发送目标家庭Wi-Fi的SSID和密码设备获取凭证后切换为STA模式去连接家庭路由器并关闭自己的AP。模式切换的挑战 模式切换sl_WlanSetMode伴随着设备重启这会中断所有现有网络连接。因此在设计中需要处理好状态保存和恢复。通常的流程是在AP模式下完成配网将获取到的Wi-Fi凭证保存到NVM非易失性存储器的Profile中。调用sl_WlanSetMode(ROLE_STA)并重启。设备重启后以STA模式启动利用“Auto”或“FastAuto”策略自动连接家庭网络。连接成功后关闭配网相关的服务如内部HTTP服务器进入主业务逻辑。连接策略组合推荐 根据不同的产品需求我通常会采用以下几种策略组合智能家居传感器电池供电需稳定长连策略AutoAuto Provisioning理由Auto用于连接已知网络。Auto Provisioning确保在无法连接任何已知网络2分钟后自动打开配网给用户补救机会。不启用Fast因为传感器可能被移动到不同位置固定连接上次AP可能导致无法联网。附加配置适当降低TX Power延长扫描间隔通过连接策略外的参数配置禁用5GHz以省电。工业固定网关有线供电要求快速恢复策略AutoFast理由设备位置和网络环境固定。Fast策略能实现毫秒级重连极大提高网络故障恢复速度。Auto作为Fast失败后的保障。附加配置启用软漫游如果部署了多个AP设置合理的RSSI阈值。启用触发式漫游或敏捷多频段如果网络环境支持。需要频繁配网的消费类设备如智能灯初始策略仅Auto Provisioning(或默认AP模式)配网后策略通过代码动态切换为AutoFast理由首次启动时无ProfileAuto Provisioning能快速进入配网状态。配网成功后写入Profile并动态设置AutoFast策略实现后续快速连接。调试与问题排查实录设备无法保存Profile现象调用sl_WlanProfileAdd成功但重启后Profile丢失。排查检查NVM存储空间是否已满。确认在调用sl_WlanProfileAdd后是否有调用sl_WlanPolicySet设置持久化策略Profile本身是持久化的但连接策略的持久化是独立的配置。STA模式扫描不到任何网络现象手动连接或自动连接失败日志显示扫描结果为空。排查首先检查国家码设置是否正确。如果设为“US”在信道12/13的AP将不会被扫描到。检查天线连接是否可靠。使用频谱分析仪或手机Wi-Fi扫描工具确认环境中确实存在目标AP且信号正常。尝试在代码中强制进行一次扫描并打印结果确认是硬件问题还是配置问题。AP模式手机搜不到热点现象设备设置为AP模式但手机Wi-Fi列表里看不到。排查确认sl_WlanSetMode(ROLE_AP)和sl_Start成功并且返回的角色是ROLE_AP。检查是否误开启了“隐藏SSID”功能。检查信道设置是否合法。某些国家的手机可能无法扫描到非常用信道。AP模式默认IP是10.123.45.1可以尝试让手机手动设置IP到同一网段然后Ping一下看链路层是否其实已连通。软漫游不生效现象设备信号很弱也不切换AP。排查首要检查是否启用了Fast连接策略两者冲突必须禁用Fast。检查RSSI阈值是否设置得太低如-85dBm可能未达到触发条件。确认环境中是否存在相同SSID且信号更强的AP。漫游只在同SSID网络内进行。检查设备型号是否支持此功能CC3x35系列支持。通过对STA和AP模式的深入配置以及对连接策略、漫游等高级功能的灵活运用你可以让基于SimpleLink Wi-Fi的嵌入式设备在各种复杂网络环境中游刃有余。记住没有一套配置是放之四海而皆准的最好的配置源于对应用场景的深刻理解和对无线网络特性的持续测试与调优。