Other Parts Discussed in Thread: MSP430F5659
我目前正在将 Code Composer 与嵌入式 MSP430F5659一起用于固件开发。 我的应用程序需要通过 UART (USCI A2)接口以115200波特率与主机可靠通信。
在这种波特率下,UART 会丢弃字符,且不会与主机保持同步。 我需要知道建议用于 USCI A2 UART 的可靠波特率是什么,以及在8个数据位,无奇偶校验,1个停止位为该波特率设置参数和相关控制寄存器是什么。
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.
Other Parts Discussed in Thread: MSP430F5659
我目前正在将 Code Composer 与嵌入式 MSP430F5659一起用于固件开发。 我的应用程序需要通过 UART (USCI A2)接口以115200波特率与主机可靠通信。
在这种波特率下,UART 会丢弃字符,且不会与主机保持同步。 我需要知道建议用于 USCI A2 UART 的可靠波特率是什么,以及在8个数据位,无奇偶校验,1个停止位为该波特率设置参数和相关控制寄存器是什么。
使用计算器计算参数。 全速(MCLK 24 MHz) UART 的 F5xx 可高达6 Mbps。 115200应该是1 MHz MCLK 的问题。
有可能。 因此,我想对 UART 进行编程,以获得较慢的波特率,但我不确定应该设置哪些参数和寄存器,以获得9600和9200波特率的值。
以下代码对11520,5760,38400波特率起作用,为 UCA2BRW 设置了正确的值。 但是,它不适用于9600和19200波特率:
作废 SerialUART::SetupUART (作废)
{
InfoAvail = 0;
txoverflow =0;
_DINT();
UCA2CTL1 |= UCSWRST;//将 USCI_A2置于重置状态
//注:对于 msp430f5x 系列,CTL 寄存器应以两个字节的形式访问。
UCA2CTL0 = 0;// UART 模式(8,n,1,lsb)
UCA2CTL1 = UCSSEL__SMCLK + UCRXEIE + UCBRKIE + UCSWRST;
UCA2BRW = 9;//波特率= 115200 //对于1.048 MHz
//UCA2BRW = 18;//波特率= 57600 //对于1.048 MHz
//UCA2BRW =27;//波特率=38400 // 1.048 MHz
//UCA2BRW = 3;//波特率= 19200 // 1.048 MHz
//UCA2BRW = 6;//波特率= 9600 //对于1.048 MHz
UCA2MCTL = 0x0002;//这适用于115200,57600,38400
UCA2CTL1 &=~(UCSWRST);//将 USCI_A2置于运行状态
UCA2IE |= UCTXIE + UCRXIE;//启用 TX-& RX-中断
_EINT();
}
感谢你的回复。 遗憾的是,表39-5中显示的寄存器与 Code Composer 提供的 msp430f5659.h 中的定义不匹配。
以下寄存器可从报头文件中获得,我需要知道其中哪一个寄存器应设置为支持9600和19200波特率的值:
/******************************
* USCI A2
《国家安全与发展报告》 /
#define __MSP4_SHA_USCI_A2__/*定义,显示模块可用*/
#define __MSP4A_BASEADDRESS_USCI_A2__ 0x0640
#define USCI_A2_BASE __MSP4P_BASEADDRESS_USI_A2
SFR_16BIT (UCA2CTLW0);/* USCI A2控制字寄存器0 */
SFR_8位(UCA2CTLW0_L);/* USCI A2控制字寄存器0 */
SFR_8位(UCA2CTLW0_H);/* USCI A2控制字寄存器0 */
#define UCA2A@CTL1 UCA2CTLW0_L /* USCI A2控制寄存器1 */
#define UCA2CTL0 UCA2CTLW0_H /* USCI A2控制寄存器0 */
SFR_16BIT (UCA2BRW);/* USCI A2波特率0 */
SFR_8位(UCA2BRW_L);/* USCI A2波特率0 */
SFR_8位(UCA2BRW_H);/* USCI A2波特率0 */
#define UCA2BR0 UCA2BRW_L/* USCI A2波特率0 */
#define UCA2BR1 UCA2BRW_H /* USCI A2波特率1 */
SFR_8位(UCA2MCTL);/* USCI A2调制控制*/
SFR_8位(UCA2STAT);/* USCI A2状态寄存器*/
SFR_8位(UCA2RXBUF);/* USCI A2接收缓冲区*/
SFR_8位(UCA2TXBUF);/* USCI A2传输缓冲区*/
SFR_8位(UCA2ABCTL);/* USCI A2 LIN 控制*/
SFR_16BIT (UCA2IRCTL);/* USCI A2 IrDA 传输控制*/
SFR_8位(UCA2IRCTL_L);/* USCI A2 IrDA 传输控制*/
SFR_8位(UCA2IRCTL_H);/* USCI A2 IrDA 传输控制*/
#define UCA2IRTCTL UCA2IRCTL_L /* USCI A2 IrDA 传输控制*/
#define UCA2IRRCTL UCA2IRCTL_H /* USCI A2 IrDA 接收控制*/
SFR_16BIT (UCA2ICTL);/* USCI A2中断启用寄存器*/
SFR_8位(UCA2ICTL_L);/* USCI A2中断启用寄存器*/
SFR_8位(UCA2ICTL_H);/* USCI A2中断启用寄存器*/
#define UCA2IE UCA2ICTL_L /* USCI A2中断启用寄存器*/
#define UCA2IFG UCA2ICTL_H /* USCI A2中断标志寄存器*/
SFR_16BIT (UCA2IV);/* USCI A2中断向量寄存器*/
在115200,57600和38400上工作前显示的代码样本 I 提供了与 UCA2BRW 一起使用的正确值。 但是,它在19200和9600中不起作用。