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.

[参考译文] TMS570LS3137:sciSetBodrate() by HalCoGen 4.7版

Guru**** 2765355 points

Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/797934/tms570ls3137-scisetbaudrate-by-halcogen-version-4-7

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

您好!

我正在使用 HALCOGEN 4.7版生成的"sciSetBAUDRAATE" API 函数来更新 SCI 接口波特率 rate.below HALCOGEN 生成的 API 代码

void sciSetBudrate (sciBASE-t * sci、uint32波特)

float64 vclk = 90.000 * 1000000.0;
uint32 f=((sci->GCR1 & 2U)=2U)? 16U:1U;
uint32温度;
float64 temp2;
/*SAFETYMCUSW 96 S MR:6.1 "无法避免使用 int 和 float 等计算"*/

temp =(f*(baud));
TEMP2 =((vclk)/((float64) temp))-1U;
TEMP2 = floor (temp2 + 0.5);/*取整至最接近的整数*/
SCI->BRS =(uint32)((uint32) temp2 & 0x00FFFFFFU);

我尝试将波特率设置为115200、其中预分频器值将为10。 "floor"函数正在返回正确的预分频器值、但通过配置错误的预分频器分压器、复制到 temp2变量的值是错误的。 可以帮助我解决此问题吗?

谢谢、

Kalyan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    对于异步波特值115200和 VCLK1 90MHz、BRS 的正确预分频器值为48。
    sciSetBudrate 必须以赫兹为单位使用波特进行调用。
    floor (x)函数返回不大于 x 的最大积分值。将0.5 floor 舍入到最接近的整数。

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

    您好、Miro、

    感谢您的回答。 我们使用的是 VCLK 为20MHz 的定制硬件。 理论 BRS 为10。 我使用 sciSetB波特 率 API 来设置 BRS 寄存器。 在调试时、我可以看到 floor 函数正在返回正确的值(即10)。 但返回的 temp2值为  1076101120.0。我可以在 D0_H 和 D0_L 寄存器中看到正确的预分频器值、但下面屏幕截图中以红色框突出显示的指令会操纵返回值。 我的代码库使用 s_flo限.c 文件中的 floor 函数定义时、如果这是错误的、请更正我。

    以下是调试时汇编代码的屏幕截图:

    谢谢、

    Kalyan

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

    您好!

    我已经测试了 sciSet波特 率、20MHz 作为 VCLK1、115200作为波特。

    在 temp2=((vclk)/(((((float64)temp)之后,TEMp2为9.85;

    temp2 = floor (temp2 + 0.5)后、TEMp2为10;

    此致、

    米罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Kalyan、
    由于您没有反馈、这让我认为您已经用 sci 波特率解决了您的问题。 这就是我关闭此线程的原因。 在上一个帖子后、您始终可以通过写入来重新打开它、也可以打开新主题。

    此致、
    米罗