对MSP430F5438的时钟及uart配置

对MSP430F5438的时钟及uart配置

在使用的过程中,一直认为比较简单,也一直没有深究,忽然这几天卡壳了,出现问题是操作UART发送出的数据给232显示,并不是想得到的数据。这里涉及了两个地方,一是时钟配置,二是对UART的配置。

时钟配置

需求:考虑到功耗及使用场景,MCLK=2M,SMCLK=1M,ACLK=32768

    P7SEL |= BIT0 + BIT1;	//开XT1
    
    __bis_SR_register( SCG0 );                // Disable the FLL control loop
    UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
    UCSCTL1 = DCORSEL_2;                      
    UCSCTL2 = FLLD_1 + 60;                    // Set DCO Multiplier for 2MHz
    UCSCTL4 = SELM_4 + SELA_0 + SELS_4; //MCLK =MCLK =DCO,ACLK=XT1
    UCSCTL5 = DIVS_1;           //
    __bic_SR_register( SCG0 );                // Enable the FLL control loop
        
  // Worst-case settling time for the DCO when the DCO range bits have been  
  // changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx  
  // UG for optimization.  
  // 32 x 32 x 2 MHz / 32,768 Hz = 62500 = MCLK cycles for DCO to settle  
  __delay_cycles(62500);

    while ( SFRIFG1 & OFIFG ) //??? OFIFG,XT1OFFG ,DCOFFG
    {
        UCSCTL7 &= ~( XT1LFOFFG + DCOFFG );
        SFRIFG1 &= ~OFIFG;
    }

对以上代码关键点的说明:

DCORSEL_2:这个选择是根据需要的频率来确定的,根据不同的选择会提供不出的电压,用来供给输出需要的频率。这里需要生成的频率能包含需要的频率,低了达不到,高了就超过了,在2M的情况下,使用2及3都是可以满足的。

FLLD_1+60:这里是对FLL的分频,默认为2,在设置为1的时候不分频,则直接使用了FLL的频率,默认参考的是REFO,典型值为32768Hz,所以这里的计算可以简化为 (N+1)*32768=2M,此处使用的N为60,值为(60+1) * 32768=1998848

DIVS_1:对SMCLK进行2分频,在上一行中配置了源,默认的也是这样的。

延时

此处来源于源码,并且上面有计算公式,可以参考

以上代码不熟悉的可以查文档,需要修改的部分再进行扩展。如:要改用1048576的频率,将60改为63即可。需要注意的是,这是十进制的值,不是十六进制。

UART

这里参数的配置,可以参阅手册412页的表格,需要计算的也有一个简单的分工。

需要注意的是有一个过采样的说法,即UCOS16,在表格中也对是不是过采样的参数进行了区分。在通常情况下,波特率的分频值不是整数,所以是由分频器和调制器生成。在低频模式下(非过采样),使用BRx和BRSx进行控制;在过采样的模式下,则BRx和BRFx进行控制。

过采样,是为了保证数据正确采用的多次采样处理的一种方式。

最后说一句:我出现的问题,UART中的分频值,一直没在意数字的前面有个0x。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MSP430F5529是一款低功耗微控制器,它支持多种串口通信协议,其中包括UARTUART是一种异步串行通信协议,它可以在不需要时钟同步的情况下进行数据传输。在MSP430F5529上,我们可以使用内置的UART模块来实现串口通信。具体来说,我们需要配置UART的波特率、数据位、停止位和校验位等参数,然后使用相应的寄存器来发送和接收数据。在程序中,我们可以使用中断或轮询方式来处理UART的数据传输。总的来说,MSP430F5529的UART模块是一种非常方便和实用的通信方式,可以广泛应用于各种嵌入式系统中。 ### 回答2: MSP430F5529是一款计算能力极强的微控制器,它集成了UART串口通信模块,在工业控制、通信、数据采集等领域得到了广泛应用。 在MSP430F5529中,UART是通过P3.3和P3.4两个引脚实现的,其中P3.3被连接到微控制器的TXD端口,P3.4被连接到微控制器的RXD端口。通过这两条线路实现传输数据。 在使用MSP430F5529进行串口通信时,我们需要先确定串口的通信参数,包括波特率、数据位、停止位和奇偶校验位。这些参数需要跟接收方的串口进行匹配,以确保正常通信。 在编程实现串口通信时,需要使用相应的库函数。例如,在使用CCS(Code Composer Studio)编写程序时,可以使用stdio.h中定义的函数进行串口输出和输入。通过调用这些库函数,可以实现向终端输出数据、从终端输入数据、使能和禁用串口中断等操作。 在程序设计中,需要注意串口通信具有阻塞和非阻塞两种方式。在阻塞式串口通信中,每次通信需要等待接收方响应后才能进行下一步操作,而在非阻塞式串口通信中,程序可以同时处理多个任务,不必等待接收方响应。 总之,MSP430F5529串口通信是一项重要的功能,它可广泛应用于传感器数据采集、工业监控等领域,为现代化工业控制提供了有力支持。 ### 回答3: Msp430f5529是一款32位超低功耗微控制器,它集成了多个外设模块,包括内部flash、RAM、通用串行总线、模拟数字转换器、定时器、增量式编码器、通用输入/输出、以太网和USB接口等,可以极大的满足芯片应用的需求。 串口通信是单片机常用的通信方式之一,Msp430f5529支持UART通信,可以通过程序控制来实现串口通信。UART是一种异步串行通信方式,它采用一对通讯线(发送线Tx和接收线Rx)在两个设备之间传输数据。Msp430f5529串口通信可以使用UART0,UART0是基于超级IO和PPB总线技术的高速UART,它需要配置引脚和波特率等参数。 在Msp430f5529的程序中,首先需要使用寄存器配置UART0引脚,将Tx和Rx分别配置为输出和输入,然后需要设置UART0的波特率,可以根据通信要求设置合适的波特率值。接下来可以使用中断或轮询方式来实现数据的发送和接收。 在数据发送方面,Msp430f5529使用UART0发送数据可以通过向UCA0TXBUF寄存器写入数据来实现,数据将会通过Tx引脚发送出去。在数据接收方面,Msp430f5529使用UART0接收数据可以通过读取UCA0RXBUF寄存器来获取数据,数据将会通过Rx引脚接收进来。 总之,Msp430f5529串口通信UART的实现需要对引脚和波特率等参数进行配置,以及使用中断或轮询方式来实现数据的发送和接收。通过串口通信,可以实现单片机与外部设备之间的数据传输,方便实现各种应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值