历史上的今天
返回首页

历史上的今天

今天是:2025年01月03日(星期五)

正在发生

2020年01月03日 | MSP432开发板串口调试

2020-01-03 来源:eefocus

拿到MSP432P401R评估板v1.0(这个请注意一下,目前在德州仪器官网上找到的硬件原理图是v2.0,v1.0的串口所在的引脚是RXD,TXD引脚),先将串口调试好,便于下一步工作的展开。首先,查看TI提供的代码例子,这个例子就在TI的MSPWare代码包内。注释如下:


//******************************************************************************


//  MSP432P401 Demo - eUSCI_A0 UART echo at 9600 baud using BRCLK = 12MHz


//


// Description: This demo echoes back characters received via a PC serialport.


//  SMCLK/DCO is used as a clock source and the device is put in LPM3


//  Theauto-clock enable feature is used by the eUSCI and SMCLK is turned off


//  when theUART is idle and turned on when a receive edge is detected.


//  Note thatlevel shifter hardware is needed to shift between RS232 and MSP


//  voltagelevels.


//


//  Theexample code shows proper initialization of registers


//  andinterrupts to receive and transmit data.


//  To testcode in LPM3, disconnect the debugger.


//


// 


//


//               MSP432P401


//            -----------------


//        /||                 |


//          ||                 |


//         --|RST              |


//           |                 |


//           |                 |


//           |     P1.3/UCA0TXD|----> PC(echo)


//           |     P1.2/UCA0RXD|<---- PC


//           |                 |


//


//   Wei Zhao


//   TexasInstruments Inc.


//   October2015 (updated) | June 2014 (created)


//   Builtwith Code Composer Studio V6.0


//******************************************************************************


从以上信息我们可以看出,此段例程所要做的事情就是将板载串口配置成9600波特率工作的串口,并原样送回我们发送进去的数据。从示意图中我们可以看出,我们只需要一对收发线即可完成本实验。接下来分析其源代码。


#include "msp.h"


int main(void)


{


  WDTCTL =WDTPW | WDTHOLD;               // Stopwatchdog timer


 


  CS->KEY= 0x695A;                        //Unlock CS module for register access


  CS->CTL0= 0;                            // Resettuning parameters


  CS->CTL0= CS_CTL0_DCORSEL_3;                   //Set DCO to 12MHz (nominal, center of 8-16MHz range)


                                         //Select ACLK = REFO, SMCLK = MCLK = DCO


  CS->CTL1= CS_CTL1_SELA_2 | CS_CTL1_SELS_3 | CS_CTL1_SELM_3;


  CS->KEY= 0;                             // LockCS module from unintended accesses


 


  //Configure UART pins


  P1SEL0 |=BIT2 | BIT3;                  // set2-UART pin as second function


 


 __enable_interrupt();


 NVIC->ISER[0] = 1 << ((EUSCIA0_IRQn) & 31); // EnableeUSCIA0 interrupt in NVIC module


 


  //Configure UART


  UCA0CTLW0|= UCSWRST;


  UCA0CTLW0|= UCSSEL__SMCLK;             // PuteUSCI in reset


  // BaudRate calculation


  //12000000/(16*9600) = 78.125


  //Fractional portion = 0.125


  // User'sGuide Table 21-4: UCBRSx = 0x10


  // UCBRFx =int ( (78.125-78)*16) = 2


  UCA0BR0 =78;                           //12000000/16/9600


  UCA0BR1 =0x00;


  UCA0MCTLW= 0x1000 | UCOS16 | 0x0020;    //注意这一行的设定


 


  UCA0CTLW0&= ~UCSWRST;                  //Initialize eUSCI


  UCA0IE |=UCRXIE;                       // EnableUSCI_A0 RX interrupt


 


  __sleep();


 __no_operation();                      // For debugger


}


 


// UART interrupt service routine


void EUSCIA0_IRQHandler(void)


{


    if(UCA0IFG & UCRXIFG)


    {


     while(!(UCA0IFG&UCTXIFG));


     UCA0TXBUF = UCA0RXBUF;


     __no_operation();


    }


}


我们首先粗略地研究一下这段测试代码,忽略前半部分关于时钟设置的内容,检查我标记的注意行。UCA0MCTLW0寄存器的设定在芯片TechnicalReference Manual的745页,例程中基本是使用默认串口配置。串口通信波特率已经在前面代码中设定为9600。看明白了上述内容,就掌握了这块开发板串口的基本内容,有精力可以继续探索一下芯片手册,尝试串口的其他功能。重要提示,不要使用盗版ghost win7,这样会导致xds110板载调试器的驱动安装失败。

推荐阅读

史海拾趣

福斯特(FIRST)公司的发展小趣事
如果怀疑某个传感器或控制单元故障,可以尝试替换测试以确认问题所在。
巴丁微公司的发展小趣事

深圳市巴丁微电子有限公司,简称巴丁微,自创立之初便专注于高性能模拟集成电路的研发与销售。公司的创始人及核心团队由一群在集成电路行业拥有丰富经验的专家组成,他们看中了电子行业的巨大潜力,决心以技术创新为驱动力,推动模拟集成电路的发展。

在创立初期,巴丁微面临着资金短缺、市场竞争激烈等诸多挑战。然而,凭借着对技术的深刻理解和不懈追求,巴丁微成功研发出了一系列具有竞争力的产品,并逐渐在电机驱动和电源管理等电子领域获得了市场认可。

Hitachi Chemical Co America Ltd公司的发展小趣事

近年来,巴丁微在电子行业的发展取得了显著成就。在近千家参评企业中,巴丁微脱颖而出,成功入选2023粤港澳大湾区科创榜专精特新标杆企业TOP100榜单。这一荣誉的获得,不仅是对巴丁微技术实力和产品质量的认可,也反映了公司在行业内的领先地位和影响力。

这一荣誉的取得,为巴丁微未来的发展奠定了坚实的基础。公司将继续秉承创新引领、协同发展的理念,不断提升技术水平和产品质量,为电子行业的发展贡献更多力量。

正泰公司的发展小趣事

为了在全球市场上保持领先地位,正泰建立了北美、欧洲、亚太等三大全球研发中心,并与清华大学、上海交大等国内外知名院校、机构展开合作,探索“产学研”融合模式。通过整合全球创新资源,正泰在智能电网、新能源电车充电设施等前沿领域取得了一系列创新进展。这种全球研发体系的建立,不仅提升了公司的研发能力,也增强了公司的市场竞争力。

Box Enclosures公司的发展小趣事

随着国内市场的逐渐饱和,Box Enclosures公司决定将目光投向海外市场。公司制定了一系列国际化战略,包括参加国际电子展会、建立海外销售网络等。经过几年的努力,Box Enclosures的产品逐渐打入国际市场,赢得了众多海外客户的青睐。这一国际化战略为公司带来了更广阔的发展空间。

Ferroxcube公司的发展小趣事

随着全球电子行业的竞争日益激烈,Ferroxcube公司意识到,要想保持领先地位,就必须不断创新。于是,公司决定投入巨资建立一个新的研发中心,专注于磁性元件的前沿技术研究。

研发中心的建立吸引了大批优秀的科研人才加入Ferroxcube。在新的研发团队的带领下,公司相继推出了多款具有自主知识产权的新型磁性元件,这些元件在性能、稳定性和可靠性方面都达到了行业领先水平。

其中一款名为“XX磁芯”的产品,凭借其超高的磁导率和极低的损耗,在市场上引起了轰动。这款产品不仅被广泛应用于各类电子设备中,还成为了许多高校和科研机构的研究对象。Ferroxcube因此成为了行业内技术创新的佼佼者。

问答坊 | AI 解惑

浅谈PCB敷铜的“弊与利”

敷铜作为PCB设计的一个重要环节,不管是国产的青越锋PCB设计软件,还国外的一些Protel,PowerPCB都提供了智能敷铜功能,那么怎样才能敷好铜,我将自己一些想法与大家一起分享,希望能给同行带来益处。 所谓覆铜,就是将PCB上闲置的空间作为基准面, ...…

查看全部问答>

发个qtopia编程的要点

最近在做linux+qte 在arm平台上的界面显示,由于周围 几乎没有做 这块的,qt学习起来相当吃力, 这个是qtopia部分一些精华 要点 分析,看后很受启发…

查看全部问答>

P430颅内出血检测设备的研制策略

P430颅内出血检测设备的研制策略1 引言 在中国有许多因创伤性颅脑损伤的患者急需抢救,但相当一部分颅内出血患者因未能及时诊断,延误了抢救和治疗时机.因而出现脑血肿或脑疝后压迫脑组织.使脑干和脑实质受到不可逆转的损伤。近红外颅内出血检测 ...…

查看全部问答>

UBS to RS232 转接线(PL-2303HX)的特性及应用电路

本帖最后由 paulhyde 于 2014-9-15 09:20 编辑 1.USB转串口线:   PROLIFIC推出了USB TO 类RS232接口转换芯片PL-2303HX,PL-2303HX可完美的应用于PDA、Modem、GPS、手机、数码相机、读卡机等与PC机的通讯电缆上,实际上很多手机的USB数据线就是 ...…

查看全部问答>

这样压缩X曲线的坐标

绘制图形时,有时需要压缩X轴但Y轴不变,我绘图是先绘制到设备上再拷贝到绘图控件上的,请问高手该这么解决…

查看全部问答>

wince中dll驱动加载后马上卸载了 ,如何解决

wince启动信息: Loaded symbols for \'E:\\WINCE420\\PUBLIC\\DIRVERTEST\\RELDIR\\EMULATOR_X86DEBUG\\SCANDLL.DLL\' Unloaded symbols for \'E:\\WINCE420\\PUBLIC\\DIRVERTEST\\RELDIR\\EMULATOR_X86DEBUG\\SCANDLL.DLL\' 可以发现SCANDLL. ...…

查看全部问答>

isa总线 编程的问题

要作的一个题目是PC104总线上对一个PPGA板子进行控制,读写寄存器控制FPGA, 不知道怎么写啊,有没有哪位大虾帮帮阿。 谢谢了…

查看全部问答>

谁能给提供一个nandflash的ECC校验代码?

                                  …

查看全部问答>

借人气寻一chip;

功能就是把19 v 稳压到3.3v 或3v, 给430 提供电源,情有经验的多说说几颗chip 型号 ,需要贴片的。 谢谢。…

查看全部问答>

在keill中模拟时有时候计算数值哪里出错,纠结很久了,求助

code unsigned  int adc[]={228,221,213,204,194,183,172,160,147,135,122,110,99,88,78,69,61,54,48,42,38,33,29,26,23,20,18,16,14,13,11 };code unsigned int tem[]={0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,1 ...…

查看全部问答>