<div dir="ltr">BEZ ZARUKY: muslim, ze to funguje tak, ze po Start musite dat postupne (tolik krat kolik mate tech kanalu) Pool a GetValue. Ony budou vracet postupne z jednotlivych kanalu.<div>BR,</div><div>Marek</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 1, 2021 at 4:51 PM Fanda Kopriva <<a href="mailto:info@elektronikavyvoj.cz">info@elektronikavyvoj.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">dobry den<br>
nevim jestli Vam to pomuze ,ale tady mam treba obsluhu ADC ze starsiho <br>
projektu s stm32l162<br>
nastavi se az 4 kanaly pro konverze ADC_JSQR =<br>
a vysledky jsou v ADC_JDR1 - 4<br>
<br>
  void ADCfce (void)<br>
    {<br>
     unsigned int timout;<br>
           ADerror = 0;<br>
           RCC_APB2ENR |= 0x200;       //ad<br>
           RCC_CR |= 0x1;<br>
           timout = 0;<br>
           while (!((RCC_CR & 0x2) || (timout>1000))){timout++;};<br>
           if (timout>1000) ADerror |= 1;<br>
           ADC_CCR = 0x820000;        //hsi/4<br>
           ADC_CR2 &= ~0x1;    //   zakaz adc<br>
           ADC_CR1  =  0x30100;//     scan<br>
           ADC_JSQR = 0x381508;            // 3kanaly temp16 5vin 8vin <br>
8vin1  10000 00101 01000 01000<br>
           ADC_SMPR2 = 0x100000;<br>
           ADC_CR2 |=  0x1;    //   zapni adc<br>
           while (!(((ADC_SR & 0x240) == 0x40 ) || <br>
(timout>1000))){timout++;};<br>
           if (timout>1000) ADerror |= 4;<br>
           timout = 0;<br>
           ADC_CR2 |= 0x400000;   //start converze inject vysledek v  <br>
ADC_JDR3 2 1<br>
           while (!((ADC_SR & 0x4) || (timout>1000))){timout++;};<br>
           if (timout>1000) ADerror |= 2;<br>
           vpom = ADC_JDR4; vpom = ((vpom * 50) / 141) - 173 ;<br>
           vtep = vpom ;    //<br>
           vpom = ADC_JDR3; battest=vpom;vpom = (vpom * 424) / 234;    <br>
//191mV = 234     U = (4.24 / 234) * x<br>
           vbat = vpom  ;  //2680 324 > 420<br>
           vpom = ADC_JDR2; vintest=vpom;vpom = (vpom * 237) >> 8;    <br>
//vpom = (vpom * 22) / 25;     //*92/100 925/1000    947/1024<br>
           vin = vpom ;   //660 362 > 500                              <br>
480 na 4.8V   >> 1000 na 10V<br>
           vpom = ADC_JDR1; vpom = (vpom * 22) / 25;<br>
           vin1 = vpom ;   //660 362 > 500<br>
}<br>
<br>
fanda<br>
<br>
<br>
Dne 01.11.2021 v 15:57 Pavel Kutina napsal(a):<br>
> Zdravím,<br>
><br>
> tak pořád nějak válčím s Cube a teď jsem se zaseknul zase trochu <br>
> hlouběji:<br>
><br>
> Potřebuji měři na čtyřech kanálech ADC.<br>
> V klikátoru je mám nastavené na ADC1 (je to STM32L471VGT) jako <br>
> ADC1_IN1 na PC0 až ADC1_4 na PC4.<br>
><br>
> Rád bych vyčítal každý kanál "ručně", zatím nechci DMA, snažím se to <br>
> rozbíhat po kouskách a vzhledem k mým (ne)vědomostem začátečníka to <br>
> chci řešit postupně. Ale jak to nakonfigurovat?<br>
><br>
> V předgenerovaném kódu mám teď tohle, ale jak na jednotlivé kanály <br>
> přistupovat, resp. jak z nich číst? V DMA režimu to snad napadá do <br>
> pole, do kterého to vyčítám, ale bez DMA? Zjevně mi někde něco uniká, <br>
> googlováním jsem strávil podstatnou část odpoledne, buď nevím, co <br>
> hledám, nebo to bez DMA nejde?<br>
><br>
> V hlavní smyčce mám teď jenom tohle, ale rád bych nějaké hodnoty i do <br>
> ADCval2 ... 4<br>
><br>
> Díky za každé nasměrování.<br>
><br>
> Pavel Kutina<br>
><br>
><br>
><br>
> //------------------------------------------------------------------<br>
>  HAL_ADC_Start(&hadc1);<br>
>  HAL_ADC_PollForConversion(&hadc1, 0xFFFFFFFF);<br>
><br>
>  ADCval1 = HAL_ADC_GetValue(&hadc1);<br>
>  ADCval2 = ?<br>
><br>
><br>
>  V inicializaci:<br>
> //------------------------------------------------------------------<br>
><br>
>  /** Configure Regular Channel<br>
>  */<br>
>  sConfig.Channel = ADC_CHANNEL_1;<br>
>  sConfig.Rank = ADC_REGULAR_RANK_1;<br>
>  sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;<br>
>  sConfig.SingleDiff = ADC_SINGLE_ENDED;<br>
>  sConfig.OffsetNumber = ADC_OFFSET_NONE;<br>
>  sConfig.Offset = 0;<br>
>  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)<br>
>  {<br>
>    Error_Handler();<br>
>  }<br>
><br>
>  sConfig.Channel = ADC_CHANNEL_2;<br>
>  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)<br>
>  {<br>
>    Error_Handler();<br>
>  }<br>
><br>
>  sConfig.Channel = ADC_CHANNEL_3;<br>
>  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)<br>
>  {<br>
>    Error_Handler();<br>
>  }<br>
><br>
>  sConfig.Channel = ADC_CHANNEL_4;<br>
>  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)<br>
>  {<br>
>    Error_Handler();<br>
>  }<br>
><br>
> _______________________________________________<br>
> HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
> <a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
<br>
<br>
_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote></div>