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

MSP430F5529定时器配置

$
0
0

请问怎么用MSP430F5529做出这种效果,就是短按P1.1按键,P1.2所连的灯亮,长按P1.1按键,P1.3所连的灯亮,双击P1.1按键,P1.4所连的灯亮。

这怎么做?  我一直没做出来.......

谢谢大佬,爱你们哦!!!!!!!!


ccs resource explorer Failed to create the part's controls

$
0
0

ccs resource explorer Failed to create the part's controls

烧录问题

$
0
0

我用的是fr5594烧录的时候一直出现弹窗内容如下

Error initializing emulator:
A firmware update is required for the MSP430 Debug Interface (MSP-FET430UIF / MSP-FET / eZ-FET). Click the "Update" button to update the firmware and launch your debug session (this may require several update steps).
我按内容说的点了update,一会后还是会出现这个弹窗

MSP430F6736SPI通讯问题

$
0
0

SPI通讯在使用过程中时钟极性无法设置,空闲时并非高或者低电平,而是由发送寄存器的最后一位决定的,举例如果是0x08,那么接下来没有进行发送的时间里都是低电平,直到下一次发送数据,如果是0x09相反,持续为高电平。

代码如下

SPI设置

// Setup eUSCI_A0
        P2OUT &= ~BIT7;                               // Clear P1.0
        P2DIR |= BIT7;                                // Set P1.0 to output direction
        P2OUT &= ~0x40;                              //LED2on//ss置低
        P1SEL |= BIT2 | BIT3 | BIT6;                  // Set P1.0,P1.2,P1.3,P1.6 to non-IO
        UCA0CTLW0 |= UCSWRST;                         // **Put state machine in reset**
        UCA0CTLW0 |= UCMST  | UCSYNC | UCCKPL | UCMSB ; // 3-pin, 8-bit SPI master
                                    // Clock polarity high, MSB
        UCA0CTLW0 |= UCSSEL_2;                        // SMCLK
        UCA0BRW_L = 0x01;                             // 16MHz
        UCA0BRW_H = 0;                                //
        UCA0MCTLW = 0;                                // No modulation
        UCA0CTLW0 &= ~UCSWRST;                        // **Initialize USCI state machine**

发送在定时器中断中运行

       if (!(UCA1IFG & UCTXIFG)) ;
       UCA1TXBUF =0x08;

用MSP430版IAR装驱动程序库总出现cannot open source file "hw_memmap.h" ,但加入的有

定时器无法进入中断

$
0
0

各位大神,我现在用的是MSP430G2231的芯片,但是在配置定时器时选择时钟时为TACLK,ACLK,INCLK,定时器无法进入中断,我的代码如下:
void timer0_init(void)
{
TA0CTL |= TASSEL_1+TACLR+MC_3+ID_0;

TA0CCR0 = 1024;//

TA0CCTL0 |= CCIE;
_EINT();
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer0_A0(void) //TACCR0中断
{
P1OUT^=BIT6;
}
}
如上代码, TASSEL_1应该是选择ACLK时钟源,但是进不了中断!除此之外,TACLK,INCLK设置为时钟源时,都进不了中断?
不知道什么原因引起?由于以前没接触过TI这款芯片,所以不太熟悉!

MSP432 IIC 标志位不置位,求大神解答

$
0
0

用的官方给的例程,改了地址和数据,程序就会死在一句标志位检查语句

一直死在while里,这是在driverlib.c文件中

while (!BITBAND_PERI(EUSCI_B_CMSIS(moduleInstance)->rIFG.r, UCTXIFG_OFS));

我的程序,如下,死在了标红的语句里。

/* DriverLib Defines */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

/* Standard Defines */
#include <stdint.h>
#include <stdbool.h>
#include <string.h>

/* Slave Address for I2C Slave */
#define SLAVE_ADDRESS 0xD0
#define NUM_OF_REC_BYTES 1

/* Variables */
const uint8_t TXData[] = {0x6B,0x00};
static uint8_t RXData;

/* I2C Master Configuration Parameter */
const eUSCI_I2C_MasterConfig i2cConfig =
{
EUSCI_B_I2C_CLOCKSOURCE_SMCLK, // SMCLK Clock Source
3000000, // SMCLK = 3MHz (default)
EUSCI_B_I2C_SET_DATA_RATE_100KBPS, // Desired I2C Clock of 100khz
0, // No byte counter threshold
EUSCI_B_I2C_NO_AUTO_STOP // No Autostop
};

int main(void)
{
/* Disabling the Watchdog */
MAP_WDT_A_holdTimer();

/* Select Port 1 for I2C - Set Pin 6, 7 to input Primary Module Function,
* (UCB0SIMO/UCB0SDA, UCB0SOMI/UCB0SCL).
*/
MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1,
GPIO_PIN6 + GPIO_PIN7, GPIO_PRIMARY_MODULE_FUNCTION);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0);

MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN1);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN1);

/* Initializing I2C Master to SMCLK at 100khz with no autostop */
MAP_I2C_initMaster(EUSCI_B0_BASE, &i2cConfig);

/* Specify slave address */
MAP_I2C_setSlaveAddress(EUSCI_B0_BASE, SLAVE_ADDRESS);

/* Enable I2C Module to start operations */
MAP_I2C_enableModule(EUSCI_B0_BASE);
MAP_Interrupt_enableInterrupt(INT_EUSCIB0);

// enable RX interrupts
MAP_I2C_enableInterrupt(EUSCI_B0_BASE, EUSCI_B_I2C_RECEIVE_INTERRUPT0);

while (1)
{
RXData=0;

/* Making sure the last transaction has been completely sent out */
while (MAP_I2C_masterIsStopSent(EUSCI_B0_BASE));

/* Send out EEPROM Mock Read Cmd (2 databytes) */
MAP_I2C_masterSendMultiByteStart(EUSCI_B0_BASE, TXData[1]); // Start + 1Byte
MAP_I2C_masterSendMultiByteNext(EUSCI_B0_BASE, TXData[0]); // Poll for TXINT,Send 1Byte
/*---------------------------------------------*/
/* Now we need to initiate the read */
/* Wait until 2nd Byte has been output to shift register */
while(!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG0));

// Send the restart condition, read one byte, send the stop condition right away
EUSCI_B0->CTLW0 &= ~(EUSCI_B_CTLW0_TR);
EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_TXSTT;
while(MAP_I2C_masterIsStartSent(EUSCI_B0_BASE));
EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_TXSTP;
//while(!(EUSCI_B0->IFG & EUSCI_B_IFG_RXIFG0));
//RXData = EUSCI_B0->RXBUF;

//---------------------------------
MAP_PCM_gotoLPM0InterruptSafe();

// Slave should send a single 'R' back
if(RXData != 'R'){
// Error- set P1.0 high
MAP_GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0);
while(1);
}
__delay_cycles(300000); // ~100ms pause between transmissions
}
}

/*******************************************************************************
* eUSCIB0 ISR. The repeated start and transmit/receive operations happen
* within this ISR.
*******************************************************************************/
void EUSCIB0_IRQHandler(void)
{
uint_fast16_t status;

status = MAP_I2C_getEnabledInterruptStatus(EUSCI_B0_BASE);
MAP_I2C_clearInterruptFlag(EUSCI_B0_BASE, status);

/* Receives bytes into the receive buffer. If we have received all bytes,
* send a STOP condition */
if (status & EUSCI_B_I2C_RECEIVE_INTERRUPT0)
{
// One-byte Read
RXData = MAP_I2C_masterReceiveSingle(EUSCI_B0_BASE);
MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2, GPIO_PIN1);
}
}

FET-Pro430 Elprotronic 识别不出com口

$
0
0

安装好Lite FET-Pro430 Elprotronic之后,找不到com口

用的仿真器是MSP-FETFlash Emulation Tool

之前用CCS是可以烧写的,用Lite FET-Pro430 Elprotronic找不到com口

是仿真器不对还是软件安装时没设置好?


串口打印宏定义报错

$
0
0

芯片:MSP430FR6972

IDE:IAR6.30.1

问题描述:

我想使用宏定义的方式使用printf,但是按照下面这种方式一直报警告(

Warning[Pe1665]: concatenation with "down" in macro "DEBUG" does not create a valid token F:\WorkSpace\PW_KSH_C1_V1.0\Src\data_deal.c 550

)

所以想请教一下如何定义才算正确?

#if USE_DEBUG==1

#define DEBUG(format, ...) printf(format,##__VA_ARGS__)
#else
#define DEBUG(format, ...)
#endif

如何提高MSP430 内置温度传感器的测试精度?

$
0
0

如何提高MSP430 内置温度传感器的测试精度?

MSP430F6系列 能否驱动1/8duty 1/4bias的LCD?

$
0
0

430说明书上给的是1/8duty  1/3bias

ADC12最开始的几个采样值不准

$
0
0

芯片:MSP430FR6972

问题描述:

我使用的是ADC+TIM的采样方式,采样间隔约1ms,每次开启采样时,最开始的数据一直不准(大约有80多个不准点,之后就好了),所以请教一下这是什么原因呢?

/* 采样定时器配置 */

void TimerA1_Init(void)
{
TA1CCTL0 = CCIE;
TA1CCR0 = 32; /* 0.9-1ms */
TA1CTL = TASSEL__ACLK | MC__UP; /* ACLK, UP mode */
}

/* ADC配置 */

void MSP_ADC_Config(void)
{
/* 打开相应电源 */
PowerSwitch(VDD_ADC,ENABLE);
PowerSwitch(ADC_BAT,ENABLE);

/* 开启内部参考,Vref=2.5V */
while(REFCTL0 & REFGENBUSY);
REFCTL0 |= REFVSEL_2 | REFON;

/* 开启ADC并设置采样时间 */
ADC12CTL0 = ADC12ON | ADC12SHT0_2 | ADC12MSC;
/* ADC12SC触发采样,序列通道采样, SMCLK/4 */
ADC12CTL1 = ADC12SHP |ADC12SHS_0 | ADC12CONSEQ_1 | ADC12SSEL_3 | ADC12PDIV_1;
/* ADC通道配置: ADC_I->CH0, ADC_BAT->CH13 */
ADC12MCTL0 = ADC12VRSEL_1 | ADC12INCH_0;
ADC12MCTL1 = ADC12VRSEL_1 | ADC12INCH_13 | ADC12EOS;
ADC12IER0 = ADC12IE1;

/* Wait for reference generator to settle */
while(!(REFCTL0 & REFGENRDY));
ADC12CTL0 |= ADC12ENC;
TimerA1_Init();
}

#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer1_A0_ISR(void)
{
ADC12CTL0 |= ADC12SC;
}

#pragma vector=ADC12_VECTOR
__interrupt void MSP_ADC_ISR(void)
{
if(ADC12IV & ADC12IV_ADC12IFG1)
{
Device_Status.Cur_Sampval[Device_Status.Sample_Num++]=ADC12MEM0;
Device_Status.Status_Info.Bat_Vol_B=ADC12MEM1;
/*
这里预留电池低电压处理程序
*/
if(Device_Status.Sample_Num == 20)
{
Device_Status.Full_Buff_Node=0;
Indicator_Task.Handle_Count += 1;
Indicator_Task.Cur_Handle_Flag=1;
#if USE_LP
LPM3_EXIT;
#endif
}
else if(Device_Status.Sample_Num >= 40)
{
Device_Status.Sample_Num=0;
Device_Status.Full_Buff_Node=1;
Indicator_Task.Handle_Count += 1;
Indicator_Task.Cur_Handle_Flag=1;
#if USE_LP
LPM3_EXIT;
#endif
}
}
ADC12IV=0;
}

MSP430F5528IRGCT采用的是高温载带还是低温载带

$
0
0

我采用了MSP430F5528IRGCT,现有一批IC开封后没有在期限内消耗,需要烘烤。我查阅了JEDEC标准后发现载带有高低温载带的区分,具体内容如下:

我想咨询MSP430F5528IRGCT采用的是高温载带还是低温载带?载带可以耐受几度的烘烤条件?

MSP430F5328 JTAG程序调试问题

$
0
0

MSP430F5328我使用 JTAG(MSP-FET430UIF)进行程序调试一开始是正常的,但是用了一段时间之后JTAG就连接不上了,有没有可能执行了不当操作把jtag锁定了 啊?我重新换了一个芯片就正常了,但是一段时间之后又出现了同样的问题。麻烦大家帮忙看下,谢谢!

请问BT-MSPAUDSOURCE Tools Bluetooth and MSP430 Audio开发板(MSP430F5229)的下载器和调试器

$
0
0

大家好:

    我们购买了BT-MSPAUDSOURCE Tools Bluetooth and MSP430 Audio开发板(MSP430F5229), 现在希望购买下载器和调试器;能帮推荐吗?


编程器msp gang下载不了程序 提示vcc is to low

$
0
0

 编程器显示正常 测量有一个电源芯片坏了 更换后故障依旧 有谁知道是什么问题吗 还有他提示的VCC是指的谁的电源?

设备静态电流忽高忽低 休眠电流个别时达到100ua

$
0
0

正常设备是4ua左右  有的莫名会变好  有的会自己升上去 是受什么因素影响?已刷三防胶

关于MSP430FR2311的BSL的擦除问题

$
0
0

MSP430FR2311的BSL开发中,我使用了软件调用BSL的方式。用DSP通过I2C给430传送了某指令,430接收了此指令后便执行跳转BSL的命令。

进入BSL后DSP边给430发送擦除指令。该指令会擦除430中接收DSP指令并执行跳转BSL的部分。

请问,怎样可以使430擦除代码的时候不擦出 跳转到BSL的那部分代码?

MSP430F6638有关ADC通道的问题?

$
0
0

MSP430F6638单片机ADC通道能否同时进行两个通道的转化?当A0通道在转换的同时能否进行A1通道的转化?

CCSV9 库函数

$
0
0

linux 下 CCS怎么添加官方的库函数

Viewing all 3634 articles
Browse latest View live