Wpis z mikrobloga

Mirki pomocy. Mierzę sobie napięcie na 2 kanałach ADC w STM32L100C-Disco i mam problem z DMA. Zrobiłem sobie tablicę 2 elementową do której chcę zapisywać odczyt z 2 kanałów ADC przez DMA. Problem jest taki, że dane zostają zapisane tylko 1 raz. Jak podam inne napięcie na wejścia ADC to wartości w tablicy się nie zmieniają. Po prostu wygląda to tak jakby tylko pierwsze przejście DMA zapisywało do tablicy. Potem nic się nie zmienia chociaż mam ustawiony Mode Circular. Jak zresetuję to pierwsza konwersja działa i to samo. Sprawdziłem sobie, że ADC działa cały czas, wartości w rejestrze mu się zmieniają. Wujek Google pomógł mi znaleźć rozwiązanie na podanej stronie tylko nie kumam co znaczy "uncached memory" . Załączam też kod. Znaczna część kodu zerżnięta z forbota.
#stm32 #elektronika
  • 4
  • Odpowiedz
@Chandox Example: before DMAing from memory, call SCBCleanDCachebyAddr() to flush the buffer to RAM. Likewise, after DMAing to memory (i.e. in BSPAUDIOINTransferCompleteCallBack()), call SCBInvalidateDCachebyAddr(). Próbowałeś coś podobnego?
  • Odpowiedz
Nie. Jakoś nie rozumiem czemu skoro mam włączony Mode Circular to DMA nie może po prostu nadpisać tych danych. Jak wyczyścić pamięć podręczną? Możesz wytłumaczyć jak debilowi albo podesłać jakiegoś linka żeby mnie oświeciło?
  • Odpowiedz