This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3235MODS:CC3235MOD 收发器模式

Guru**** 2382480 points
Other Parts Discussed in Thread: CC3235MODS
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1081828/cc3235mods-cc3235mod-transceiver-mode

部件号:CC3235MODS

由于本论坛的宝贵评论,我目前处于最后阶段,但仍有一些问题。

我正在收发器模式下使用 cc3235MODS 模块进行 L2级别 N:N 通信。
我有三个问题:

当我使用 SL_Send()函数向 NWP 发送数据包时,
数据包不会立即发出。 它似乎在等待下一个数据包开始传输。

或者,接收者保留收到的数据包,不会立即上载。
我的应用程序是工厂自动化,因此我需要立即传输。
如何解决此问题?

其次,当我接收到其他设备以收发器模式发送的10个数据包时,
最后一个数据包没有出现在应用程序中,似乎由 NWP 保留,SL_Recv()返回
当我发送长数据包或 NWP 收到一些垃圾数据时,最后一个问题是。
如何立即收到数据包? (这可能与第一个问题相同。)

第三个问题,例如,当我发送一个100字节的数据包时,当我检查时,在对等端
SL_Recv()返回的字节数,似乎为15xx 字节,这是一种正常的 TCP 套接字大小。
NWP 似乎在传输前对虚拟字节进行缓冲,以形成15xx 字节,或等待其它数据包
制作15xx 字节的 TCP 数据包,该数据包在文档中不明确。
NWP 能否在从应用处理器接收数据时不加填充地发送数据?

我的应用是在非常紧的条件下最大程度地提高通信成功率,因此我希望这样做
这是唯一一个需要在空中发送以提高性能的有意义的数据。

任何评论都将受到高度赞赏。

J.Y. 金

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这条线被分配给了我们的一位专家。 请期待下周初回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    如何打开插座? 我假设使用 AF_RF,但这种类型又如何?

    SL_Socket (SL_AF_RF,SL_Sock_RAW 或 SL_Sock_DGRAM?  

    通常, 原始套接字面向数据报(数据包边界),与 UDP 非常相似,而不是 TCP。 因此,我希望每次调用 SL_Recv()时都能得到一个数据包。

    它的工作方式是,每次调用 SL_Recv()都会从 NWP 中获取数据包(如果已经存在)。 请注意,如果您没有配置任何过滤器,设备将处于混杂模式,这意味着它会将每个数据包当作嗅探器来获取。

    同样,不应该有任何填充,如果调用大小为15xx 的,则应该得到数据包大小。

    请告诉我您如何打开传输端和接收端的插座。

    什洛米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨,什洛米·伊扎克,

    非常感谢各位的评论,

    打开插槽时:
    i324=32SL_Socket (SL AF_RF,SL_Sock_DGRAM,rfchannel);

    当我发送应用程序框架时,
    NumOfBytes =SL_Send (,buff,sizeof (buff),SL WLAN_raw_RF_TX_Params (rfchannel,rfate,rftxpower,rfforests));

    当我收到
    NumOfBytes = SL_Recv (,buf2,1536,0);
    使用以下选项:
    状态= SL_SetSockOpt(SO,SL_SOL_PHY_OPT,SL_PHY_RATE,&rfrate,sizeof(rfrate));
    状态= SL_SetSockOpt(SO,SL_SOL_PHY_OPT,SL_PHY_前导 码,&rf탲 퇔,sizeof(rf탲 퇔));
    状态= SL_SetSockOpt (,SL_SOL_Socket,SL_SO_NONblocking,(_u8*)启用选项,大小(enableOption));

    我还使用 Rx 筛选器筛选出我不想获取的 MAC 地址。

    期待您的光临。

    J.Y. 金

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我是在一段时间前测试的,从我所记得的情况来看,每次我调用带有全1500字节缓冲区的 SL_Recv()(假设我不知道我期望的大小),我总是得到正确的大小。 没有任何类型或部分数据包的填充。

    您到底过滤了什么?

    您是否有可能收到您认为已过滤掉但已将其发送到主机的数据包?

    您使用的是什么服务工具?

    什洛米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    至于过滤,我使用:
    Rule.CompareFunc = SL_WLAN_RX_FILTER_CMP_FUNC_NOT_EQUAL_T;
    rule.Field = SL_WLAN_RX_FILTER_HFIELD_MAC_DST_ADDR;
    action.Type = SL_WLAN_RX_filter_action_drop;


    我可能会放弃这种过滤,因为似乎没有明显的改进

    当我调用 SL_Recv()并显示为“无解析”时,有时我得到了一个数据流
    未被任何对等方发送。 我的目的是筛选出这些无效数据包。

    对于 SDK,我使用的是 simplelink_cc32xx_sdk_5_20_00_06

    根据您之前的备注,
    如果我选择 SL_Sock_raw 而不是 SL_Sock_DGRAM,并且没有 Rx 筛选,
    那么您认为 NWP 不会保存数据和处理传输吗?

    J.Y. 金

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    插座在您一侧打开正常。 请勿使用原始插座,因为唯一的区别是设备不尊重原始空气,这意味着设备在进入空气之前不会尊重其他客户端(因此,碰撞概率很高)。

    如果您说筛选器似乎不起作用,这可能会解释您获得的数据。

    您能否发布有关如何实施筛选器的代码片段?

    什洛米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,什洛米,

    发件人始终发送1536字节的问题已解决。  

    //NumOfBytes = SL_Send (i32bux,sizeof)(bux,SL_WLAN_raw_RF_TX_Params (rfchannel,rfrate,rftxpower,rfforests));
    NumOfBytes = SL_Send (jrf_buer, TT1, SL_WLAN_raw _TX_Params);/y 2022.3.9

    我使用了缓冲区大小为1536的示例代码。 当我使用实际大小 TT1时,此问题已得到解决。  

    但是,我在接收器方面遇到了问题。 NWP 不会立即上传收到的数据。

    我还使用示例代码:

    NumOfBytes = SL_Recv (,buf2,1536,0);

    如果我将1536更改为更小的数字,这是否有助于解决问题?  

    BRS,

    J.Y.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    是的,在发送端,您需要准确发送缓冲区中的数据量,否则您会收到一些剩余数据。

    在接收端,您可以在缓冲区中读取最大1536,并且只能获得发送的大小。 因此,如果您减小 RX 端的尺寸,这对您的问题没有帮助。

    如果不立即获取数据,您的意思到底是什么? 您能详细说明吗?

    您只能得到部分数据包吗? 连接两个数据包? 数据包是否正常,但有延迟?

    什洛米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,什洛米,

    例如,当我向对等设备发送5个应用程序数据帧或数据包时,  

    对等设备只立即上传4个数据包,最后一个数据包将在以后上传

    也可以

    1.收到垃圾数据后,垃圾数据和最后一个数据依次出现。

    2.当接收器的主机下载数据帧进行传输时。

    换句话说,当我向 对等设备发送单个数据包时,对等设备不会立即上载收到的数据包。

    收到 数据包后,我需要 NWP 立即回复 SL Recv(i32_032),buf2,1536,00函数。  

    是的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我不认为我有这样的行为。

    因此,如果您进入接收方无法接收数据包的状态,然后从传输端再次发送单个数据包,那么您是否会收到上一个数据包,并被新的数据包卡住?

    您是否在阻塞模式插座中工作?

    此致,

    什洛米

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    是的。  

    传输端发送数据包后,接收器似乎接收到数据包,但即使我呼叫 SL_Recv(),接收器也不会上传数据包。

    看起来 NWP 将接收到的数据包保存在缓冲区中,不会立即回复。

    我正在使用非阻塞模式。 我在 main()循环中调用 SL_Recv(),所以如果没有 UART 数据,它会反复调用 SL_Recv()。