Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all 3634 articles
Browse latest View live

MSP430FR6043 飞行时间的计算方法

$
0
0

方案提供的计算绝对飞行时间ABS_TOF的方法有4种:

1.Lope

2.Hilbert

3.LopeWide

4.HilbertWide

请问,四种方法具体由什么不同,Lope依赖于接近ratio的峰值很好理解,这和资料上介绍的原理相同。

但Hilbert问什么完全不用包络的ratio,这和资料上介绍的原理有所不同,虽然Hilbert选项效果很好,并没有找到相关的原理介绍。

不知道什么地方有相关资料。


MSP430F247 AD采样问题

$
0
0

Hi TI,

MCU:MSP430F247;使用内部基准2.5V。

问题:当采样电压在1.12~1.15V时,采样值一直保持2047不变。如果采样电压变大或者变小都没有问题,就在这个电压区间的时候,采样值一直固定不变。请问是否有什么建议方法?谢谢~

在硬件电路上Vref参考电压引脚并没有接电容,目前悬空,不知道是不是和这个有联系呢

一个关于MSP430FR2000的RTC问题。希望大佬们能看一下

$
0
0

  最近因为我们小组在做一个项目,在挑选单片机的时候,因为成本和体积考虑。我们选择了MSP430FR2000,可是在编写RTC程序时遇到了问题。

  FR2000单片机我在看手册的时候,上册上明确说了该单片机具有RTC功能 且能通过RTC闹钟的中断唤醒在低功耗模式下的单片机。

  可是当我打开FR2000的头文件时,我发现该头文件在RTC模块这一列只具有一个控制位的寄存器RTCCTL,除了这个就没其他有用的寄存器了,且我发现他不具有其他单片机RTC模块的RTCSEC ,RTCMIN 等放入时间的寄存器。我很疑惑,这款单片机的RTC到底该如何写,希望有用过的能帮帮忙。

cc430f5137 如何降频降电压?

$
0
0

目前的例程是基于simpliciti协议的射频收发,我想在软件层面尽量降低发射时的功耗。 目前想到降低主频,还有电压,我看了数据, 电压最低1.8v对应8mhz频率。

想咨询一下1. 1.8v会不会无法发射?

2.如何操作才能设定1.8v工作电压?

MSP430FR6972定时器输出管脚问题

$
0
0

1、定时器TA0.1 对应的管脚可以是P1.0、P1.6、P7.2、P7.6,这个是怎么设置用哪个管脚的?网上找到的例程都是默认用P1.0的。

2、我想要使用TA3.2(P3.0)来输出个PWM波形,请给个例程。我从TA0或者TA1移植过去的程序都不行,这个管脚没有反应。

MSP -GANG PROGRAMMER 使用问题

FR2512定时器A疑问

$
0
0

测试使用定时器A输出30ms,然后延时100ms,实测结果是输出76ms,延时252ms,这到底是我代码问题还是器件误差就有那么大?

#include "msp430fr2512.h"

//软件延时宏定义
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))

void main(void)
{
//关狗
WDTCTL = WDTPW + WDTHOLD;

//设置各个时钟源
CSCTL0 = 0;
CSCTL1 &= ~DCORSEL_7;
CSCTL1 |= DCORSEL_3; //DCO设定频率为8M
CSCTL4 |= SELMS_0 + SELA_1; //MCLK和SMCLK选择DCO,ACLK选择REFO
CSCTL5 |= DIVS_3 + DIVM_0; //SMCLK用8分频即1M,MCLK用DCO不分频即8M

TA0CTL = TASSEL_2 + TAIE; //TimerA用SMCLK不分频 ,1M
TA1CTL = TASSEL_1 + TAIE; //TimerB用ACLK不分频

//设置I/O口
P1SEL0 = 0;
P1SEL1 = 0;
P2SEL0 = 0;
P2SEL1 = 0;

P1OUT = 0;
P1DIR = BIT0 + BIT1 + BIT2;
P1DIR |= BIT7;

P2OUT = 0;
P2DIR = BIT2;

PM5CTL0 &= ~LOCKLPM5;

_EINT();

for(;;)
{
//输出30ms
TA0CCR0 = 30000;
P1OUT |= BIT1;
P2OUT |= BIT2;
TA0CTL |= MC_1;
LPM1;
P1OUT &= ~BIT1;
P2OUT &= ~BIT2;
//延时100ms
delay_us(100000);
}
}

#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer0_A1(void)
{
switch(__even_in_range(TA0IV,TA0IV_TAIFG))
{
case TA0IV_TACCR1:
LPM1_EXIT;
TA0CTL &= ~MC_3;
TA1CTL &= ~MC_3;
break;
case TA0IV_TACCR2:
LPM1_EXIT;
break;
case TA0IV_TAIFG:
LPM1_EXIT;
TA0CTL &= ~MC_3;
TA0R = 0;
break;
}
}

CCSV6安装后导入例程,编译报CCS gmake:***no rule to make target 'all'

$
0
0

平时使用CCSV5调试DSP C2000系列DSP,一切工作正常。

目前想要开发MSP430FR2XXX系列单片机,发现CCSV5的device里边都没有这个芯片,所以重新安装了CCSV6.2,安装后导入例程后,编译报错,也安装并修改了编译器版本,依旧报错CCS gmake:***no rule to make target 'all'。

请问:

1.CCS V5能开发MSP430FR2XXX系列单片机吗?能否通过安装某些补丁让device里有这个系列的芯片供开发?

2.CCS V6.2报CCS gmake:***no rule to make target 'all',导入例程工程报这个错误,导入再CCSV5下正常调试的工程,也同步安装了编译器,报的错误依旧,请问这个错误怎么解决?


ti isr trap

$
0
0
#include <msp430.h>

/**
 * main.c
 */
/*
 * arch_main.c
 *
 *  Created on: 2019年2月27日
 *      Author: Administrator
 */
#include"sys_init.h"
UINT sysclk_cnt=0;
void main(void)
{
#ifdef VoltageMonitor
    BYTE vollowflag=0;
#endif
    BYTE Redled_sta,Greenled_sta;
    static FRESULT worksta;
    Data_Status filesta;
    system_clk_config();
    mcuio_init();
    worksta=filesystem_init();
    timer_b_config();
    adc12_init();
    __bis_SR_register(GIE);
    start_tb;
    start_adc();
    while(1){
        _nop();
        __bis_SR_register(LPM0_bits+GIE);
        //---------data2flash----------------
        switch(worksta){
                case FR_OK:
                    filesta=datamix(&datamixen);
                    if(Flash_Data_Ready==filesta){
                        worksta=f_write(&fsrc,flashdatabuffer,InFlash_length,&bytewrote);
                        f_sync(&fsrc);
                    }
                    break;
                default:
                    if(!(sysclk_cnt-(sysclk_cnt>>3<<3))){
                        Redled_sta^=0x01;
                        led_sta_sel(LED_Red_1,Redled_sta);
                    }
                    if(datamixen){
                        datamixen=0;
                    }
        }
            //-------AVCC电压监测-----
#ifdef  VoltageMonitor
        if(SVSCTL&SVSFG){
                        vollowflag++;
                        Vol_Monitor_OFF;
                        if(vollowflag>=32){
                            worksta=f_write(&fsrc,flashdatabuffer,InFlash_length,&bytewrote);
                            f_sync(&fsrc);
                            f_close(&fsrc);
                            f_mount(0,0);
                            vollowflag=0;
                            BoardPwr_OFF;
                            while(1);
                        }
                        Vol_Monitor_ON;
        }
#endif
    }
}
// Timer B0 interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(TIMERB0_VECTOR))) Timer_B (void)
#else
#error Compiler not supported!
#endif
{
    sysclk_cnt++;
    if(sysclk_cnt>=1025){
        sysclk_cnt=1;
    }
    __bic_SR_register_on_exit(LPM0_bits);     // Clear LPM0, SET BREAKPOINT HERE
}
上面的程序总是运行一段时间就进入isr_trap_asm,什么原因?
定时器设定为1/16秒中断一次

No USB FET was found

$
0
0

型号:MSP430F5529

连接上电脑的时候提示MSP Tools Driver已设置并准备就绪

使用CCS调试的时候显示No USB FET was found

查看设备管理器发现也没有识别出设备

使用的是CCS8.3,安装之后设置都是默认的

C:/Windows/system32/drivers/里usbser.sys也是存在的

求解决,谢谢

MSP430F2418串口接收异常

$
0
0

你好

在进行MSP430F2418串口接收时,接收300字节。会随机出现中间少一个字节,

下面是串口初始化:

UCA0CTL1 |= UCSWRST;
UCA0CTL1 |= UCSSEL_2; ////SMCLK

UCA0BR0= 0X22;
UCA0BR1 = 0x00; 
UCA0MCTL = 0x00;

UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UCA0ABCTL |= UCABDEN;
P3SEL |= 0X30;
UC0IE |= UCA0RXIE;

msp430fr6047的Capacitive应用

MSP430FR系列静态功耗增大问题

$
0
0

        在 使用MSP430FR系列时,当用手触摸其晶振引脚时,芯片的静态功耗会增大,其中MSP430FR6972增大170uA,MSP430FR2433增大15uA ,MSP430FR6047增大30uA ,MSP430FR4152会复位 ,其 时钟频率也会发生变化,除非重新进行初始化或冷启动,否则依然存在这种现象,换过32.768的晶振后,仍然存在这种问题,请问如何解决这种问题?

MSP430FR6972

MSP430F247串口通信调试问题

$
0
0

串口调试过程中,在接收函数中设置断点,通过串口调试助手发送但直接响应断点,发送多个字节,只有最后一个字节响应断点,这是什么问题?中断响应不是一帧有多少个字节就响应多少次中断吗?还是我设置的问题。程序的设置如下:

时间设置为内部DCO 8M:

WDTCTL = WDTPW + WDTHOLD; //关闭看门口
BCSCTL1 = CALBC1_8MHZ;
DCOCTL = CALDCO_8MHZ;
BCSCTL2 |= SELM_2 + SELS; //MCLK = SMCLK = XT2

串口0初始化:

void initTR0(void) //串口A0为232接口,读取测距机数据
{
P3SEL |= 0xF0; // P3.4,5 = USART0 TXD/RXD
UCA0CTL1 |= UCSSEL_2;          //串口时钟选择SMCLK
UCA0BR0 = 0xA0;                      //8M/19200 417 ,地位
UCA0BR1 = 0x01;                      //高位
UCA0MCTL = UCBRS0;             //修正值
UCA0CTL1 &= ~UCSWRST;      //Initialize USART state machine
UC0IE |= UCA0RXIE;                 //开启串口0接收中断
}

串口接收中断响应:

#pragma vector=USCIAB0RX_VECTOR
__interrupt void usart0_rx (void)
{
//while(!(IFG2 & UCA0TXIFG)); //USCI_A0 发送寄存器准备好了?
//UCA0TXBUF = UCA0RXBUF; // 发送寄存器将接收的数据发送出去

if(Flag == 0)
{
if(UCA0RXBUF == 0x44) //判断是帧头读取数据
{
laserData[0] = UCA0RXBUF;
Flag = 1;
m = 1;
}
}
else
{
laserData[m] = UCA0RXBUF;
m++;
if(12 == m)
{
Flag = 0;
m = 0;
}
}
}

在主程序中开总中断:

_EINT(); //开总中断


MSP430G2553寄存器配置方式,ACLK作为定时器Timer0的时钟源

$
0
0

各位工程师,你们好~

我现在使用MSP430G2553型号的单片机,外接32768hz。选择ACLK作为定时器Timer0的时钟源,发现无法使用,向您咨询一下使用方法和寄存器配置方式。

我的配置如下:

(1)IO口配置

P2DIR = 0xc2;

P2SEL = 0xc0;

P2SEL = 0xc0;

(2)定时器配置

TA0CTL = TASSEL_1 + ID_3 + MC_2; 

(3)时钟配置

BCSCTL3 |= LFXT1S_0;

之后我根据TI Resource Explorer例程,配置了io口,但仍然无法使用,请问是否需要配置BCSCTL3?

希望收到回复,谢谢~

关于TIRTOS 问题

$
0
0

最近项目上用到TIRTOS,看demo code有一些疑问:

我看有些demo 上跑TIRTOS 用到: pthread_create()函数(疑问点: 为什么TIRTOS会用到线程创建函数???), 有一些用到: task_create()函数, 这两个函数有什么具体的区别吗?

在用Task_create()函数创建printf任务时,为什么任务只执行了一次(只创建了一个任务)?? 是有什么需要注意的地方吗?感觉和FreeRTOS中Task create()函数有点出入呀!!!

关于MSP430G2553的最高采样率

$
0
0

MSP430G2553可以提供的最高时钟频率时16MHZ,ADC10的采样率=1/(采样时间+转换时间+同步时间),那么最高采样率应该是16MHZ/(4+13+1) = 888.889khz呀,但实际使用时却只有450khz,想问下为啥,还有MSP430G2553的最大采样率

請問MSP430FR5969 FR5994 FR6989 開發板原本有RTOS嗎

$
0
0

我想問我們一般程序用這些開發板

開發板本身有無enable RTOS?

我创建CCS工程时,为什么没有launch文件,之前可以用的工程都有launch文件

Viewing all 3634 articles
Browse latest View live