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.

[参考译文] CCS/msp430fr5969:DMA目标地址增量问题

Guru**** 2595805 points
Other Parts Discussed in Thread: MSP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/641452/ccs-msp430fr5969-dma-destination-address-incrementation-issue

部件号:MSP430FR5969

工具/软件:Code Composer Studio

您好,

我正在使用msp430fr5969 UC。 我正在尝试将DMA与ADC集成。 尽管目标地址增加,但一切都正常。 它不会更改每个DMA中断。

这是我的代码:

	UINT16_t res_data[4];...

		
	
	void DMA0_init(){
		DMACTL0 = DMMA0TSEL__ADC12IFG;//DMA触发器分配:26=ADC12转换结束
		DMACTL4 = DMARMWDIS;
		DMMA0CTL = DMADT_4 | DMASINCR_0 | DMASDR_0 =无
		
		符号DMAC10_DMAC10; DMAD_DMAD_DMA103; DMAD_DA_DMACDMAD_DIF_DMA0
		//目标单地址
		DMA0CTL |= DMAEN;
	}

作废测量_3V3_Init (作废)
{
//初始化共享参考模块

同时(REFCTL0和REFGENBUSY); //如果ref发生器忙,请等待
REFCTL0 &=~REFVsel_0; //启用内部1.2V参考
REFCTL0 |= REFVSEL_2 + REFON; //启用内部1.2V参考
//初始化ADC12_A
ADC12CTL0 &=~ADC12ENC; //禁用ADC12
ADC12CTL0 = ADC12SHT0_8 + ADC12ON; //设置采样时间
ADC12CTL1 = ADC12SHP | ADC12CONSEQ_0; //启用采样计时器
ADC12CTL3 = ADC12BATMAP; //启用内部温度传感器
ADC12MCTL0 = ADC12VRSEL_1 + ADC12INCH_31;// ADC输入通道A30 =>温度感应
while (!(REFCTL0 & REFGENRDY)); //等待参考发生器稳定下来
ADC12CTL0 |= ADC12ENC;
}
	
	作废测量触发器(作废)
{
while (!(REFCTL0 & REFGENRDY));
ADC12CTL0 |= ADC12SC; //开始采样/转换
__bis_sr_register (GIE); //只是为了以防万一?
}
	
	
	...
	
	
	而(1){
Measure_3V3_Init(); //内部3V3电压ADC REG设置
Measure_Trigger(); //使用中断启动测量
__DELAY周期(30万);
} 

DMA ISR仅包含检查DMA0DA的nop操作。 你有什么建议吗? 我错过了什么吗?

谢谢你的建议! :)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您已将DMA0SZ设置为1。 这意味着每次传输后,源/目标地址都会重置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,它起作用了。 谢谢。

    我一直在考虑这种可能性-数据地址会改变每一个触发点。 我的意思是这个序列:

    *触发ADC以测量内部温度->*DMA SAVE ->*DMA更改目标地址(增量)->*更改ADC设置以测量内部电压->*触发ADC ->将测量保存在新的目标地址中。

    这甚至可能吗?

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

    您需要一种自动扫描模式才能使用多个转换存储器寄存器。 (这意味着DMA也必须从多个地址完成。)