您好,
我们有一个应用程序应该同步使用3个SD24信道和15个ADC10信道。
我们使用的MSP430具有一个特殊的触发器模块,用于在每个 SD24转换结束时触发ADC10。
我在“信道重复序列- ADC10CONSEQ_3”模式下配置了ADC10,并使用 自动下一个连接(MSC集)
最后,我将DMA配置为重复单传输模式。
我希望:
1. SD24将触发ADC10。
2.使用此单触发器,ADC10应自动扫描所有15个通道
3. DMA会自动将所有ADC10MEM0结果放入我的阵列[15]。
所有这些操作都应在没有任何中断和自动的情况下完成。 下一个SD24触发器将在1毫秒后出现,ADC10应再次扫描15个信道。 (扫描15个信道只需50us)
我启用了DMA中断以查看正在发生的情况。 我意识到中断只发生一次。
在通道的重复序列中使用ADC10的正确方式是什么- ADC10CONSEQ_3?
TI未提供 任何用于信道模式重复序列的示例代码。
void init(void)
{
ADC10CTL0 &=~ADC10ENC;
ADC10IE = 0x00;
ADC10IFG =0;
ADC10CTL0 = ADC10C10SHT0| ADC10ON | ADC10MSC;// ADC开,ADC10等待SD24的触发器,采样时间2us (CT8xADCclk),自动下一个控制器ADC1030
= ADSE3 | ADSEEL_ADSE3 ///*由SD24触发,SMCLK = 4MHz,重复-通道序列
ADC10CTL2 = ADC10RES | ADC10DF;
ADCMCT0 = ADC10SREF_1 | ADC10INCH_15;
// 10位ADC
的DMA设置DMACTL0 = DMA1TSL__ADDATIFG0;__ADC10SREF_1 | ADC10INCH_15 AD1016
(AD10DA_16) ADDR_DA_DA_1U16 (AD1016) ADDR_DA_DA_DA_AD1U16 (AD1016)
DMA1SZ =16;//通道15至0
DMA1CTL = DMADT_4 | DMADSTINCR_2 | DMAEN | DMAIE;//启用,目标地址递减,重复单次传输ADMAC10CTL0
|= ADC10ENC;//启动ADC并等待SD24
的触发器{_interrupt
{ DMA_void_isr_NOW_DIF_DIV_NOW_: DMA_DIV_NOW_(
DMA_NOW_)
{
Break;
}
CASE DMAIV_DMA0IFG:// DMA0IFG = DMA通道0
{
Break;
}
CASE DMAIV_DMA1IFG:// DMA1IFG = DMA通道1
{
PROCESS_DATA();
break;
} CASE DMAIV_DMA2IFG:// DMA2IFG = DMA通道2 { Break;}缺省值:}
谢谢。