cancel
Showing results for 
Search instead for 
Did you mean: 

Dropouts in ADC capture on STM32H743

ANovi.7
Associate II

If I connect a constant rising signal at the ADC input, I observe significant fluctuations at certain ADC values. These fluctuations always appear at the same ADC values. The affected values have the following format XX500, e.g. 18500, 19500, 20500 etc.

I was also able to reproduce this behavior with the NUCLEO-H743ZI and the example projects (ADC_DMA_Transfer and ADC_RegularConversion_Polling) from the current cube firmware V1.5.0. The graphic in the appendix shows a recorded ADC values, which shows the problem.

Can someone help me to solve the problem?

1 ACCEPTED SOLUTION

Accepted Solutions

RevV is the latest version. The ADC on RevY had too many problems, and was significantly changed. As you can read in the note I linked to, it talks about "migration from RevY to RevV". The currently manufactured chip is RevV. The errata document also lists all 3 revisions (Y, X and V), and you can see that the V version is the newer one, with the fewer problems https://www.st.com/content/ccc/resource/technical/document/errata_sheet/group0/b8/f4/b7/a3/d1/a0/44/a6/DM00368411/files/DM00368411.pdf/jcr:content/translations/en.DM00368411.pdf. The X revision seems to have been an engineering sample only, superseded by the V at the time of release

And, yes, the new HAL takes differences into account, even if I personally avoid using the HAL as much as possible, so I haven't looked into its specifics. But, still, if you have a RevY chip, your ADC will not perform as well as a RevV chip.

I have no idea if your problem is a specific RevY problem, but after reading a lot of posts with ADC issues on STM32H7, I realized that there were a lot of unexplained issues, pretty much all on RevY. So personally I would not spend too much time on addressing ADC issues on RevY, and get a RevV chip instead for anything where ADC performance is critical

View solution in original post

22 REPLIES 22
fbar
Senior

Are you using a RevX or RevV chip? RevX seems to have ADc problems that have been fixed in RevV

ANovi.7
Associate II

I use RevY, which is even more recent than RevV

Actually RevY us the one with problems. RevX doesn't exist, my bad for mistakenly using RevX when I should have used RevY. not sure what short circuited in my brain when I typed RevX

Please have a look at AN5312 (https://www.st.com/content/ccc/resource/technical/document/application_note/group1/95/22/7c/0c/57/de/4b/f9/DM00609692/files/DM00609692.pdf/jcr:content/translations/en.DM00609692.pdf) and the ADc sections for RevY and RevV in the STM32H7 reference

The ADC section has been extensively reworked in RevV, to the point where the ADC code is not compatible anymore between revisions. Max conversion rates have changed, too, slightly

Thanks for the hint, but that seems to have been taken into account in the HAL library, as seen here on the example of ADC boost:

 if(HAL_GetREVID() <= REV_ID_Y) /* STM32H7 silicon Rev.Y */

 {

   if(freq > 20000000UL)

   {

     SET_BIT(hadc->Instance->CR, ADC_CR_BOOST_0);

   }

   else

   {

     CLEAR_BIT(hadc->Instance->CR, ADC_CR_BOOST_0);

   }

 }

 else /* STM32H7 silicon Rev.V */

 {

   freq /= 2U; /* divider by 2 for Rev.V */

...

 }

You write, that RevY is the one with problems, but that's the last / current revision or is that wrong?

RevV is the latest version. The ADC on RevY had too many problems, and was significantly changed. As you can read in the note I linked to, it talks about "migration from RevY to RevV". The currently manufactured chip is RevV. The errata document also lists all 3 revisions (Y, X and V), and you can see that the V version is the newer one, with the fewer problems https://www.st.com/content/ccc/resource/technical/document/errata_sheet/group0/b8/f4/b7/a3/d1/a0/44/a6/DM00368411/files/DM00368411.pdf/jcr:content/translations/en.DM00368411.pdf. The X revision seems to have been an engineering sample only, superseded by the V at the time of release

And, yes, the new HAL takes differences into account, even if I personally avoid using the HAL as much as possible, so I haven't looked into its specifics. But, still, if you have a RevY chip, your ADC will not perform as well as a RevV chip.

I have no idea if your problem is a specific RevY problem, but after reading a lot of posts with ADC issues on STM32H7, I realized that there were a lot of unexplained issues, pretty much all on RevY. So personally I would not spend too much time on addressing ADC issues on RevY, and get a RevV chip instead for anything where ADC performance is critical

I have now ordered the NUCLEO-H743ZI2 with chip RevV. As soon as I have measured it, I report on the results.

Thank you at this point for your support!

Since I plan to use an STM32H7 for a project where ADC accuracy is critical, I'd appreciate you posting your findings here, if possible

Hi, as promised here the results:

The Nucleo board with RevV also has dropouts with constantly rising signals, but the dropouts are much smaller compared to RevY. Compare to this the pictures 'RevV - ADC16Bit' and 'RevY - ADC16Bit' at the ADC value 20500.

For the estimation of the ADC accuracy I added the picture 'ADC noise'. I recorded the course with NUCLEO (RC element at the ADC input + software filter). With oversampling you can improve the behavior a bit.