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.

[参考译文] 编译器/MSP430F169:USART/MSP430F169

Guru**** 2521940 points
Other Parts Discussed in Thread: MSP430F169

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/881791/compiler-msp430f169-usart-msp430f169

器件型号:MSP430F169

工具/软件:TI C/C++编译器

我 使用 MSP430F169采集 具有内部 A/D 的阴道并通过 USART0进行传输。  当晶振为8M 时、波特率是否可以达到115200以上?

我收到数据、发现数据错误。

信号频率介于100Hz 至3000Hz 之间。

您能不能推荐 另一个 MSP430来帮助我实现信号收集和传输的功能。 A/D 的频率高于12位、波特率高于1M。

谢谢!

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

    是的、您可以。 即使 BRCLK = 1MHz、您也可以获得115200波特率。 但我认为您需要自行计算保存在寄存器中的参数。

    我 将 建议使用12位 ADC 的 FR2153。 有关波特率计算、请参阅 UG 或此网站:http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html

    伊斯天

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

    感谢您的回答。我认为我对波特率的理解是正确的。 我测试4次、第一个波特率为115200、第二个为230400、第三个为460800、第四个为921600。

    我通过使用 uartassist 从 PC 接收数据、当波特率为921600时、数据将会脱位、我认为 MSP430F169不能支持 更高速度的波特率。 当我使用115200、230400、460800时 、接收数据是正确的。 以下是我的计划、感谢您的帮助!

    #include
    #include "math.h"

    unsigned int ADvalue;
    unsigned char a[2];

    void ADC12Init (void);
    空 UART0Init (空);


    空 UART_Send_Byte (无符号字符 MyData)

    TXBUF0=MyData;
    while (((UTCTL0&0x01)==0);


    void main (void)

    WDTCTL = WDTPW+WDTHOLD;
    BCSCTL1 &=~0x80;
    BCSCTL2 |=SELM1;
    BCSCTL2 |=0x88;
    ADC12Init();
    UART0Init();
    _EINT();
    ADC12CTL0|=ADC12SC;
    while (1);


    空 ADC12初始化(空)

    P6SEL = 0x01;
    ADC12CTL0&=~ENC;
    ADC12CTL0 = ADC12ON;
    ADC12CTL1 = CONSEQ_0+SHP+ADC12SSEL_2;
    ADC12MCTL0=SREF_0;
    ADC12IE = BIT0;
    ADC12CTL0 |= ENC;

    空 UART0Init (空)

    UCTL0 &=~SWRST;
    UCTL0=0x10;
    UTCTL0 =SSEL0+SSEL1;
    UBR00 = 0x40;         //晶振为7.392MHz、115200
    UBR10 = 0x00;
    UMCTL0 = 0x01;
    ME1 = 0x80;
    P3SEL |=0X30;
    P3DIR |=0x10;


    #pragma vector=ADC_vector
    _interrupt void ADC (void)

    开关(ADC12IV)

    情况0x02:break;
    情况0x04:break;
    情况0x06:
    ADvalue =ADC12MEM0;
    A[0]= ADValue&0xFF;
    A[1]=(ADvalue>8)&0xFF;
    UART_Send_Byte (A[1]);
    UART_Send_Byte (A[0]);
    ADC12CTL0 |=ADC12SC;
    默认:中断;

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

    当您解决了问题时、我将关闭此主题。

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

    很抱歉、我 不知道我的程序是否正确。

    我的问题是当我使用921600 波特率时、我的接收数据是错误的。当我使用115200、230400、460800时、接收数据是正确的。

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

    最大波特率似乎可以达到1000000000/500 = 2M。 但我不知道最高波特率构成了规范。

    对于 G2或 FRAM 器件、 可以清楚地看到它可以达到超过1M 波特率。

    G2553:

    F2153:

    如果您想让我为您进行仔细检查、请发布您保存在相关寄存器中的数据。

    伊斯天