{"id":299,"date":"2017-11-23T20:18:38","date_gmt":"2017-11-23T19:18:38","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=299"},"modified":"2017-12-30T19:29:26","modified_gmt":"2017-12-30T18:29:26","slug":"09-adc-single-conversation-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/09-adc-single-conversation-stm32f429\/","title":{"rendered":"09-ADC-Single-Conversation (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\/08-lcd_font-library-stm32f429\/\" title=\"08-LCD_Font-Library (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 08-LCD_Font-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\/10-adc_dma-mode-stm32f429\/\" title=\"10-ADC_DMA-Mode (STM32F429)\">10-ADC_DMA-Mode (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>diese Library dient zum betreiben der AD-Wandler im Single-Conversation-Mode<\/p>\n<p>die ADC-Pins die benutzt werden sollen, m\u00fcssen im H-File deklariert und im C-File den entsprechenden Port-Pins zugeordnet werden.<\/p>\n<p>es kann auch eine Mittelwertbildung von dem Messwert durchgef\u00fchrt werden<br \/>\n(die Messdauer steigt dann nat\u00fcrlich entsprechend an)<\/p>\n<p>es gibt drei identische Libs f\u00fcr ADC1, ADC2 und ADC3<br \/>\n(sie unterscheiden sich nur in den verwendeten Variabelnnamen)<\/p>\n<p>Hier eine Auswertung \u00fcber die Genauigkeit :<br \/>\nSpannungswert \u00fcber einen 100k Poti (ohne externen Kondensator)<br \/>\n100.000 Messungen und dann Anzeige der Min- und Max- AD-Werte<br \/>\n(ADC mit 12Bit, URef = 3V, 1 Digit ca 730 uV)<\/p>\n<pre lang=\"c\" line=\"1\">Ohne Mittelwerte :  814 - 1144 = +\/- 165\r\n   2 Mittelwerte :  974 - 1132 = +\/- 79\r\n   4 Mittelwerte :  990 - 1114 = +\/- 62\r\n   8 Mittelwerte : 1014 - 1101 = +\/- 43\r\n  16 Mittelwerte : 1036 - 1086 = +\/- 25\r\n  32 Mittelwerte : 1043 - 1077 = +\/- 17\r\n  64 Mittelwerte : 1052 - 1068 = +\/- 8\r\n 128 Mittelwerte : 1054 - 1066 = +\/- 6<\/pre>\n<p>im Beispiel wurden 2 Pins als Analog-IN definiert und per ADC1 gemessen<\/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  MW_NONE =0,  \/\/ keine Mittelwerte\r\n  MW_2,        \/\/ 2 Mittelwerte\r\n  MW_4,        \/\/ 4 Mittelwerte\r\n  MW_8,        \/\/ 8 Mittelwerte\r\n  MW_16,       \/\/ 16 Mittelwerte\r\n  MW_32,       \/\/ 32 Mittelwerte\r\n  MW_64,       \/\/ 64 Mittelwerte\r\n  MW_128       \/\/ 128 Mittelwerte\r\n}ADC1s_MW_t;<\/pre>\n<p><strong>Funktionen (f\u00fcr ADC1) :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_ADC1_SINGLE_Init(void);                         \/\/ zum init des ADC1\r\nuint16_t UB_ADC1_SINGLE_Read(ADC1s_NAME_t adc_name);    \/\/ zum auslesen eines ADC direkt\r\nuint16_t UB_ADC1_SINGLE_Read_MW(ADC1s_NAME_t adc_name); \/\/ zum auslesen eines ADC mit Mittelwertbildung<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 30.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-Single-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_single.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\r\n  UB_ADC1_SINGLE_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_09 :  \",&amp;Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);\r\n  UB_Font_DrawString(10,30,\"ADC-Single \",&amp;Arial_11x18,RGB_COL_WHITE,RGB_COL_RED);\r\n\r\n  while(1)\r\n  {\r\n    \/\/ ADC-Messung ohne Mittelwertbildung\r\n    adc_wert=UB_ADC1_SINGLE_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-Messung mit Mittelwertbildung \u00fcber 64 Werte\r\n    adc_wert=UB_ADC1_SINGLE_Read_MW(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_single_f429_v100.zip\">adc_single_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_09.zip\">Demo_F429_09<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">2 Antworten auf <em>09-ADC-Single-Conversation (STM32F429)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-1084\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1084\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/b67feb8c44c2fc8b81da06d8b0513373?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\">Wolfgang, DH1AKF<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. November 2013 um 16:29<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Zun\u00e4chst herzlichen Dank f\u00fcr Deine Ver\u00f6ffentlichungen, STM32 betreffend. Sie haben mir viel Zeit erspart\u2026<br \/>\nProblem: Alle ADC- Beispiele liefern, au\u00dfer bei Mittelwertbildung von 64 Messungen, unvertretbar hohe Abweichungen. Ich habe mal eine Zeitschleife in die Anzeige genommen, da kann man es deutlich erkennen. Ist damit mein Ziel, einen Oszi mit 1Msps zu programmieren, hinf\u00e4llig??<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1086\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1086\">\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\">27. November 2013 um 20:21<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>was ist den \u201cunvertretbar hoch\u201d und brauchst du 12Bit Aufl\u00f6sung (wenn dein Oszi z.B. nur 8bit Anzeigen kann). Event. kann man noch einen besseren Filter per Software schreiben. Ich hab oben mal meine Messwerte gepostet.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>diese Library dient zum betreiben der AD-Wandler im Single-Conversation-Mode die ADC-Pins die benutzt werden sollen, m\u00fcssen im H-File deklariert und im C-File den entsprechenden Port-Pins zugeordnet werden. es kann auch eine Mittelwertbildung von dem Messwert durchgef\u00fchrt werden (die Messdauer steigt &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/09-adc-single-conversation-stm32f429\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":160,"menu_order":9,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[20,9,102],"class_list":["post-299","page","type-page","status-publish","hentry","category-stm32f429","tag-adc","tag-library","tag-stm32f429"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/299","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=299"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/299\/revisions"}],"predecessor-version":[{"id":1671,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/299\/revisions\/1671"}],"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=299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}