cancel
Showing results for 
Search instead for 
Did you mean: 

BDMA -Availability depends on devices.

A.Caliskan
Associate II

hello

ı use stm32h723zg and ı use bdma for adc3 , I was wondering if bdma can be used with adc3. I looked in the reference guide but couldn't find it. I will be glad if you help.0693W00000HnnvbQAB.png

15 REPLIES 15

Data Sheet should indicate the H7xx devices having an ADC3

Will need to check later.​

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

I didn't fully understand what you were saying.

also h723 has error in bdma partition. bdma's register are not available in cube ide. only it have IFCR,ISR.

a) Not all H7 have an ADC3

b) I will look at the DS/RM when I'm at a computer

Part looks to have ADC3 on AHB4, and the BDMA should be able to use it provided the destination buffer is in the SRAM4 (D3 Domain)

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

MY code is:

	 LL_AHB4_GRP1_EnableClock(LL_AHB4_GRP1_PERIPH_BDMA);
	// NVIC_SetPriority(BDMA_Channel1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
	// NVIC_EnableIRQ(BDMA_Channel1_IRQn);
 
	 LL_BDMA_InitTypeDef BDMA_InitStruct = {0};
 
	 BDMA_InitStruct.Direction=LL_BDMA_DIRECTION_PERIPH_TO_MEMORY;
	 BDMA_InitStruct.MemoryOrM2MDstAddress=(uint32_t)&sina;
	 BDMA_InitStruct.MemoryOrM2MDstDataSize=LL_BDMA_MDATAALIGN_WORD;
	 BDMA_InitStruct.MemoryOrM2MDstIncMode=LL_BDMA_MEMORY_NOINCREMENT;
	 BDMA_InitStruct.Mode=LL_BDMA_MODE_CIRCULAR ;
	 BDMA_InitStruct.NbData=1;
	 BDMA_InitStruct.PeriphOrM2MSrcAddress=(uint32_t)&ADC3->DR;
	 BDMA_InitStruct.PeriphOrM2MSrcDataSize=LL_BDMA_PDATAALIGN_WORD;
	 BDMA_InitStruct.PeriphOrM2MSrcIncMode=LL_BDMA_PERIPH_NOINCREMENT;
	 BDMA_InitStruct.PeriphRequest=LL_DMAMUX2_REQ_ADC3;
	 BDMA_InitStruct.Priority=LL_BDMA_PRIORITY_VERYHIGH;
	LL_BDMA_StructInit(&BDMA_InitStruct);
     LL_BDMA_Init(BDMA,LL_BDMA_CHANNEL_1,&BDMA_InitStruct);
 
 
 
	// LL_BDMA_EnableIT_TC(BDMA, LL_BDMA_CHANNEL_1);
	 LL_BDMA_EnableChannel(BDMA, LL_BDMA_CHANNEL_1);

adc works but dma does not send data 

0693W00000Hnp0NQAR.png

Is sina[] in SRAM4 (0x38000000) ?

If the BDMA throws a Transfer Error, probably not..

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
TDK
Guru

> I was wondering if bdma can be used with adc3.

Yes. BDMA is hooked up to DMAMUX2 per the reference manual. DMAMUX2 is connected to ADC3 through requests 26/27 (ADC3_IT/ADC3_AWD). See "17.3.3 DMAMUX2 mapping".

If you feel a post has answered your question, please click "Accept as Solution".