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.

[参考译文] 使用MSP432微控制器将数据发送到PC的UART出现问题

Guru**** 2540720 points
Other Parts Discussed in Thread: ENERGIA

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/583948/problems-with-uart-to-send-data-to-pc-with-msp432-microcontroller

主题中讨论的其他部件:Energia

您好,我在与PC的UART通信方面遇到一些问题,我使用CCS对我的代码进行编程并调试结果,我使用终端。 所以我的代码运行良好,一切都很好,最大的问题是功能在终端窗口中不能很好地显示。 有人能帮我吗?我 将我的代码和图像发送给接收者  

#include "msp.h"

int main(void){
	UART_TxConfig();
}

void UART_TxConfig(void){/*clock
	system sulport (CS)*/
	CS->key = 0x695A;/*解锁所有16个LSB CS寄存器*/CS->CTL0*0
	;CS*21 =
	CS_CL_CS_CS_SCL0*
	= CS_CS_CS_SCL3*= CS_CS_CS_CS_CS_CS_SCL0; CS_CS_CS_CS_CS_CS_SCL3* CS_CS_CS_CS_CS_CS_SCL3*
			= CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_CS_SCL3*
			
			
	
	/*锁定ACESSES以注册*/
	CS->key =0;/*解锁所有16 LSB CS寄存器*/*UART

	PIN配置*/
	P1-> SEL0 |= BI既| BIT3;/*SET 2 UART PIN*/*active
	interrupt'*/
	__enable_interrupt();
	/*active LWeUSCIAN0*/UIC_UIS0; UIC*1= UIC0; USCIAN0; UIC*0
	
	
	
	UCA0CTLW0 |= UCSSEL__SMCLK;/*选择SMCLK时钟源*/*
	波特率计算
	*12MHz/(16*9600)= 78.125
	*分数部分= 0.125
	*分数
	*/
	UCA0BR0=26;/*4800万/16/115200*/
	UCA0BR1=0x00;11.52万 UCA0BR1=0x00; UCA0MCTLWE*=
	
	
	~UCA0= 0;UCAXBIE*0;UCA0XBIE*0;UCA0 = UCA0CA0 = UCA0;UCA0;UCAXBIE*0 = UCA0;UCA0CA0;UCA0CA0CA0 = UCA0;UCA0;UCAXBIE*UCA0
	

	
	
	
	UCA0TXBUF ='C';
	UCA0TXBUF ='D';
	UCA0TXBUF = 0x61;
	}
}/*UART

中断服务例程*/
void EUSCIA0_IRQHandler (void){
	IF (UCA0IFG & UCRXIFG){
		while (!(UCA0IFG&UCTXIFG));
	}


}

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

    您好Armando:

    我将尝试重现这一错误,但到目前为止,我没有看到类似的结果。  您能否仔细检查您提供的代码是否与产生此错误的代码相同?  我没有任何数据流进入终端窗口。  我使用11.52万波特率,串行终端设置如下:

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

    此外,

    似乎您正在使用设置为48MHz的DCO频率,但您没有更改闪存等待状态或VCORE。  尝试此操作时,这不会使您的设备积木?  它每次都是砖头(我最终不得不重置出厂设置,然后再对其进行编程。)

    我注意到的另一件事是,我们不同意UCA0MCTLW的正确值。  您在哪里获得了您的价值?  我会同意设置UC0S16。  但我会使用Table 22-4。 N的分数部分的UCBRSx设置=您  使用0x1000的TRM中的fBRCLK/Baud Rate,然后使用此等式

    UCBRFx = INT ([(N / 16)–INT (N / 16)]×16)

    以确定在何处出现0x20的值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    John P. Morrison,
    感谢您的回复,我不是很熟悉这一UC,为了真诚地告诉您真实情况,我将遵循您的所有建议和考虑。 在这种情况下,您能给我举个例子,或者告诉我做这种改变的正确方法,您能帮我吗?
    提前感谢。
    因此:
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只需下载432驱动程序库,运行UART echo示例,然后从此处开始。 我可以告诉大家,这在MSP432 Launchpad上很好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然!

    我当然可以向你们介绍一些例子。  此处的寄存器级别示例 显示了如何在 寄存器级别设置VCORE,闪存等待状态,将DCO配置为48MHz以及将MCLK设置为使用DCO。

    如果不需要48MHz操作,也可以使用较慢的时钟速度,这样就不需要更改VCORE或Flash等待状态的默认值。

    Keith讲得不错。  此处使用driverlib示例 是一个很好的资源,可能是您最快最简单的实施。  DriverLib具有超级用户友好的API。

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

    您对API的看法当然与我不同。 8^)我不会说"非常"用户友好。

    如果我给他们打分:

    Energia:友好的API

    DriverLib:相对容易使用的英语API。

    注册编程:古咒和困难API。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的朋友,
    我已作出约翰·莫里森建议的改动。 当然,它不会在如此高的频率下工作。
    这只是为了测试,现在我要做一些调整,也许它可以在典型的晶体频率下工作,比如3.2768万