{"id":507,"date":"2017-11-25T14:58:53","date_gmt":"2017-11-25T13:58:53","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=507"},"modified":"2023-03-04T17:01:13","modified_gmt":"2023-03-04T16:01:13","slug":"81-lin_slave-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=507","title":{"rendered":"81-LIN_Slave-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=495\" title=\"80-LIN_Master-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 80-LIN_Master-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=509\" title=\"82-OLED_SSD1331-Library (STM32F4)\">82-OLED_SSD1331-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Wer die UART vom STM32F4 als LIN-Bus (Slave) benutzen will, kann diese Library hier benutzen. (es gibt noch eine andere Library f\u00fcr den Master-Mode)<\/p>\n<p>Der LIN-Bus ist eine Eindrahtverbindung mit einem Master und bis zu 16 Slaves.<br \/>\nF\u00fcr die Hardware wird ein Lin-Transceiver IC ben\u00f6tigt. Ich habe ein MAX13020 benutzt (hier ein Dank an Armin f\u00fcr die ICs und Sockel)<\/p>\n<p><strong>Zur Software :<\/strong><\/p>\n<p>Der Slave muss die Funktion \u201cUB_LIN_checkID\u201d pollen um zu erkennen ob ein LIN-Frame vom Master gesendet wurde. Mit der empfangenen ID muss entschieden werden ob der Slave Daten senden\/empfangen muss oder ob ihn die ID nicht betrifft.<\/p>\n<p><strong>Bilder :<\/strong><\/p>\n<div id=\"attachment_3792\" class=\"wp-caption alignnone\" style=\"width: 310px;\">\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/04\/lin_slave.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-3792\" title=\"LIN-Slave per MAX13020\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/04\/lin_slave-300x179.jpg\" alt=\"lin_slave\" width=\"300\" height=\"179\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">LIN-Slave per MAX13020<\/p>\n<\/div>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO, UART, MISC\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  LIN_OK  = 0,   \/\/ kein Fehler\r\n  LIN_WRONG_LEN, \/\/ falsche Datenanzahl\r\n  LIN_RX_EMPTY,  \/\/ kein Frame empfangen\r\n  LIN_WRONG_CRC, \/\/ Checksumme falsch\r\n  LIN_NO_ID      \/\/ es wurde keine ID empfangen\r\n}LIN_ERR_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_LIN_Slave_Init(void);                     \/\/ zum init der CPU als LIN-Slave\r\nLIN_ERR_t UB_LIN_checkID(LIN_FRAME_t *frame);     \/\/ check ob LIN-ID empfangen wurde\r\nLIN_ERR_t UB_LIN_SendData(LIN_FRAME_t *frame);    \/\/ zum senden von LIN-Daten\r\nLIN_ERR_t UB_LIN_ReceiveData(LIN_FRAME_t *frame); \/\/ zum empfangen von LIN-Daten<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 11.04.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      : STM32F4\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 LIN-Slave 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\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_lin_slave.h\"\r\n#include \"stm32_ub_led.h\"\r\n\r\nint main(void)\r\n{\r\n  LIN_FRAME_t myFrame;\r\n  LIN_ERR_t check;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init der LEDs\r\n  UB_Led_Init();\r\n\r\n  \/\/ init der UART als LIN-Slave\r\n  UB_LIN_Slave_Init();\r\n\r\n  while(1)\r\n  {\r\n    \/\/ check ob ID per LIN empfangen\r\n    check=UB_LIN_checkID(&amp;myFrame);\r\n    if(check==LIN_OK) {\r\n      UB_Led_Toggle(LED_ORANGE);\r\n      if(myFrame.frame_id==0x01) {\r\n        \/\/---------------------------------------\r\n        \/\/ 2Bytes per LIN vom Master empfangen\r\n        \/\/---------------------------------------\r\n        myFrame.data_len=2;\r\n        check=UB_LIN_ReceiveData(&amp;myFrame);\r\n        if(check==LIN_OK) {\r\n          \/\/ Daten pruefen\r\n          if((myFrame.data[0]==0xA1) &amp;&amp; (myFrame.data[1]==0xB2)) {\r\n            UB_Led_Toggle(LED_GREEN);\r\n          }\r\n          else {\r\n            UB_Led_Toggle(LED_RED);\r\n          }\r\n        }\r\n      }\r\n      else if(myFrame.frame_id==0x02) {\r\n        \/\/---------------------------------------\r\n        \/\/ 1Byte per LIN zum Master senden\r\n        \/\/---------------------------------------\r\n        myFrame.data_len=1;\r\n        myFrame.data[0]=0xF9;\r\n        check=UB_LIN_SendData(&amp;myFrame);\r\n        if(check==LIN_OK) UB_Led_Toggle(LED_BLUE);\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/07\/ub_stm32f4_lin_slave_v101.zip\">ub_stm32f4_lin_slave_v101<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/07\/Demo_81_LIN_Slave.zip\">Demo_81_LIN_Slave<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer die UART vom STM32F4 als LIN-Bus (Slave) benutzen will, kann diese Library hier benutzen. (es gibt noch eine andere Library f\u00fcr den Master-Mode) Der LIN-Bus ist eine Eindrahtverbindung mit einem Master und bis zu 16 Slaves. F\u00fcr die Hardware &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=507\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":81,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[9,237,230,7,93],"class_list":["post-507","page","type-page","status-publish","hentry","category-stm32f4","tag-library","tag-lin","tag-slave","tag-stm32f4","tag-uart"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=507"}],"version-history":[{"count":4,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/507\/revisions"}],"predecessor-version":[{"id":3648,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/507\/revisions\/3648"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}