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.

[参考译文] RM48L952:RM48L952 sci 波特率问题

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/727619/rm48l952-rm48l952-sci-baudrate-question

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

尊敬的先生:

SCI 模块问题:

设置波特率使用以下子函数:

/**@fn void sciSetBudrate (sciBASE-t * sci、uint32波特)
*@简要更改运行时的波特率。
*@param[in] sci - sci 模块基址
*@param[in]波特-以 Hz 为单位的波特率
*
*在运行时更改 SCI 波特率。
*
/* sourceId:SCI_sourceId_003 */
/* DesignId:SCI_DesignId_003 */
/*要求:HL_SR232 */
void sciSetBudrate (sciBASE-t * sci、uint32波特)

float64 vclk = 110.000 * 1000000.0;
uint32 f=((sci->GCR1 & 2U)=2U)? 16U:1U;
uint32温度;
float64 temp2;
/*用户代码开始(6)*/
/*用户代码结束*/

/*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);


/*用户代码开始(7)*/
/*用户代码结束*/

我连接 PC COM1端口(物理端口,而不是 USB <->UART)  

TX 可以执行115200/57600 ~ 9600/4800/2400/1200波特率

RX 可以执行115200/57600 ~ 9600、但4800/2400/1200波特率输出功能

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ken 您好、
    您能告诉我 sciSetBudrate 加载的 BRS 值吗?

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

    我在下面使用了该子函数,它是 gen。 提供的

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


    float64 vclk = 110.000 * 1000000.0;
    uint32 f=((sci->GCR1 & 2U)=2U)? 16U:1U;
    uint32温度;
    float64 temp2;

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



    对于 TX,波特率115200/57600/38400.... 9600/4800/2400/1200,此功能正常,全部正常
    但是对于 RX 115200/57600/38400.... 9600 OK,4800/2400/1200不正常

    我尝试另一种甲胺
    void sciSetBudrate (sciBASE-t * sci、uint32波特)

    /**-设置波特率*/
    scilinREG->BRS = 1431;//预分频1431 = 4800 PBS*/


    我试了4800 PBS 的预分频1435 ~ 1427,但没有办法
    2400 PBS 的预分频2864,我试了2869 ~ 2859,不会!

    我再次说,TX 正常,只有 RX 不能达到4800/2400/1200 bps

    此致

    Ken Lin