请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5438A 主题中讨论的其他器件: MSP430WARE
您好!
我正在尝试配置 DMA0来将数据从 ADC 传输到缓冲器、配置 DMA1来将数据从循环缓冲器0传输到 UART。 ADC 根据计时器触发器进行采样。
当正确调试 ADC 采样时、我可以通过 UART 发送和接收信息、但是没有 DMA 从 ADC 结果存储器传输到缓冲区和 UART。
我是否正确初始化了 DMA?
谢谢、
Vlad
#include
#include
#define No_Buf_Samples 1376 //定义要存储在缓冲
区中的样本数易失性 int 循环缓冲区0[No_Buf_Samples];
void DMA_Init()
{
DMACTL0 |= DMA0TSEL_24;//从 ADC12IFGx 触发 DMA0
//测试-在测试数组中读取
= DMACTL4;/ DMAMB0_SIZE
= DMADCMOS4;//测试样本数组; //读取-修改-写入禁用
DMA0CTL &&~DMAIFG;//清除 DMA 中断标志
// DMA0CTL |= DMADT_4 + DMASRCINCR_0 + DMADSTINCR_3 + DMASBDB + DMAIE;//重复单次传输,源地址常数,目标地址,
// DMADSTINCR_3 + DMADSTINCR_3 + DMADABBDB + DMADMA0递增
;// DMADTMA0 | DMA0 = DMTMA1;// DMADTMA0 = DMTMA1 // DMA1从 DMA0IFG
DMA1CTL 触发|= DMADD_6 + DMASRCINCR_3+ DMADSTINCR_0 + DMASBDB + DMALEVEL;//突发块传输、递增源地址、
无符号地址不变、启用、电平敏感}void DMA_ADC_Transfer(){__DMA0CL_SHORT_DMAD0_DMA016 (DMA0_SHORT)|无符号地址无符号地址不变、无符号 ADDRES0_D0_D0_ADDRESD0_TRD (短整型);AD0_AD0_DMA0_AD0_DMA0_DMA0_TRK (短整型)
//启用 DMA0
DMA0CTL |= DMAREQ;//触发块传输
}
// DMA UART 传输函数
void DMA_UART_Transfer ()
{
DMA1SZ = sizeof (循环缓冲器0);//块大小
__unsigned data16_write_addr (unsigned short)&DMA1SA (
_循环缓冲器1);_ DMA1DA_long
(_)| DMA1DA_DMA1)| EN/Unsigned data1 (无符号 DMA1MA1)&DMA1)| DMA1 (无符号 DMA1MA1)| DMA1 (无符号 DMA1)&DMA1)+ DMA1 (无符号 DMA1)+ DMA1 (无符号 DMA1) DMA1 (无符号 DMA1)+ DMA1)
//触发块传输
}
void Timer_B_Init (void)
{
//TB0CCTL0 = CCIE;//启用 CCR0中断
TB0CCR0 = 80;//启用 TBCCR0、采样周期
TB0CCR1 = 40;// ADC12采样转换的触发
TB0CCTL1 = OUTMOD_4; //触发 ADC 转换模式 OutMOD 置位/复位
TB0CTL |= tassel_2 + MC_1 + TACLR;// SMCLK,向上计数模式
}
void UART_Init (void)
{
P5SEL |= 0xC0;// P5.6,7 = USCI_A1 TEL/RXD
UCA1CTL1 |= UCSWCTL|= UCS1ST**状态机/复位 UCS1CTL1**
// SMCLK
// 16MHz 波特115200
UCA1BR0 = 0x45;//时钟16MHz、波特115200
UCA1BR1 = 0x00;//时钟16MHz、波特115200
UCA1MCTL |= UCBRS_4 + UCBRF_0;//
** UCBRSx=4、UCB1RFx=UCA0;//初始化 UCB1RCI= UCAST= UCA0;// UCCR0 = UCCR0 ~UCC1 = UCA0;// UCAST= UCCR0 = UCC1 = UCA0;// UCC1 = UCC1 = UCA0;// UCA0
//启用 USCI_A1 RX 中断
}
void ADC_Init (int ADC_Sampling_Channel、int ADC_Sampling_Mode)
{
P6SEL |=(1<