{"id":333,"date":"2017-11-23T21:10:23","date_gmt":"2017-11-23T20:10:23","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=333"},"modified":"2017-12-30T19:32:39","modified_gmt":"2017-12-30T18:32:39","slug":"25-spi_bma180-library-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/25-spi_bma180-library-stm32f429\/","title":{"rendered":"25-SPI_BMA180-Library (STM32F429)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/24-stemwin-library-stm32f429\/\" title=\"24-STemWin-Library (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 24-STemWin-Library (STM32F429)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/26-lcd_vga-mode-library-stm32f429\/\" title=\"26-LCD_VGA-Mode-Library (STM32F429)\">26-LCD_VGA-Mode-Library (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Wer einen externen 3Achs-Beschleunigungs-Sensor vom Typ BMA180 an<br \/>\nden STM32F4 anschlie\u00dfen will, kann diese Library hier benutzen.<\/p>\n<p>Der Sensor hat 14bit Genauigkeit und eine umschaltbare Aufl\u00f6sung von<br \/>\n+\/- 1G bis +\/- 16G<\/p>\n<p>Die Library ist wieder so einfach wie m\u00f6glich gehalten (ohne Interrupts)<br \/>\nund kommt mit zwei Funktionen aus.<br \/>\n1. = BMA180_Init (initialisiert den Sensot mit der gew\u00fcnschten Aufl\u00f6sung)<br \/>\n2. = BMA180_Read (lie\u00dft die Sensordaten und \u00fcbergibt sie als Struktur)<\/p>\n<p>Hinweis : mein Sensor liefert bei Einstellungen &gt; 2G sehr ungenaue Werte.<br \/>\nDiese sind um einen Offset verschoben. Bin mir nicht sicher ob das an meiner<br \/>\nSoftware oder am Sensor liegt.<\/p>\n<p>Ich habe den Sensor an SPI4 angeschlossen aus dem Grund wird diese<br \/>\nLibrary noch zus\u00e4tzlich ben\u00f6tigt.<\/p>\n<p><strong>Benutzte Pins :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">PB2 = ChipSelect\r\nPE2 = CLK\r\nPE5 = MISO (SDO)\r\nPE6 = MOSI (SDI)<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  SCALE_1G =0,    \/\/ Aufl\u00f6sung +\/- 1g\r\n  SCALE_1G5,      \/\/ Aufl\u00f6sung +\/- 1,5g\r\n  SCALE_2G,       \/\/ Aufl\u00f6sung +\/- 2g\r\n  SCALE_3G,       \/\/ Aufl\u00f6sung +\/- 3g\r\n  SCALE_4G,       \/\/ Aufl\u00f6sung +\/- 4g\r\n  SCALE_8G,       \/\/ Aufl\u00f6sung +\/- 8g\r\n  SCALE_16G       \/\/ Aufl\u00f6sung +\/- 16g\r\n}BMA180_SCALE_t;\r\n:\r\ntypedef enum {\r\n  FILTER_10Hz =0,    \/\/ Filter (10 Hz)\r\n  FILTER_20Hz,       \/\/ Filter (20 Hz)\r\n  FILTER_40Hz,       \/\/ Filter (40 Hz)\r\n  FILTER_75Hz,       \/\/ Filter (75 Hz)\r\n  FILTER_150Hz,      \/\/ Filter (150 Hz)\r\n  FILTER_300Hz,      \/\/ Filter (300 Hz)\r\n  FILTER_600Hz,      \/\/ Filter (600 Hz)\r\n  FILTER_1200Hz,     \/\/ Filter (1200 Hz) [default]\r\n  FILTER_HIGH_1Hz,   \/\/ Filter (High Pass 1Hz)\r\n  FILTER_BAND_PASS   \/\/ Filter (Band Pass)\r\n}BMA180_FILTER_t;<\/pre>\n<p><strong>Struktur :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef struct {\r\n  int16_t x_achse;    \/\/ Beschl. der X-Achse (in +\/- mg)\r\n  int16_t y_achse;    \/\/ Beschl. der Y-Achse (in +\/- mg)\r\n  int16_t z_achse;    \/\/ Beschl. der Z-Achse (in +\/- mg)\r\n  int16_t temperatur; \/\/ Temperatur (in +\/- \u00b0C)\r\n}BMA180_t;\r\nBMA180_t BMA180;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">ErrorStatus UB_BMA180_Init(BMA180_SCALE_t scale);  \/\/ zum init vom Sensor\r\nvoid UB_BMA180_Read(void);                         \/\/ zum auslesen vom Sensor\r\nvoid UB_BMA180_SetFilter(BMA180_FILTER_t filter);  \/\/ zum einstellen vom Filter<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 28.09.2014\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F429\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der BMA180-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/ In Configuration diese Define hinzuf\u00fcgen :\r\n\/\/ \"STM32F429_439xx\" , \"__ASSEMBLY__\" , \"USE_STDPERIPH_DRIVER\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_lcd_ili9341.h\"\r\n#include \"stm32_ub_font.h\"\r\n#include \"stm32_ub_bma180.h\"\r\n#include &lt;stdio.h&gt;\r\n\r\nvoid Delay(volatile uint32_t nCount) {\r\n  while(nCount--) {\r\n  }\r\n}\r\n\r\nint main(void)\r\n{\r\n  ErrorStatus check;\r\n  int16_t x,y,z,t;\r\n  char buf[30];\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ Init vom LCD\r\n  UB_LCD_Init();\r\n  \/\/ Init der Layer\r\n  UB_LCD_LayerInit_Fullscreen();\r\n  \/\/ auf Hintergrund schalten\r\n  UB_LCD_SetLayer_1();\r\n  \/\/ Hintergrund komplett mit einer Farbe f\u00fcllen\r\n  UB_LCD_FillLayer(RGB_COL_WHITE);\r\n  \/\/ auf Vordergrund schalten\r\n  UB_LCD_SetLayer_2();\r\n  \/\/ Vordergrund komplett mit einer Farbe f\u00fcllen\r\n  UB_LCD_FillLayer(RGB_COL_GREEN);\r\n\r\n  UB_LCD_Rotate_180();\r\n\r\n  \/\/ Ueberschrift\r\n  UB_Font_DrawString(10,10,\"Demo_25 :  \",&amp;Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);\r\n  UB_Font_DrawString(10,30,\"AccSens. BMA180\",&amp;Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);\r\n\r\n  \/\/ init vom BMA180-Sensor\r\n  check=UB_BMA180_Init(SCALE_2G);\r\n  if(check==ERROR) {\r\n    UB_Font_DrawString(10,70,\"Error\",&amp;Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);\r\n    while(1);\r\n  }\r\n\r\n  while(1)\r\n  {\r\n    \/\/ Sensorwerte einlesen\r\n    UB_BMA180_Read();\r\n    \/\/ X-Achse anzeigen\r\n    x=BMA180.x_achse;\r\n    sprintf(buf,\"X=%d  \",x);\r\n    UB_Font_DrawString(10,90,buf,&amp;Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);\r\n    \/\/ Y-Achse anzeigen\r\n    y=BMA180.y_achse;\r\n    sprintf(buf,\"Y=%d  \",y);\r\n    UB_Font_DrawString(10,110,buf,&amp;Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);\r\n    \/\/ Z-Achse anzeigen\r\n    z=BMA180.z_achse;\r\n    sprintf(buf,\"Z=%d  \",z);\r\n    UB_Font_DrawString(10,130,buf,&amp;Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);\r\n    \/\/ Temperatur anzeigen\r\n    t=BMA180.temperatur;\r\n    sprintf(buf,\"T=%d  \",t);\r\n    UB_Font_DrawString(10,150,buf,&amp;Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);\r\n\r\n    Delay(5000000);\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2014\/09\/bma180_f429_v100.zip\">bma180_f429_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2014\/09\/Demo_F429_25.zip\">Demo_F429_25<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer einen externen 3Achs-Beschleunigungs-Sensor vom Typ BMA180 an den STM32F4 anschlie\u00dfen will, kann diese Library hier benutzen. Der Sensor hat 14bit Genauigkeit und eine umschaltbare Aufl\u00f6sung von +\/- 1G bis +\/- 16G Die Library ist wieder so einfach wie m\u00f6glich &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/25-spi_bma180-library-stm32f429\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":160,"menu_order":25,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[43,9,49,102],"class_list":["post-333","page","type-page","status-publish","hentry","category-stm32f429","tag-bma180","tag-library","tag-spi","tag-stm32f429"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=333"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/333\/revisions"}],"predecessor-version":[{"id":1694,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/333\/revisions\/1694"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/160"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}