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.

[参考译文] CCS/MSP432P401R:UART 和 MCLK 故障

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/866332/ccs-msp432p401r-uart-and-mclk-trouble

器件型号:MSP432P401R

工具/软件:Code Composer Studio

您好!

我今天遇到了两个问题。

一个是 MCLK、另一个是 UART 通信。

我在 EVM 和我们创建的 PCB 上下载相同的代码。

EVM 可以正常工作、但 PCB 无法正常工作。

我使用22pF 电容和48MHz 作为 MSP432 HFXIN 和 HFXOUT 的高频。

使用相同的控制代码、可以在 MSP432P401R-EVM 上将 MCLK 设置为48MHz、但它不能在我的 PCB 上设置(仅15MHz、不稳定)。

PCB 创建的参考是 EVM 的数据表、请使用以下文件检查原理图。

我将 MCLK 源更改为 DCO、PCB 可设置为48MHz、因此我现在使用 DCO 输出作为 MCLK 源。

如何解决这个问题、使 MCLK 在高频晶体下为48MHz?

2.我使用 MCLK (48MHz)作为 EUSCI_A0源、UART 格式为9600-N-1 8位数据。

它可以在 EVM 上工作、但无法在我的 PCB 上工作。

MSP432无法接收 UART 数据。 (我使用断点进行检查、它没有进入 EUSCIA0_IRQHandler ISR)

我还将代码更改为通过 UART 传输数据、我无法从 MSP432接收数据。

相同的代码可以在 EVM 板上运行。

我已经检查了 MCLK 是否恰好是48MHz。

RXD 和 TXD 引脚与连接器和芯片正确连接。

我是否错过了任何设置?

BTW、为什么在发送前一个数据和下一个数据之间需要700ms 的延迟、否则数据将丢失?

MSP430中不需要它、我之前问过、但我没有得到答案。

该帖子已消失、因为 TI 员工认为它是解析的、但实际上却不解析。

原理图文件:

e2e.ti.com/.../04_5F00_sch_5F00_ITC_2D00_024H_5F00_V20.pdf

代码:

//***MCLK 设置为 HF ****

void set_System_clk (void)//chip=MSP432P401Y

unsigned int currentPowerState;
 /*注意:此示例假设默认电源状态为 AM0_LDO。
 *有关更完整的 PCM 操作、请参阅 msp432p401x_PCM_0x 代码示例
 *在工作模式之间进行各种电源状态转换。
 *
 /*步骤1:转换到 VCORE 电平1:AM0_LDO --> AM1_LDO */
 /*获取当前电源状态,如果它不是 AM0_LDO,则错误输出*/
 currentPowerState = PCM->CTL0 & PCM_CTL0_CPM_MASK;
 if (currentPowerState!= PCM_CTL0_CPM_0)
 while (1);
 while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY));
 PCM->CTL0 = PCM_CTL0_KEY_VAL | PCM_CTL0_AMR_1;
 while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY));
 IF (PCM->IFG & PCM_IFG_AM_INVALID_TR_IFG)
 while (1);//如果转换不成功则出错
 if (((PCM->CTL0 & PCM_CTL0_CPM_MASK)!= PCM_CTL0_CPM_1)
 while (1);//如果器件未处于 AM1_LDO 模式、则出现错误
 /*步骤2:将闪存等待状态配置为1 (对于组0和组1)*/
 FLCTL->BANK0_RDCTL =(FLCTL->BANK0_RDCTL 和~(FLCTL_BANK0_RDCTL_WAIT_MASK))| FLCTL_BANK0_RDCTL_WAIT_1;
 FLCTL->BANK1_RDCTL =(FLCTL->BANK0_RDCTL 和~(FLCTL_BANK1_RDCTL_WAIT_MASK))| FLCTL_BANK1_RDCTL_WAIT_1;
 /*步骤3:将 HFXT 配置为使用48MHz 晶体,源至 MCLK 和 HSMCLK*/
 PJSEL0 |= BIT2 | BIT3;//为 HFXT 函数配置 PJ.2/3
 PJSEL1 &=~(BIT2 | BIT3);
 CS->KEY = CS_KEY_VAL;//解锁 CS 模块以进行寄存器访问
 CS->CTL2 |= CS_CTL2_HFXT_EN | CS_CTL2_HFXTFREQ_6 | CS_CTL2_HFXTDRIVE;
 while (CS->IFG 和 CS_IFG_HFXTIFG)
 CS->CLRIFG |= CS_CLRIFG_CLR_HFXTIFG;
 /*选择 MCLK & HSMCLK = HFXT、无分频器*/
 CS->CTL1 = CS->CTL1和 μ~(CS_CTL1_SELM_MASK | CS_CTL1_DIVM_MASK | CS_CTL1_SELESS_MASK | CS_CTL1_DIVHS_MASK)| CS_CTL1_SELM_HFXTCLK;
 CS->KEY = 0;//锁定 CS 模块,防止意外访问
 /*步骤4:将 MCLK 输出到端口引脚以演示48MHz 运行*/
 P4DIR |= BIT3;//输出 MCLK
 P4SEL0 |=BIT3;
 //P4SEL1 &=~BIT3;//默认为0
 P4DIR |= BIT2;//输出 ACLK
 P4SEL0 |=BIT2;
 //P4SEL1 &=~BIT2;//default 为0

//***MCLK 设为 DCO ***

void set_System_clk (void)//chip=MSP432P401Y

unsigned int currentPowerState;

//注意:此示例假设默认电源状态为 AM_LDO_VCORE0。
//步骤1:转换到 VCORE 电平1:AM_LDO_VCORE0 --> AM_LDO_VCORE1
//获取当前电源状态,如果它不是 AM_LDO_VCORE0,则会出现错误
currentPowerState = PCM->CTL0 & PCM_CTL0_CPM_MASK;
//如果 PCM 已在 AM1_DCDC 中,则跳过电源模式配置
if (currentPowerState!= PCM_CTL0_CPM_5)

if (currentPowerState!= PCM_CTL0_CPM_0)
while (1);
while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY));
PCM->CTL0 = PCM_CTL0_KEY_VAL | PCM_CTL0_AMR_1;
while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY));
IF (PCM->IFG & PCM_IFG_AM_INVALID_TR_IFG)
while (1);//如果转换不成功则出错
if (((PCM->CTL0 & PCM_CTL0_CPM_MASK)!= PCM_CTL0_CPM_1)
while (1);//如果器件未处于 AM1_LDO 模式、则出现错误
//步骤2:从 AM1_LDO 转换到 AM1_DCDC
while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY));
PCM->CTL0 = PCM_CTL0_KEY_VAL | PCM_CTL0_AMR_5;
while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY));
IF (PCM->IFG & PCM_IFG_AM_INVALID_TR_IFG)
while (1);//如果转换不成功则出错
if ((PCM->CTL0 & PCM_CTL0_CPM_MASK)!= PCM_CTL0_CPM_5)
while (1);//如果器件未处于 AM_DCDC_VCORE1模式则出错

//步骤3:将闪存等待状态配置为1 (对于组0和组1)
FLCTL->BANK0_RDCTL =(FLCTL->BANK0_RDCTL 和~(FLCTL_BANK0_RDCTL_WAIT_MASK))| FLCTL_BANK0_RDCTL_WAIT_1;
FLCTL->BANK1_RDCTL =(FLCTL->BANK0_RDCTL 和~(FLCTL_BANK0_RDCTL_WAIT_MASK))| FLCTL_BANK1_RDCTL_WAIT_1;
//步骤4和5:将 DCO 配置为48MHz、确保 MCLK 使用 DCO 作为源
CS->KEY = CS_KEY_VAL;//解锁 CS 模块以进行寄存器访问
CS->CTL0 = 0;//重置调整参数
CS->CTL0 = CS_CTL0_DCORSEL_5;//将 DCO 设置为48MHz
//选择 MCLK = DCO、无分频器
CS->CTL1 =(CS->CTL1 &~(CS_CTL1_SELM_MASK | CS_CTL1_DIVM_MASK)| CS_CTL1_SELM_3;
CS->KEY = 0;//锁定 CS 模块,防止意外访问
//输出 MCLK 和 ACLK 到端口引脚以演示48MHz 运行
P4DIR |= BIT3;//输出 MCLK
P4SEL0 |=BIT3;
//P4SEL1 &=~BIT3;//默认为0
P4DIR |= BIT2;//输出 ACLK
P4SEL0 |=BIT2;
//P4SEL1 &=~BIT2;//default 为0

//*** UART 操作***

void TX_Data_Operation

//*********
//* TX 操作*
//*********
while (<UART_Data[0])

EUSCI_A0->TXBUF = UART_Data[UART_State_+];
delay_micorsec (700);

UART_State_0;

空 UART_SET (空)

P1SEL0 |=(RXD + TXD);
P1SEL1 &=~Ω(RXD + TXD);
EUSCI_A0->CTLW0 |= EUSCI_A_CTLW0_SWRST;//将 eUSCI 置于复位状态
EUSCI_A0->CTLW0 = EUSCI_A_CTLW0_SWRST |//在复位时保持 eUSCI
EUSCI_B_CTLW0_ssel_SMCLK;//为 SMCLK 配置 eUSCI 时钟源
EUSCI_A0->BRW = 312;
EUSCI_A0->MCTLW =(8 << EUSCI_A_MCTLW_BRF_OFS)| EUSCI_A_MCTLW_OS16;
EUSCI_A0->CTLW0 &=~EUSCI_A_CTLW0_SWRST;//初始化 eUSCI
EUSCI_A0->IFG &=~EUSCI_A_IFG_RXIFG;//清除 eUSCI RX 中断标志
EUSCI_A0->IE |= EUSCI_A_IE_RXIE;//启用 USCI_A0 RX 中断
NVIC->ISER[0]= 1 <<((EUSCIA0_IRQn)& 31);//在 NVIC 模块中启用 eUSCIA0中断
__ENABLE_IRQ();//启用全局中断

空 EUSCIA0_IRQHandler (空)

UART_Data[(UART_STATE 和 UART_State_Count)]= EUSCI_A0->RXBUF;
UART_State_+;
if ((UART_State & UART_State_Count)>= UART_Data[0])
UART_STATE = UART_State_Finish;

BR、

Yu-Chuan、Chen

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

    于传

    由于您提到一切都可以在 LaunchPad 开发套件上使用、而且不能在您的定制 PCB 上使用、因此让我们首先回顾一下您的定制 PCB 设计。 您还可以共享您的布局设计文件吗? 例如光绘?

    BR、

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

    你(们)好

    我不知道我向您提供的.PCB 文件是否正常。

    我认为、如果我同时发送.PCB 文件和.pdf 布局文件会更合适。

    我更喜欢通过私人邮件发送这些文件、并且我已经发送了朋友请求。

    请检查并 让我给您发送一封私人邮件。

    BR、

    Yu-Chuan、Chen

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

    尊敬的 Seong:

    很抱歉、我在2020年1月至4月有一个很长的假期。

    我需要在这些日子里完成其他项目、

    我没有收到您的任何消息。

    我已经与 BOSS 讨论过在帖子中发送*。PCB 文件。

    请对其进行检查。

    BR

    Yu-Chuan、Chen

    e2e.ti.com/.../ITC_2D00_024H_5F00_V20.Pcb

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

    于传

    对迟交的答复表示歉意。 我将查看布局并在近期提供反馈。

    BR、

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

    我无法使用 PADS 布局查看器打开此文件。 您使用什么来打开此文件类型? 您能否通过直接信息向我发送原理图和光绘文件?

    BR、