środa, 30 marca 2016

[10b] STM32F4 - Discovery - DAC, generacja szumu białego

W tym poście chciałbym przedstawić sposób generacji szumu białego z wykorzystaniem konwertera cyfrowo analogowego.

Teoria


Do generacji pseudolosowego szumu wykorzystywany jest jego generator. W tym celu udostępniono rejestr LFSR (ang. linear feedback shift register). Zostaje on wybrany poprzez ustawienie rejestru WAVEx[1:0] na 01. Wartość automatycznie umieszczona w LFSR wynosi 0xAAAA.

Rejestr jest odświeżany co trzy cykle zegara APB1, po każdy zdarzeniu, które wywoła jego wyzwolenie. Proces odbywa się w oparciu o odpowiedni algorytm wyliczeniowy. 

Rys. 1. Rejestr LFSR, schemat algorytmu obliczeniowego

wtorek, 29 marca 2016

[10a] STM32F4 - Discovery - DAC, generacja sygnałów

W tym poście chciałbym przedstawić sposób generacji sygnałów za pomocą DAC oraz DMA.

Za pomocą konwertera cyfrowo analogowego można wygenerować sygnał prostokątny, piłokształtny trójkątny oraz sinusoidalny.

Sposób działania


Poniżej przedstawiam schemat blokowy pojedynczego konwertera cyfrowo analogowego. Dla przypomnienia w STM32 znajdują się dwa takie układy.

Rys. 1. Schemat DAC

środa, 23 marca 2016

poniedziałek, 21 marca 2016

[3] STM32F4 - Discovery - CubeMx - DAC

W tym poście zaprezentuje sposób generacji sygnału sinusoidalnego za pomocą ustawienia konwertera analogowo cyfrowego.

CubeMx


Całość jak poprzednio należy rozpocząć od wybrania odpowiedniego mikrokontrolera. Następnie należy włączyć DAC, wykonuje się to poprzez zmianę występujących na pinach PA4 i PA5 funkcji. W tym celu klika się prawym przyciskiem myszy na pinie.

Po zaznaczeniu DAC zostaje automatycznie aktywowany.


Rys. 1. Wlaczenie DAC

sobota, 19 marca 2016

[10] STM32F4 - Discovery - DAC

W tym poście chciałbym opisać w jaki sposób zainicjować oraz odpalić konwerter cyfrowo analogowy.

Charakterystyka DAC


STM32F407 został wyposażony w dwa wyjścia sygnału DAC. Zlokalizowane są one w następujących wyprowadzeniach:

  • DAC1 - PA4
  • DAC2 - PA5

poniedziałek, 14 marca 2016

[2] STM32F4 - Discovery - CubeMx - ADC

W tym poście chciałbym zaprezentować obsługę ADC z wykorzystaniem biblioteki HAL.

CubeMx


W tym celu po otwarciu odpowiedniego pliku można odrazu przejść do odpowiedniej zakładki w Peripheral. Opisywany mikrokontroler posiada trzy przetworniki ADC.

Rys. 1. Okno programu CubeMx

Układ Darlingtona

W tym poście chciałbym zaprezentować układ Darlingtona, opisać sposób jego działania oraz sposoby zastosowania.

Jest to układ wzmacniacza, który jest oparty o tranzystory bipolarne. Składa się on z dwóch tych samy układów albo NPN albo PNP.

Rys. 1. Schemat układu Dalingtona

piątek, 11 marca 2016

[1] STM32F4 - Discovery - CubeMx - Mruganie diodami

Ten post będzie zawierał opis wykonania prostego programu za pomocą oprogramowania CubeMx.

Rys. 1. Główne okno programu CubeMx

czwartek, 10 marca 2016

[9] STM32F4 - Discovery - USART, printf

W tym poście opiszę sposób włączenia oraz obsługi USART-u poprzez płytkę Discovery.

Opis


UART i USART można podłączyć w następującej konfiguracji do pinów:

W odróżnieniu od płytki Nucleo, Discovery nie ma wbudowanego konwertera, w związku z tym należy się posłużyć zewnętrznym.

wtorek, 8 marca 2016

C - Typy złożone - typedef, enum, union

Język C zawiera kilka rodzajów typów złożonych, które postaram się opisać w tym poście.

Typedef


Podane słowo kluczowe w nagłówku służy do definiowania typów pochodnych, Pozwala ono na skrócenie deklaracji zmiennej, zamiast używać długiej nazwy pełnej definicji można wykorzystać krótszą przy użyciu typedef. Czyli w skrócie zostanie zmieniona nazwa deklaracji wypisanego typu. Dodatkowo ta definicja może być widoczna tylko w lokalnym programie.

niedziela, 6 marca 2016

C - Funkcje do identyfikacji znaku

W tym poście chciałbym opisać szereg funkcji, które sprawdzają czy dany znak jest konkretnym elementem. Zostały one zdefiniowane w bibliotece ctype.h. Aby z nich korzystać należy ją oczywiście uwzględnić w nagłówku programu.

Poniżej przedstawiam ich wykaz wraz z opisem zastosowania. Definicja ich jest podobna różnica występuje tylko w nazwie ( int nazwafunkcji(int c) ) np. int isalnum(int c)

wtorek, 1 marca 2016

[1] ATXmega - 128A3U - Porty GPIO

W tym poście chciałbym przedstawić podstawowy program na mikrokontrolery ATmega, którego zadaniem będzie, jak łatwo można się domyślić, mruganie diodami.

Wgranie programu