{"id":301,"date":"2017-11-23T20:19:36","date_gmt":"2017-11-23T19:19:36","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=301"},"modified":"2017-12-30T19:29:34","modified_gmt":"2017-12-30T18:29:34","slug":"10-adc_dma-mode-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/10-adc_dma-mode-stm32f429\/","title":{"rendered":"10-ADC_DMA-Mode (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\/09-adc-single-conversation-stm32f429\/\" title=\"09-ADC-Single-Conversation (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 09-ADC-Single-Conversation (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\/11-adc_injected-group-library-stm32f429\/\" title=\"11-ADC_Injected-Group-Library (STM32F429)\">11-ADC_Injected-Group-Library (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>mit dieser Library kann der ADC per DMA zyklisch ausgelesen werden um die CPU last zu senken. Es k\u00f6nnen maximal 16 ADC-Kan\u00e4le pro AD-Wandler festgelegt werden.<\/p>\n<p>die Einstellung erfolgt (wie in der ADC-Single-Conversation-Library) als Struktur im C-File. Dort \u00a0m\u00fcssen die ADC-Pins den Port-Pins zugeordnet werden.<\/p>\n<p>es sind wieder drei LIBs getrennt f\u00fcr ADC1, ADC2 und ADC3. Die k\u00f6nnen aber auch gleichzeitig benutzt werden falls mehr als 16 ADC-Kan\u00e4le notwendig sind.<\/p>\n<p>im Beispiel werden nur 2 Kan\u00e4le benutzt um das Prinzip zu verdeutlichen.<\/p>\n<pre lang=\"c\" line=\"1\">PA5, PC3<\/pre>\n<p><strong>Enumerationen (f\u00fcr ADC1) :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  ADC_PA5 = 0,  \/\/ PA5\r\n  ADC_PC3 = 1   \/\/ PC3\r\n}ADC1d_NAME_t;<\/pre>\n<p><strong>Funktionen (f\u00fcr ADC1) :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_ADC1_DMA_Init(void);                       \/\/ zum initialisieren und starten\r\nuint16_t UB_ADC1_DMA_Read(ADC1d_NAME_t adc_name);  \/\/ zum auslesen eines ADC-Kanals<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 31.10.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      : 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 ADC-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\/\/ 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_adc1_dma.h\"\r\n#include &lt;stdio.h&gt;\r\n\r\nint main(void)\r\n{\r\n  uint16_t adc_wert;\r\n  char buf[20];\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ Init vom LCD\r\n  UB_LCD_Init();\r\n  \/\/ Init vom ADC (im DMA-Mode)\r\n  UB_ADC1_DMA_Init();\r\n\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  \/\/ Ueberschrift\r\n  UB_Font_DrawString(10,10,\"Demo_10 :  \",&amp;Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);\r\n  UB_Font_DrawString(10,30,\"ADC-DMA    \",&amp;Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);\r\n\r\n  while(1)\r\n  {\r\n    \/\/ ADC-Wert auslesen\r\n    adc_wert=UB_ADC1_DMA_Read(ADC_PA5);\r\n    sprintf(buf,\"PA5 = %4d\",adc_wert);\r\n    UB_Font_DrawString(10,100,buf,&amp;Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);\r\n\r\n    \/\/ ADC-Wert auslesen\r\n    adc_wert=UB_ADC1_DMA_Read(ADC_PC3);\r\n    sprintf(buf,\"PC3 = %4d\",adc_wert);\r\n    UB_Font_DrawString(10,150,buf,&amp;Arial_11x18,RGB_COL_BLACK,RGB_COL_GREEN);\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\/2013\/10\/adc_dma_f429_v100.zip\">adc_dma_f429_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2013\/10\/Demo_F429_10.zip\">Demo_F429_10<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">2 Antworten auf <em>10-ADC_DMA-Mode (STM32F429)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-2783\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2783\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/d0a43dbbca06db6a2d9638746165d49a?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Bj\u00f6rn<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">6. Januar 2015 um 12:34<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<br \/>\nerstmals Vielen Dank f\u00fcr die sch\u00f6nen Beispiele.<br \/>\nIch habe eine Frage zu dem DMA Beispiel. Ich m\u00f6chte gerne mit 2,4MSPS sampeln.<br \/>\nWenn ich nun in der Zeile \u201cADC_RegularChannelConfig(ADC1, ADC1d[adc_name].ADC_CH, adc_name+1, ADC_SampleTime_28Cycles);\u201d die Cycles auf 3 stelle anstatt 28 geht es nicht mehr. Verstehe nicht ganz warum.<br \/>\nDie Zeit hatte ich auch schonmal versucht im Interrupt zu \u00fcberpr\u00fcfen. Leider h\u00e4ngt er dann dort fest.<\/p>\n<p>Vielen Dank<br \/>\nGru\u00df<br \/>\nBj\u00f6rn<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2789\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-2789\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">8. Januar 2015 um 11:17<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>ja\u2026scheint ein BUG zu sein k.A. warum. Die CPU l\u00e4uft noch, nur der ADC \u201ch\u00e4ngt\u201d.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>mit dieser Library kann der ADC per DMA zyklisch ausgelesen werden um die CPU last zu senken. Es k\u00f6nnen maximal 16 ADC-Kan\u00e4le pro AD-Wandler festgelegt werden. die Einstellung erfolgt (wie in der ADC-Single-Conversation-Library) als Struktur im C-File. Dort \u00a0m\u00fcssen die &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/10-adc_dma-mode-stm32f429\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":160,"menu_order":10,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[20,149,9,102],"class_list":["post-301","page","type-page","status-publish","hentry","category-stm32f429","tag-adc","tag-dma","tag-library","tag-stm32f429"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/301","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=301"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/301\/revisions"}],"predecessor-version":[{"id":1672,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/301\/revisions\/1672"}],"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=301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}