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.

[参考译文] MSP430FR5994:如何缩短 DMA 活动时间?

Guru**** 2530320 points
Other Parts Discussed in Thread: MSP-EXP430FR5994, MSP430FR5994, ENERGYTRACE, MSP430F169

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/610234/msp430fr5994-how-to-shorten-the-dma-active-time

器件型号:MSP430FR5994
主题中讨论的其他器件:MSP-EXP430FR5994ENERGYTRACEMSP430F169

我们使用 MSP-EXP430FR5994套件评估 MSP430FR5994。 IDE 是 CCS 7.1.0。

附件是使用 DMA 的测试代码。 在评估 DMA 功能时、通过 EnergyTrace 工具、DMA 模块在该简单代码中似乎保持过多的活动(>50%占空比)。 请帮助检查代码并对其进行一些评论。  

//
// MSP430F532x 演示- DMA0、重复块 UCA1UART 9600、TACCR2、ACLK
//
//说明:DMA0被用来逐字节传输一个字符串作为重复
//块到 UCA1TXBUF。 使用 CCR2IFG、Timer_A 持续以32768Hz 的频率运行
//触发 DMA0。 "Hello World"是通过9600波特 UART1发送的。
// ACLK = TACLK 32768Hz,MCLK = SMCLK =默认 DCO ~ 1048576Hz
//具有32768Hz XTAL @9600 = 32768Hz/9600 = 3.41 (000Dh 4Ah)的波特率分频器
////////* ACLK 需要 XOUT 上的一个外部手表晶振*//
////////*需要 MSP430F169器件*//
//
// MSP430F532x
//------------
///|\| XIN|-
//||| 32768Hz
//-|RST XOUT|-
//||
//| P4.4|--- >"Hello World"
//|| 9600 - 8N1
//
//
// Bhargavi Nisarga
// Texas Instruments Inc.
// 2009年4月
//使用 CCSv4和 IAR Embedded Workbench 构建版本:4.21
//

#include

int main (空)

WDTCTL = WDTPW + WDTHOLD;//停止看门狗

PJOUT = 0;
PJSEL0 = BIT4 | BIT5;//对于 XT1
PJDIR = 0xFFFF;

//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;

// XT1设置
CSCTL0_H = CSKKEY_H;//解锁 CS 寄存器
//CSCTL1 = DCORSEL + DCOFSEL_4;//如果 DCORSEL = 0:5.33MHz;如果 DCORSEL = 1:16MHz
CSCTL1 = DCOFSEL_0;//如果 DCORSEL = 0:1MHz;如果 DCORSEL = 1:1MHz
CSCTL2 = SELA_LFXTCLK | SELESS__DCOCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1;//将所有分频器设置为1
CSCTL4 &=~LFXTOFF;//启用 LFXT1
操作

CSCTL5 &=~LFXTOFFG;//清除 XT1故障标志
SFRIFG1 &=~OFIFG;
} while (SFRIFG1 & OFIFG);//测试振荡器故障标志
CSCTL0_H = 0;//锁定 CS 寄存器

//配置 DMA0
DMACTL0 = DMA0TSEL_1;// 0-CCR2IFG
__data16_write_addr ((unsigned short)&DMA0SA、(unsigned long) 0x1C00);
//源块地址
__data16_write_addr ((unsigned short)&DMA0DA、(unsigned long) 0x1C20);
//目标单个地址
DMA0SZ = 1;//块大小
DMA0CTL = DMADT_4 + DMASRCINCR_0 + DMAEN;// Rpt、inc src、enable

TA0CCR0 = 8192;//特性频率= TACLK/CCR0
TA0CCR2 = 1;//用于 DMA0触发
TA0CTL = tassel_1 + MC_1;// ACLK、上行模式

_bis_SR_register (LPM3_bits);//输入 LPM3

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您确切测量的是什么? 您期望的是什么?