ZL31ARM: wskaźnik przyspieszenia 3D z czujnikiem MEMS LIS35
Konfiguracja interfejsu SPI:
void SPI_Configuration(void){
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
// Enable SPI1 and GPIO clocks
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA, ENABLE);
// Configure SPI1 pins: SCK, MISO and MOSI
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// Configure I/O for Flash Chip select
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_CS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIO_CS, &GPIO_InitStructure);
// SPI1 configuration
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
// Enable SPI1
SPI_Cmd(SPI1, ENABLE);
}
Po wykonaniu powyższych czynności można przetestować poprawność działania prostego programu wyświetlającego 3 ramki w różnych kolorach:
#include "board.h"
#include "main.h"
#include "lis35.h"
#include "stm32f10x.h"
int main(void){
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
// Inicjalizacja wyswietlacza LCD
InitLcdNokia();
// Czysc ekran
LCDClearScreen(0x0);
// Konfiguracja SPI i inicjalizacja MEMS
SPI_Configuration();
if (InitializeLIS35() == LIS35_ERROR)
{
LCDClearScreen(0xF);
while(1);
}
// Rysuj ramki w 3 kolorach
drawRectangle(-40, -50, -20, 50, RED, 0);
drawRectangle(-10, -50, 10, 50, BLUE, 0);
drawRectangle( 20, -50, 40, 50,GREEN, 0);
//Wyswietlenie oznaczen osi
LCDPutChar('X',120, 35, 0, 0xFFF, 0x00);
LCDPutChar('Y',120, 65, 0, 0xFFF, 0x00);
LCDPutChar('Z',120, 95, 0, 0xFFF, 0x00);
// Regulacja kontrastu
adjustContrast();
return 0;
}
Wskaźnik przyśpieszenia 3D
Do poprawnego zaimplementowania programowej obsługi układu MEMS należy wiedzieć jak wygląda rozkład osi pomiarowych i na jakim mniej więcej poziomie utrzymują się wartości w odniesieniu do przyśpieszenia ziemskiego (g = 9,81 m/s2). W celu ułatwienia zapoznania się z wyżej określonym został zrealizowany podprogram rysujący słupki, których wysokość jest proporcjonalna do mierzonych wartości, a pod spodem wyświetlane są surowe wartości typu signed char, tzn. odczytane bezpośrednio z rejestrów OutX..Z bez jakiegokolwiek przeliczenia (fotografia 6). Kierunek osi układu OXYZ przedstawiono na fotografii 7.
Fot. 6. Efekt działania przykładowego programu


Jak dobrać odpowiedni format banera reklamowego do wydarzenia plenerowego?
„Shadow AI” w firmach: dlaczego tak wielu pracowników korzysta ze sztucznej inteligencji bez zgody firmy?
ADALM2000 – Regulowany układ wyzwalania zewnętrznego 

![https://www.youtube.com/watch?v=XkeyLmtLfxo O konkursie organizowanym przez firmę TRUMPF Huettinger i polskie uczelnie techniczne opowiada Alicja Peresada i prof. Jacek Rąbkowski oraz kilkoro nagrodzonych dyplomantów: mgr inż. Jakub Dobosz, inż. Maja Zielińska, dr inż. Jakub Kołodziej, dr inż Weronika Hryniewska-Guzik i dr inż. Grzegorz Bartyzel. Zapraszamy do obejrzenia filmu! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/07/TRUMPF-czolowka.png)



