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.

[参考译文] MSP430FR5739:无法获取在评估板上工作的 UART/串行端口

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/744241/msp430fr5739-unable-to-get-uart-serial-port-working-on-eval-board

器件型号:MSP430FR5739
主题中讨论的其他器件: MSP-EXP430FR5739

您好!

我不熟悉 MSP430系列、当然有一条学习曲线。 我的设置是 评估板 EXP-MSP430FR5739上的 MSP430FR5739。 它使用 USB 连接连接连接到 PC、USB 连接也承载 CDC。  

我尝试设置一个到主机 PC 的 UART 连接(115200bps、N、8、1)、但它不能按预期工作。 连接参数通过 SLAU272D 表18-5进行设置。 目的是使用第三行到最后一行、因为它具有最低的误差百分比。

发送标志(UCA0IFG&UCTXIFG)永远不会改变、并且字节永远不会离开 UART (只要我能告诉我)。 此外、当向 PC 上的 CDC/串行端口发送数据时、LED 永远不会闪烁。

我已粘贴以下相关代码。

int main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

//设置时钟速度
CSCTL0_H = 0xA5;//启用 CS 寄存器访问
CSCTL1 |= DCOFSEL1 + DCORSEL;//将 DCO 设置为20MHz

//将 MCLK 源设置为 DCOCLK、
// SMCLK 源到 DCOCLK、
//以及 ACLK 源到 VLOCLK
CSCTL2 = SELM0 + SELM1 + SELS0 + SELS1 + SELA0;

//将 MCLK 时钟分频器设置为0以进行1分频、
//将 SMCLK 时钟分频器设为0以除以1、
//将 ACLK 时钟分频器设为0以进行1分频、
CSCTL3 &= 0x00;

//为启用条件模块请求
// MCLK、SMCLK 和 ACLK
CSCTL6 |= MCLKREQEN + SMCLKREQEN + ACLKREQEN;

命令初始化();

uint8_t data[3];
数据[0]= 0x43;
数据[1]= 0x44;
DATA[2]= 0x0A;

while (1)
{
命令传输(0x44、3、数据);
}

返回0;
}

void 命令初始化()
{
P2DIR |= BIT0 | BIT1;//RX + TX 引脚

PJDIR |= BIT1 | BIT2;//LED

UCA0CTL0 = UCSWRST;//复位 UART 寄存器
UCA0CTL0 |=(UCSSEL1 | UCSSEL0);//将 UCSSELx 设置为11b (SMCLK)

UCA0BRW = 10;//UCAxBRW = 10
UCA0MCTLW_L = 0xD0 | UCOS16;//BRFx = 13 +启用过采样
UCA0MCTLW_H = 0xAD;//BRS = 0xAD

UCA0CTL1 &=~Ω UCSWRST;//从复位中释放
UCA0IE |= UCTXIE | UCRXIE;//启用 RX 中断
}

void Commanding_Transmit (uint8_t 命令、uint8_t 长度、uint8_t*数据)
{
//发送命令 id
UCA0TXBUF =命令;

while (!(UCA0IFG&UCTXIFG));//等待缓冲区准备就绪

uint8_t i = 0;

//发送数据
对于(i = 0;i < length;i++)
{
UCA0TXBUF = DATA[i];
while (!(UCA0IFG&UCTXIFG));//等待缓冲区准备就绪
}

PJOUT ^= BIT2;
}

#pragma vector=USCI_A0_vector
__interrupt void USCI_A0_ISR (void)
{
switch (__evo_in_range (UCA0IV、0x08))
{
情况0:中断;//向量0 -无中断
情况2://向量2 - RXIFG
{
uint8_t rxChr = 0;
rxChr = UCA0RXBUF;

PJOUT ^= BIT1;
中断;
}
情况4:中断;//向量4 - TXIFG

默认值:break;
}
} 

感谢您的任何帮助。

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

    MSP-EXP430FR5739不支持高于9600波特。 请参阅下面的主题。 请记住、这是电路板反向通道 UART 实施的限制、而不是芯片本身的限制。 如果您可以使用另一个 UART 转 USB 器件连接到 UART 引脚、则应该能够对器件执行115、200波特。

    e2e.ti.com/.../209634