-
非常谢谢!
-
谢谢!
-
你好!我想问一下,如果我将430AD转换后的数据存到铁电存储器里,整个速度最大能达到多少啊?谢谢!
-
好的,谢谢!
-
非常感谢!对我还是很有价值的~
-
非常感谢您的帮助!!
有个问题“SHx为默认的0, 对应的N值为4”,为什么是4,不是N=2的SHx次方吗?如果SHx=2,N=多少啊?望指点下,谢谢!
-
谢谢你的建议,我用片内Flash存储数据,在RAM中运行是想提高Flash的速度,这样能提高吗?怎样才能提高Flash的速度?望指点下,非常感谢!!
-
非常感谢!那我再看看430资料
-
再请教你个问题,关于AD采样速度的,资料上说MSP430F149 AD采样速度高达200kbit/s,这个采样速度是指什么啊?是采样+转换的速度吗?我现在用8MHz作为ADC12CLK,系统主时钟也是8M,怎么设置出最高的采样速度?能提供AD设置代码最好了:) 非常感谢!!!
-
问题解决,谢谢大家!单片机AD出问题了
-
问题解决了,单片机内部AD出问题了,换了个单片机就可以了,谢谢大家的帮助!
-
谢谢!现在不管给电压信号还是不给信号AD转换出来的值都基本在2.2V左右,这是怎么回事?
-
谢谢!我试下
-
麻烦帮忙看一下,还有一个问题,程序里AD转换速率是多少啊?我有点不懂,这样设置对吗?多谢!!
#include
#include "BoardConfig.h"
void PutString(uchar data)
{
while (!(IFG1 & UTXIFG0)); //等待发送寄存器为空
TXBUF0 = data;
}
void int_clk(void)
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELM1+SELS+DIVS_3; //MCLK 8M and SMCLK 1M
do
{
IFG1 &= ~OFIFG; //清除振荡错误标志
for(i = 0; i < 100; i++)
_NOP(); //延时等待
}
while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待
IFG1&=~OFIFG;
}
void InitUART(void)
{
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
ME1 |= URXE0 + UTXE0; // Enable USART0 T/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = smCLK
UBR00 = 0x36; // 1M/19200
UBR10 = 0x00; //
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
}
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
int_clk();
InitUART();
P6SEL = 0x08; // Enable A/D channel inputs
ADC12CTL0 = ADC12ON+MSC+SHT0_3; // Turn on ADC12, extend sampling time
// to avoid overflow of results
ADC12CTL1 = ADC12SSEL_2+CSTARTADD_3+SHP+CONSEQ_3; // Use sampling timer, repeated sequence
ADC12MCTL3 = INCH_3+EOS; // ref+=AVcc, channel = A0
ADC12CTL0 |= ENC; // Enable conversions
ADC12CTL0 |= ADC12SC; // Start conversion
/*启动ADC*/
ADC12CTL0 |= ENC;
ADC12CTL0 |= ADC12SC; //启动ADC
PutString( ADC12MEM3);
}
-
晶振没有起振,然后就解决了^_^
-
:congratulate: 问题已经解决,非常感谢你的帮助!
-
谢谢你的帮助,能帮我看下我的程序吗?看看有什么问题
#include
#include "BoardConfig.h
uint *Flash_ptr; // Flash pointer
unsigned int i;
void flash_write(void)
{
while(FCTL3 & BUSY);
FCTL2 = FWKEY + FSSEL0 + FN4+ FN1+ FN0; // MCLK/20 for Flash Timing Generator
Flash_ptr = (uint *) 0x2080; // Initialize Flash pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY;// Clear Lock bit
*Flash_ptr = 0; // Dummy write to erase Flash segment
FCTL1 = FWKEY + WRT;
}
void int_clk(void)
{
BCSCTL1&=~XT2OFF; //打开XT振荡器
do
{
IFG1 &= ~OFIFG; //清除振荡错误标志
for(i = 0; i < 100; i++);
_NOP(); //延时等待
}
while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待
BCSCTL2|=SELM_0; //MCLK 8M
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; //关狗
int_clk();
flash_write();
while((FCTL3&BUSY)==BUSY) ;//等待FLASH存储器完成操作
for(i=0;i
-
谢谢你的帮助,能帮我看下我的程序吗?看看有什么问题#include <msp430.h>#include "BoardConfig.huint *Flash_ptr; // Flash pointerunsigned int i;void flash_write(void){ while(FCTL3 & BUSY); FCTL2 = FWKEY + FSSEL0 + FN4+ FN1+ FN0; // MCLK/20 for Flash Timing Generator Flash_ptr = (uint *) 0x2080; // Initialize Flash pointer FCTL1 = FWKEY + ERASE; // Set Erase bit FCTL3 = FWKEY;// Clear Lock bit *Flash_ptr = 0; // Dummy write to erase Flash segment FCTL1 = FWKEY + WRT; }void int_clk(void){ BCSCTL1&=~XT2OFF; //打开XT振荡器 do { IFG1 &= ~OFIFG; //清除振荡错误标志 for(i = 0; i < 100; i++); _NOP(); //延时等待 } while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待 BCSCTL2|=SELM_0; //MCLK 8M }void main( void ){ WDTCTL = WDTPW + WDTHOLD; //关狗 int_clk(); flash_write(); while((FCTL3&BUSY)==BUSY) ;//等待FLASH存储器完成操作 for(i=0;i<8;i++) { *Flash_ptr=0x30; // Move results; Flash_ptr++; } FCTL1 = FWKEY; // Clear WRT bit FCTL3 = FWKEY + LOCK; // Reset LOCK bit _EINT();}这个程序在开发板上可以写入Flash8个0030,但是在我做的板子上就不行啊