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.

[参考译文] BQ79616EVM-021:msp430fr5994和 bq79616器件的最大通信速率

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1202847/bq79616evm-021-msp430fr5994-and-bq79616-device-maximum-communication-rate

器件型号:BQ79616EVM-021
主题中讨论的其他器件:BQ79616MSP430FR5994

大家好、团队

   我需要使用两个开发板 msp430fr5994和 BQ79616进行 UART 通信。

BQ 器件 问题:

  我从 BQ79616的数据表中看到、它的 UART 波特率为1MHz。 我 对 BQ79616的数据表有两个问题。

(__LW_AT__1)μ A 1M 是固定的吗? 我可以将其设置为其他波特率吗?

(注:我将 MSP430的波特率设置为9600Hz、发现连接到79616后、无法正常对器件寻址。)

(2)如果 BQ 器件的波特率可以设置为其他值、为什么在我将其设置为9600Hz 后它无法自动寻址?

msp430fr5994 launchpad 问题:

 现在、我使用两个430开发板进行 UART 通信。 当两个电路板之间的通信速率设置为9600Hz 时、

我可以正确地读取从器件反馈的值并正确地存储它、但是当通信速率设置为1MHz 时、

我无法正确读取和存储从器件发送的值。

好的、我现在想 MSP430  

(__LW_AT__1 μ s 我想)在通信速率增加后为什么无法正确读取数据?

(__LW_AT__2)在确保稳定通信的情况下、MSP430 UART 的最大通信速率是多少

  

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

    尊敬的 Xi:

    关于第一个问题、是的、BQ79616在上电复位后仅支持 UART 1Mbps 的波特率。  

    关于第二个问题、如果您使用1Mbps 以外的波特率进行 UART 通信、则无法从 BQ79616获得回复。

    您能否说明将 MSP430的波特率设置为1Mbps 时出现了什么问题(您看到两个 MSP430之间存在问题吗、 或 MSP430与 BQ 器件之间),您能否共享逻辑分析器日志或 UART 通信的示波器快照。 您还可以分享您对 MSP430所做的配置更改、以便将波特率从9600更新为1MHz。

    从 MSP430数据表中、我看到它支持高达4Mhz 的波特率。

    此致、

    拉维

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

    您好、Ravi

    感谢您的快速响应。很抱歉、我没有说明。

    当 MSP430和 BQ 器件间的通信速率为1MHz 时、BQ 发送的数据是正确的、但是430接收的数据是不完整的。 我怀疑波特率太高了、所以我用两个430开发板来模拟通信过程、并将两个板的波特率配置为1MHz 来查看是否可以正常发送和接收数据。 我发现、当两个电路板的波特率配置为1MHz 时、两个430电路板中的从器件无法正常接收数据、但是当我将两个电路板的波特率配置为9600时、从器件可以接收到完整的数据。

    (__LW_AT__1 μ s)我用两个430板(__LW_AT__9600至1M)进行了实验

    通信流程:

    现在、有 两个 MSP430、一个作为主设备、另一个作为从设备。 主器件发送一条命令告诉从器件、在从器件接收到该命令之后、从器件将阵列中的值发送 给主器件。    TEMP1[8]={0x01,0x00,0x05,0x68,0x17,0x97,0xce,0x84} ; 然后观察主机接收到的值

     (2) 两个 MSP430之间的通信速率为1M、和捕获的示波器波形。

    MSP430从器件 发送正确数据。 图中的数据分析结果是{0x01,0x00,0x05,0x68,0x17,0x97,0xce,0x84},但  代码接收的数据不完整

     (3)  两个 MSP430之间的通信速率为9600、以及捕获的示波器波形。

    MSP430从器件 发送正确数据。 图中的数据分析结果是 {0x01,0x00,0x05,0x68,0x17,0x97,0xce,0x84}, 代码接收的数据完整

    (4) 波特率从9600改为1M。 我的代码中的更改如下

    主机代码:

    CS_setDCOFreq (CS_DCORSEL_1、CS_DCOFSEL_4);//DCO:16M

    CS_initClockSignal (CS_SMCLK、CS_DCOCLK_SELECT、CS_CLOCK_DIVIDER_2);//CS_SMCLK:8m
    CS_initClockSignal (CS_MCLK、CS_DCOCLK_SELECT、CS_CLOCK_DIVIDER_1);

    以前:

    void BMS_UARTA3_Init (void)  
    {

    P6SEL0 =(BIT0 | BIT1);
    P6SEL1 = 0x00;
    P6OUT |= BIT0;
    P6DIR |= BIT0 ;
    P6DIR &=~BIT1;
    PM5CTL0 &=~μ A LOCKLPM5;使IO口生效 μ A

    UCA3CTLW0 = UCMODE_0 +UCSSEL_2 +UCSWRST;//波特率=1M
     UCA3BRW_H = 0;
     UCA3BRW_L = 8;
     UCA3MCTLW_H = 0x0;
     UCA3CTLW0 &=~UCSWRST ;
    UCA3IE |= UCRXIE ;

    之后:  

    void BMS_UARTA3_Init (void)  
    {

    P6SEL0 =(BIT0 | BIT1);
    P6SEL1 = 0x00;
    P6OUT |= BIT0;
    P6DIR |= BIT0 ;
    P6DIR &=~BIT1;
    PM5CTL0 &=~μ A LOCKLPM5;

    UCA3CTLW0 = UCMODE_0 +UCSSEL_2 +UCSWRST;//波特率=9600
    UCA3BRW_H = 0;
    UCA3BRW_L = 52;
    UCA3MCTLW_L = UCOS16 + UCBRF0;
    UCA3MCTLW_H = 0X49;
    UCA3CTLW0 &=~UCSWRST ;
    UCA3IE |= UCRXIE ;

    从机代码

    CS_setDCOFreq (CS_DCORSEL_1、CS_DCOFSEL_4);//DCO:16M

    CS_initClockSignal (CS_SMCLK、CS_DCOCLK_SELECT、CS_CLOCK_DIVIDER_2);//CS_SMCLK:8m
    CS_initClockSignal (CS_MCLK、CS_DCOCLK_SELECT、CS_CLOCK_DIVIDER_1);

    之前

    void BMS_UARTA3_Init (void)  
    {

    P6SEL0 =(BIT0 | BIT1);
    P6SEL1 = 0x00;
    P6OUT =(BIT0 |BIT1);
    P6DIR |= BIT0 ;
    P6DIR &=~BIT1;
    P6REN |= BIT1;
    PM5CTL0 &=~μ A LOCKLPM5;使IO口生效 μ A


    UCA3CTLW0 = UCMODE_0 +UCSSEL_2 +UCSWRST;// 波特率=1M
    UCA3BRW_H = 0;
    UCA3BRW_L = 8;
    UCA3MCTLW_H = 0x0;
    UCA3CTLW0 &=~UCSWRST ;
    UCA3IE |= UCRXIE ;

    之后

    void BMS_UARTA3_Init (void)  
    {

    P6SEL0 =(BIT0 | BIT1);
    P6SEL1 = 0x00;
    P6OUT |= BIT0;
    P6DIR |= BIT0 ;
    P6DIR &=~BIT1;

    PM5CTL0 &=~μ A LOCKLPM5;使IO口生效 μ A

    UCA3CTLW0 = UCMODE_0 +UCSSEL_2 +UCSWRST;//波特率=9600
    UCA3BRW_H = 0;
    UCA3BRW_L = 52;
    UCA3MCTLW_L = UCOS16 + UCBRF0;
    UCA3MCTLW_H = 0X49;
    UCA3CTLW0 &=~UCSWRST ;
    UCA3IE |= UCRXIE ;

    我将私下向您发送其他必要的代码。 如果您有任何其他需要的信息,请及时与我联系,我也可以私下发送

    这可以帮助我了解问题所在吗?