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.

[参考译文] TMS320F28386S:转换浮点值以发送到 UART 需要很长时间

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1136359/tms320f28386s-converting-float-values-to-send-to-uart-takes-forever

器件型号:TMS320F28386S

您好!

我想通过串行端口发送浮点值。

考虑以下允许代码:

void SendData(float a, float b, float c)
{
    #define bufLen  16
    uint16_t sendBuff[bufLen];

    sendBuff[0] = SOM1;
    sendBuff[1] = SOM2;

    sendBuff[2] = 0x00;

    GPIO_writePin(TEST_128, 0);
    loadDataToArray(&sendBuff[ 3], a);
    loadDataToArray(&sendBuff[ 7], b);
    loadDataToArray(&sendBuff[11], c);
    GPIO_writePin(TEST_128, 1);

    sendBuff[bufLen - 1] = EOM;

    SCI_writeCharArray(SCIA_BASE, sendBuff, bufLen);
}


void loadDataToArray(uint16_t * dest, float data)
{
    int * ptr = &data;

    dest[0] = *(ptr) & 0x00FF;
    dest[1] = *(ptr) >> 8;
    dest[2] = *(ptr + 1) & 0x00FF;
    dest[3] = *(ptr + 1) >> 8;
}

 此代码大约需要140us 的运行时间。

是否有人建议如何更积极地开展这一进程?

谢谢!

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

    经过一些测试、它不是浮点转换。

    "SCI_writeCharArray"调用花费了大部分时间。

    但是、我看不到 DMA 可以填充 SCI 的数据。

    如何解决"SCI_writeCharArray"需要这么长时间的问题?

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

    您好!

    您可以使用直接 HWREG 来节省几个周期、而不是使用 driverlib API。 让我详细了解一下、然后返回给您、了解您将如何进一步增强。

    出于兴趣、您能告诉我发送 int 字符需要花些什么时间吗?

    谢谢、

    Aditya

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

    您好!

    您是否有机会尝试使用 HWREG 而不是 driverlib 函数? 此外、您是否启用了编译器优化? 这也应该节省一些时间。

    Aditya