cancel
Showing results for 
Search instead for 
Did you mean: 

Conflict of JTAG Programmer and continous read from ADC to DMA on STM32F103RB

kwiatkowski
Associate II

Posted on September 28, 2011 at 13:26

 

 

 

Hello,

 

I have a troubles with JTAG programmers if on my processor runs following program:

 

 

    RCC_ADCCLKConfig(RCC_PCLK2_Div8);

 

 

    DMA_DeInit(DMA1_Channel1);

 

    DMA_InitTypeDef dmaInitStructure;

 

    DMA_StructInit(&dmaInitStructure);

 

    dmaInitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;

 

    dmaInitStructure.DMA_MemoryBaseAddr = (uint32_t)m_sensorsValues;

 

    dmaInitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;

 

    dmaInitStructure.DMA_BufferSize = sizeof(m_sensorsValues)/sizeof(m_sensorsValues[0]);

 

    dmaInitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;

 

    dmaInitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

 

    dmaInitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;

 

    dmaInitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;

 

    dmaInitStructure.DMA_Mode = DMA_Mode_Circular;

 

    dmaInitStructure.DMA_Priority = DMA_Priority_Low;

 

    dmaInitStructure.DMA_M2M = DMA_M2M_Disable;

 

    DMA_Init(DMA1_Channel1, &dmaInitStructure);

 

    DMA_Cmd(DMA1_Channel1, ENABLE);

 

 

    ADC_InitTypeDef adcInitStructure;

 

    ADC_StructInit(&adcInitStructure);

 

    adcInitStructure.ADC_Mode = ADC_Mode_Independent;

 

    adcInitStructure.ADC_ScanConvMode = ENABLE;

 

    adcInitStructure.ADC_ContinuousConvMode = ENABLE;

 

    adcInitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

 

    adcInitStructure.ADC_DataAlign = ADC_DataAlign_Right;

 

    adcInitStructure.ADC_NbrOfChannel = 3;

 

    ADC_Init(ADC1, &adcInitStructure);

 

 

    //CO

 

    ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_239Cycles5);

 

    //CWU

 

    ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 2, ADC_SampleTime_239Cycles5);

 

    //MOSFET

 

    ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 3, ADC_SampleTime_239Cycles5);

 

    //SPALIN

 

    //ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 4, ADC_SampleTime_239Cycles5);

 

 

    ADC_DMACmd(ADC1, ENABLE);

 

    ADC_Cmd(ADC1, ENABLE);

 

 

    ADC_ResetCalibration(ADC1);

 

    while (ADC_GetResetCalibrationStatus(ADC1));

 

 

    ADC_StartCalibration(ADC1);

 

    while (ADC_GetCalibrationStatus(ADC1));

 

 

    ADC_SoftwareStartConvCmd(ADC1, ENABLE);

 

 

The program works fine, but I can't

download new program because the programmer corrupts. If I use ST-Link programmer and ST-LinkUtility then I can erease processor but if I have any alternative software I can't do it. I try this on OLIMEX programmer and ereasing program after write above program is imposible. If I disable DMA or if I disable continous read from ADC, it works fine. What I can do? This is done as well as in official example.

 

#dma #continous #adc #jtag

0 REPLIES 0