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.

[参考译文] MSP430FR2633:MSP430FR2633发送非法数据包

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/743058/msp430fr2633-msp430fr2633-sends-an-illegal-packet

器件型号:MSP430FR2633

您好!

CapTIvate MCU 开发套件的手机板演示
轻触传感器值变为0x55的点
当通过 UART 从 MSP430FR2633向 PC 发送数据时、
获取了与所附数据类似的数据。

55 AA 08 00 55 55 00 00 0 F 64 00

其中、传感器数据变为0x55
无论字节数设置为8、都是如此
它是9字节。

如何解决?

此致

DDdoore2e.ti.com/.../data.txt

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

    请运行 FR2633 UART 代码示例以确保 UART 通信正常。 然后查找此问题是软件问题还是硬件问题。

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

    我在演示板上试用了 MSP430FR2633的环回示例设计、
    我确认该设计正常工作。
    UART 通信没有问题。

    ■MSP 430 FR 243 x _ MSP 430 FR 253 x _ MSP 430 FR 263 x _ Code _ Exxes \ C
    msp430fr243x_euscia0_UART_03.c


    我将回到有关具有吸引力的手机板设计的故事、
    附加文件、但在具有吸引力的手机板设计中、
    在设置内部寄存器的阶段、这似乎是非法的。

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

    请您与我们分享 UART 配置和通信源代码吗? 谢谢。

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

    您好!

    随附的文件是客户发送的 CapTIvate 设计中心文件
    另一个是针对 CapTIvate EVM 进行了修改的项目。
    由于原始项目是要在客户的电路板上使用的项目、因此为了在此处重现此项目、我们只更改引脚排列以与手机电路板一起移动。

    MSP 430和 PC 之间通信的波特率为250、000。

    在使用手机板进行检查时、
    当 WHL00的传感器值为80 (0x55)时、数据包变为非法。

    尽管有源代码请求、但它会成为随附的 CCS.zip。
    解压缩后、有 modify_TO_captate_phone_from _original 文件夹、源代码是从其中 captate 设计中心的项目创建的
    它将是一个项目。

    此致、
    DDdoore2e.ti.com/.../to_5F00_TI.zip

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

    谢谢。 我已下载随附的文件并在 FR2633 EVM 板上运行代码。 我可以从 CapTIvate 设计中心获取数据。
    但我对你的"非法包裹"不是很清楚、请你向我详细解释一下吗? 谢谢。

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

    它是非法数据包、而不是非法数据包。

    例如、存在如下所示的传感器数据包。
    55 AA 08 00 55 55 00 00 0F 64 00
    第一个是0x55、第二个是0xAA。 我想第三个字节的0x08是否代表数据包的长度。
    但是,在上面的示例中,它变为00 00 55 00 00 0F 64 00。
    一个帧中包含9个字节。
    我将其称为非法数据包。
    当电容式设计中心的滚轮传感器的传感器值为80 (以十进制表示法)时、就会发生这种情况。
    换句话说、它是十六进制的0x55。 当检测到0x55时、我认为下一个字节也变为0x55会产生9个字节。


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

    我给你。 让我尽快与软件设计团队联系并向您提供反馈。

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

    您好、DDDOOR、

    这不是非法数据包。

    正如您指出 的那样、如果您的有效载荷中包含同步字节55h、代码将发送两次55h 以区分同步字节。  填充的字节不会被计为有效载荷的长度。 您可以将其视为通信开销。

    我们在技术指南部分提供了详细说明、以下链接:

    如果您有更多问题、请告知我们。

    谢谢、

    是的   

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

    您好!
    过孔

    >此填充字节不会被计为有效载荷的长度。

    我使用 CapTIvate 技术指南检查了内容、
    尽管我知道两个0x55在 MSP 430端继续、并且不被视为长度、
    如果主机接受帧中的8个长度信息并执行处理、
    由于字节计数为9、因此会发生通信错误、
    客户对此有何看法?

    此致、
    DDDOOR

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

    您好、DDDOOR、

    此数据包打算由 HID 桥解析并发送到 GUI。 您可以将此格式用于软管处理器或禁用与 HID 桥的通信、只需使用您自己的数据格式即可发送数据。

    我在此附上了 HID 桥中用于解析数据包以供您参考的代码。

    #define MAX_PACKE_LENGTH (62)
    
    typedef 结构
    {
    uint8_t ui8有效载荷[MAX_PACKET_LENGTH];
    uint8_t ui8Length;
    }tPacket;
    
    bool HIDBridge_parseQueueForPacket (tByteQueue * pReceiveQueue、tPacket * pPacket)
    {
    静态 INT8_t g_i8currPacketIndex =-1;
    静态 bool g_bStudioedByteDetected = false;
    bool bChecksumVerified = false;
    
    //
    //如果没有数据包开始成帧,请检查是否开始成帧
    //字节已准备好进行检查
    //
    if (g_i8currPacketIndex < 0)
    {
    while (ADT_getByteQueueSize (pReceiveQueue)> 2)
    {
    if (ADT_PULLEFromByteQueue (pReceiveQueue)!= HIDBRIDGE_SYNC)
    {
    __no_operation();
    继续;
    }
    if (ADT_PULLFromByteQueue (pReceiveQueue)== HIDBRIDGE_SYNC)
    {
    __no_operation();
    继续;
    }
    pPacket->ui8Length = ADT_PULLFromByteQueue (pReceiveQueue);
    if (pPacket->ui8Length > MAX_PACKE_LENGTH)
    {
    G_i8currPacketIndex =-1;
    返回 false;
    }
    G_i8currPacketIndex = 0;
    中断;
    }
    }
    
    //
    //如果数据包启动,则开始成帧
    //
    if (g_i8currPacketIndex >= 0)
    {
    while (ADT_getByteQueueSize (pReceiveQueue)> 0)
    {
    pPack->ui8有效载荷[g_i8currPacketIndex]=
    ADT_PULLEFromByteQueue (pReceiveQueue);
    if (g_BStudioedByteDetected = true)
    {
    if (pPack->ui8有效载荷[g_i8currPacketIndex]
    =HIDBRIDGE_SYNC)
    {
    G_i8currPacketIndex++;
    G_bStudioByteDetected = false;
    }
    其他
    {
    G_i8currPacketIndex =-1;
    G_bStudioByteDetected = false;
    返回 false;
    }
    }
    否则(pPack->ui8有效载荷[g_i8currPacketIndex]
    =HIDBRIDGE_SYNC)
    {
    G_bStudioByteDetected = true;
    }
    其他
    {
    G_i8currPacketIndex++;
    
    }
    if (g_i8currPacketIndex =pPack->ui8Length)
    {
    G_i8currPacketIndex =-1;
    bChecksumVerified = HIDBridge_verifyChecksum (pPacket);
    中断;
    }
    }
    
    
    返回 bChecksumVerified;
    }
    
    bool HIDBridge_verifyChecksum (tPacket *pPacket)
    {
    uint16_t ui16计算、ui16指定;
    uint8_t ui8Index;
    
    ui16已指定=
    (pPacket->ui8有效载荷[pPacket->ui8Length -2)
    |(pPacket->ui8Payload[pPacket->ui8Length -1]<<8);
    
    ui16计算= 0;
    对于(ui8Index=0;ui8Index ui8Length -2;ui8Index++)
    {
    ui16计算+= pPacket->ui8有效载荷[ui8Index];
    }
    
    if (ui16已指定=> ui16已计算)
    {
    返回 true;
    }
    其他
    {
    返回 false;
    }
    }
    
    
    

    谢谢、

    是的