This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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吗?

  • 您是指采样时钟分频还是其他?
  • 是的,应该如何操作呀,我用例子里面的sd24,没有效果
  • 采样频率,用sd24不知道,如何完成1/2/4/8HZ的采样频率。
  • 一般大家都是用定时器定时需要的采样间隔,到了时间就触发采样

  • 嗯,我已经完成了分频采样。谢谢。但是我出现了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 pointer
    unsigned int i;

    Flash_ptr = (uint8_t *)SEGSTART; // Initialize Flash pointer

    FlashCtl_unlockInfo();
    FlashCtl_eraseSegment(Flash_ptr);
    FlashCtl_write8 (buf,Flash_ptr,len);
    FlashCtl_lockInfo();
    }
  • 调试的时候看一下flash中下面代码涉及到的flash地址是什么内容。如果是ff,那就是擦除了。

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

x 出现错误。请重试或与管理员联系。