• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 微控制器无需CPU即可生成同步正弦波与余弦波

微控制器无需CPU即可生成同步正弦波与余弦波

录入:edatop.com     点击:

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

ADC12CTL0 = REF2_5V + REFON; // Internal 2.5V ref

//Setup DMA triggers for both DMA channels

DMACTL0 = DMA0TSEL_5 + DMA1TSEL_5; // DAC12IFG trigger

// Setup DMA0

DMA0SA = (int) Sin_tab; // Source block address

DMA0DA = DAC12_0DAT_; // Destination single address

DMA0SZ = 0x20; // Block size

DMA0CTL = DMADT_4 + DMASRCINCR_3 + DMAEN; // Rpt single ch, inc src, word-word

//Setup DAC0 Load with Timer_A, group with DAC1

DAC12_0CTL = DAC12LSEL_2 + DAC12IR + DAC12AMP_2 + DAC12IFG + DAC12ENC + DAC12GRP;

//Setup DMA1

DMA1SA = (int) Sin_tab+8; // Source block address

DMA1DA = DAC12_1DAT_; // Destination single address

DMA1SZ = 0x20; // Block size

DMA1CTL = DMADT_4 + DMASRCINCR_3 + DMAEN; // Rpt single ch, inc src, word-word

//Setup DAC1 Load with Timer_A

DAC12_1CTL = DAC12LSEL_2 + DAC12IR + DAC12AMP_2 + DAC12IFG + DAC12ENC;

//Setup Timer_A

CCTL1 = OUTMOD_3; // CCR1 set/reset

CCR1 = 1; // CCR1 PWM Duty Cycle

CCR0 = 3; // Clock period of CCR0

TACTL = TASSEL_1 + MC_1; // ACLK, upmode

//Turn Off CPU forever

LPM3;

}

-------------------------------------------------------------------------

最后,每次 DMA 传输都会强行占用 2 个 CPU 时钟周期。虽然 CPU 并不用于传输操作,但时钟周期的占用会造成必要的 CPU 开销且大于零。不过,对于 1kHz 的正弦波来说,假设有 32 个数据点,第 31.25个数据点之外的 2 个周期仅需要 *%的开销,相比之下不使用 DMA 时开销达到近 50%。另外,产生 2 个波形只需要 4个周期或 7.8% 的开销,而在不使用 DMA 时几乎不可能产生 2 个 1kHz 正弦波。

来源:维库开发网

上一篇:IMS助运营商构建新的业务价值链
下一篇:多点协作传输中的联合传输方法

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图