TI中文支持网
TI专业的中文技术问题搜集分享网站

Msp430 i2041 ADC采样问题,分频如何操作。

如下是我ADC分组采样代码,请教下如何做到1/2/4/8hz

SD24CTL = SD24REFS; // Internal ref
SD24CCTL0 |= SD24GRP | SD24DF |SD24OSR_256|SD24OSR1; // Group with CH1
SD24INCTL0 |= SD24INCH_6;
SD24CCTL1 |= SD24GRP | SD24DF |SD24OSR_256|SD24OSR1; // Group with CH2
SD24CCTL2 |= SD24IE | SD24DF |SD24IFG |SD24OSR_256|SD24OSR1; // Enable interrupt

灰小子:

分频?楼主的意思是采样频率设置为1/2/4/8hz吗?

Susan Yang:

您是指采样时钟分频还是其他?

user5322468:

回复 灰小子:

是的,应该如何操作呀,我用例子里面的sd24,没有效果

user5322468:

回复 Susan Yang:

采样频率,用sd24不知道,如何完成1/2/4/8HZ的采样频率。

灰小子:

回复 user5322468:

一般大家都是用定时器定时需要的采样间隔,到了时间就触发采样

user5322468:

回复 灰小子:

嗯,我已经完成了分频采样。谢谢。但是我出现了flash擦除问题,按照文档i2041中,1000-13ff是闪存区域。13c0到13ff是Tlv等信息。
我在程序中使用了的写函数是,其中的 擦除 FlashCtl_eraseSegment(Flash_ptr);是一段。运行导致tlv被擦掉,程序一直死在
/* Calibrate REF */
REFCAL1 = *(TLV_address_for_parse + TLV_CAL_REFCAL1);REFCAL0 = *(TLV_address_for_parse + TLV_CAL_REFCAL0);

我现在准备把擦除函数换成按照长度去擦除FlashCtl_performEraseCheck(uint8_t *flash_ptr, uint16_t numberOfBytes);

flash却无法写入到内存中,请问我上述的分析对吗?应该如何处理?

void write_InfoSeg(uint8_t* buf,uint16_t len) {uint8_t *Flash_ptr;// Flash pointerunsigned int i;
Flash_ptr = (uint8_t *)SEGSTART;// Initialize Flash pointer
FlashCtl_unlockInfo();FlashCtl_eraseSegment(Flash_ptr);FlashCtl_write8 (buf,Flash_ptr,len);FlashCtl_lockInfo();
}

灰小子:

回复 user5322468:

调试的时候看一下flash中下面代码涉及到的flash地址是什么内容。如果是ff,那就是擦除了。

REFCAL1 = *(TLV_address_for_parse + TLV_CAL_REFCAL1);REFCAL0 = *(TLV_address_for_parse + TLV_CAL_REFCAL0);

赞(0)
未经允许不得转载:TI中文支持网 » Msp430 i2041 ADC采样问题,分频如何操作。
分享到: 更多 (0)