LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

KwikStik z Kinetis K40 oraz akcelerometr 3D LIS35DE – przykład aplikacji

Obsługa akcelerometru LIS35DE

Komunikacja z układem LIS35DE polega na odczycie i zapisie jego rejestrów przez interfejs SPI. Zapis polega na wysłaniu bajtu zawierającego adres rejestru w sześciu młodszych bitach, opcjonalnie można ustawić szósty (licząc od zera) bit, co włącza autoinkrementację adresu. Po tym bajcie zapisujemy bajt lub bajty z danymi. Zapis przebiega analogicznie, tylko w pierwszym bajcie ustawiamy najstarszy bit, w kolejnym lub kolejnych bajtach odczytujemy dane z rejestrów. Operacje te są wykonywane przez funkcje LIS35_ReadRegister i LIS35_WriteRegister.

Przed odczytem danych z akcelerometru należy go zainicjalizować, do tego służy funkcja InitializeLIS35.

InitializeLIS35. 
char InitializeLIS35(void)
{
	char RegVal, LIS35Settings;
  
	//Reset LIS35 configuration
  	LIS35_RebootMemory(); 

	//Power up
	LIS35Settings = LIS35_REG_CR1_XEN | LIS35_REG_CR1_YEN | LIS35_REG_CR1_ZEN | LIS35_REG_CR1_ACTIVE;
	LIS35_WriteRegister(LIS35_REG_CR1, LIS35Settings);
	LIS35_ReadRegister(LIS35_REG_CR1, &RegVal);

	//Check whether power up is set
	if (RegVal == LIS35Settings) return LIS35_OK;

	return LIS35_ERROR;
}

Funkcja najpierw zeruje układ (LIS35_RebootMemory ustawia bit BOOT w rejestrze CR2), następnie w rejestrze CR1 ustawia bity XEN, YEN, ZEN (odblokowanie wszystkich trzech akcelerometrów) i ACTIVE (przełączenie układu w tryb active). Na koniec sprawdzane jest, czy rejestr CR1 zawiera zamierzone wartości.

Do odczytania pomiarów służy funkcja LIS35_GetPosition, która zapisuje pod adresami przekazanymi jako parametry wartości rejestrów XOUT, YOUT i ZOUT.

void LIS35_GetPosition(signed char * x, signed char * y, signed char * z)
{
	char buf[6];
	buf[0] = LIS35_READ|LIS35_ADDR_INC|LIS35_REG_OUTX;
	buf[1] = 0; buf[2] = 0; buf[3] = 0; buf[4] = 0; buf[5] = 0;
	SPI_Transmit(buf, 6);
	
	*x = buf[1];
	*y = buf[3];
	*z = buf[5];
}

Funkcja main w pętli odczytuje te pomiary i przy pomocy prostej funkcji DrawBar rysuje trzy paski obrazujące odczytane wartości.