{"id":495,"date":"2017-11-24T23:58:55","date_gmt":"2017-11-24T22:58:55","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=495"},"modified":"2017-12-30T19:39:58","modified_gmt":"2017-12-30T18:39:58","slug":"80-lin_master-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=495","title":{"rendered":"80-LIN_Master-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=493\" title=\"79-ScopeScreen-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 79-ScopeScreen-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=507\" title=\"81-LIN_Slave-Library (STM32F4)\">81-LIN_Slave-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Wer die UART vom STM32F4 als LIN-Bus (Master) benutzen will, kann diese Library hier benutzen. (es gibt noch eine andere Library f\u00fcr den Slave-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>Ich habe mich an die LIN-Spezifikation gehalten was den Frame Aufbau und die Checksumme angeht. Damit die Slaves zeit zum reagieren haben, gibt es Pausenzeiten zwischen den Datenfields (die per For-n realisiert sind) und event. angepasst werden k\u00f6nnen.<br \/>\nDas ID-Field kann frei vom User definiert werden (enth\u00e4lt also weder eine L\u00e4ngeninformation noch Parit\u00e4tsbits, wenn der User das nicht braucht)<br \/>\nWichtig ist das der Master und der Slave mit den gleichen L\u00e4ngeninformationen arbeiten, also wenn der Master 3 Bytes sendet, muss der Slave auch 3 empfangen.<\/p>\n<p><strong>Bilder :<\/strong><\/p>\n<div id=\"attachment_3791\" class=\"wp-caption alignnone\" style=\"width: 310px;\">\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/04\/lin_master.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-3791\" title=\"LIN-Master per MAX13020\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/04\/lin_master-300x179.jpg\" alt=\"lin_master\" width=\"300\" height=\"179\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">LIN-Master 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_ERR_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_LIN_Master_Init(void);                    \/\/ zum init der CPU als LIN-Master\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.2013\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-Master-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_master.h\"\r\n#include \"stm32_ub_led.h\"\r\n\r\nvoid pause(void)\r\n{\r\n  volatile uint32_t n;\r\n  for(n=0;n&lt;5000000;n++);\r\n}\r\n\r\nint main(void)\r\n{\r\n  LIN_FRAME_t myFrame;\r\n  LIN_ERR_t check;\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-Master\r\n  UB_LIN_Master_Init();\r\n\r\n  while(1)\r\n  {\r\n    \/\/ kleine Pause\r\n    pause();\r\n    UB_Led_Toggle(LED_BLUE);\r\n\r\n    \/\/---------------------------------------\r\n    \/\/ 2Bytes per LIN an Slave senden\r\n    \/\/---------------------------------------\r\n    myFrame.frame_id=0x01;\r\n    myFrame.data_len=2;\r\n    myFrame.data[0]=0xA1;\r\n    myFrame.data[1]=0xB2;\r\n    UB_LIN_SendData(&amp;myFrame);\r\n\r\n    \/\/ kleine Pause\r\n    pause();\r\n    UB_Led_Toggle(LED_BLUE);\r\n\r\n    \/\/---------------------------------------\r\n    \/\/ 1Byte per LIN vom Slave lesen\r\n    \/\/---------------------------------------\r\n    myFrame.frame_id=0x02;\r\n    myFrame.data_len=1;\r\n    check=UB_LIN_ReceiveData(&amp;myFrame);\r\n    \/\/ Daten pruefen\r\n    if((check==LIN_OK) &amp;&amp; (myFrame.data[0]==0xF9)) {\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<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/07\/ub_stm32f4_lin_master_v101.zip\">ub_stm32f4_lin_master_v101<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/07\/Demo_80_LIN_Master.zip\">Demo_80_LIN_Master<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer die UART vom STM32F4 als LIN-Bus (Master) benutzen will, kann diese Library hier benutzen. (es gibt noch eine andere Library f\u00fcr den Slave-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=495\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":80,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[9,237,238,7,93],"class_list":["post-495","page","type-page","status-publish","hentry","category-stm32f4","tag-library","tag-lin","tag-master","tag-stm32f4","tag-uart"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/495","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=495"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/495\/revisions"}],"predecessor-version":[{"id":1619,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/495\/revisions\/1619"}],"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=495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}