{"id":517,"date":"2017-11-25T15:02:20","date_gmt":"2017-11-25T14:02:20","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=517"},"modified":"2017-12-30T19:40:35","modified_gmt":"2017-12-30T18:40:35","slug":"86-digin-dma-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=517","title":{"rendered":"86-DigIn-DMA-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=515\" title=\"85-Modplayer-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 85-Modplayer-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=519\" title=\"87-DUAL_FATFS-Library (STM32F4)\">87-DUAL_FATFS-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>mit dieser Library k\u00f6nnen 8 oder 16 GPIOs von einem Port zur Eingabe benutzt werden.<br \/>\nDie gemessenen Werte werden in einem Puffer gespeichert.<\/p>\n<p>Es wird ein Timer, ein DMA und ein GPIO-Port daf\u00fcr ben\u00f6tigt. Ich habe im Beispiel Timer1 Port-E und DMA2 (Channel=6, Stream=5) benutzt. Es geht aber auch jede andere Kombination.<\/p>\n<p>Im H-File kann eingestellt werden ob 8 Kan\u00e4le oder 16 benutzt werden sollen. Und wenn 8 Kan\u00e4le dann ob auf den Bits 0 bis 7 oder auf den Bits 8 bis 15.<br \/>\n(Ich habe 8Bit am Port-E Bit8 bis 15 benutzt weil die am Discovery-Board frei sind)<\/p>\n<p>Im H-File muss (bzw. kann) auch die Gr\u00f6\u00dfe vom Puffer und die Clock-Frq vom Timer eingestellt werden. Daraus ergibt sich dann wie lange eine \u201cMessung\u201d dauert.<\/p>\n<p>Es gibt eine Funktion zum starten der Messung und eine Funktion zum pr\u00fcfen ob die Messung fertig ist. Wenn sie fertig ist, k\u00f6nnen die Digital-Werte entweder als Bitwert oder als Portwert vom Puffer ausgelesen werden.<\/p>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO, TIM, DMA, MISC\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  DIN_DMA_READY =0,  \/\/ ready zum auslesen\r\n  DIN_DMA_RUNNING    \/\/ busy\r\n}DIN_DMA_STATUS_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_DIN_DMA_Init(void);                                      \/\/ init der Library\r\nvoid UB_DIN_DMA_Start(void);                                     \/\/ Messung starten\r\nDIN_DMA_STATUS_t UB_DIN_DMA_Check(void);                         \/\/ check ob Messung fertig ist\r\nuint8_t UB_DIN_DMA_ReadKanal(uint8_t kanal, uint32_t position);  \/\/ einen Pin auslesen\r\nuint16_t UB_DIN_DMA_ReadAll(uint32_t position);                  \/\/ kompletter Port auslesen<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 07.06.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 Digital-IN (DMA) 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_din_dma.h\"\r\n\r\nint main(void)\r\n{\r\n  uint8_t bit_pe3;\r\n  uint16_t byte_port_e;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init der Library\r\n  \/\/ (8bit Digital Input PE8 bis PE15)\r\n  UB_DIN_DMA_Init();\r\n\r\n  \/\/ starten der Messung per DMA\r\n  UB_DIN_DMA_Start();\r\n\r\n  \/\/ warten bis Messung vorbei ist\r\n  while(UB_DIN_DMA_Check()==DIN_DMA_RUNNING);\r\n\r\n  \/\/ ein bit auslesen (position = 0)\r\n  bit_pe3=UB_DIN_DMA_ReadKanal(3,0);\r\n\r\n  \/\/ 8bit auslesen (position = 10)\r\n  byte_port_e=UB_DIN_DMA_ReadAll(10);\r\n\r\n  while(1)\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=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/06\/ub_stm32f4_din_dma_v100.zip\">ub_stm32f4_din_dma_v100<\/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\/06\/Demo_86_DIN_DMA.zip\">Demo_86_DIN_DMA<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>mit dieser Library k\u00f6nnen 8 oder 16 GPIOs von einem Port zur Eingabe benutzt werden. Die gemessenen Werte werden in einem Puffer gespeichert. Es wird ein Timer, ein DMA und ein GPIO-Port daf\u00fcr ben\u00f6tigt. Ich habe im Beispiel Timer1 Port-E &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=517\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":86,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[138,149,9,7],"class_list":["post-517","page","type-page","status-publish","hentry","category-stm32f4","tag-digin","tag-dma","tag-library","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/517","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=517"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/517\/revisions"}],"predecessor-version":[{"id":1625,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/517\/revisions\/1625"}],"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=517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}