<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									STM32F4 USB ADC - Микроконтроллеры				            </title>
            <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/</link>
            <description>Обсуждение вопросов, посвященных программированию микроконтроллеров, разработке электроники и не только.</description>
            <language>ru-RU</language>
            <lastBuildDate>Fri, 17 Apr 2026 06:27:36 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>НА: STM32F4 USB ADC</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-53</link>
                        <pubDate>Tue, 09 Feb 2016 10:40:04 +0000</pubDate>
                        <description><![CDATA[Руслан, решала подобную задачу, правда для MSP430. Тоже необходимо было передавать результат непрерывной оцифровки, правда по RS-485. Использовала 2 буфера и 2 канала DMA.
Первый канал DMA б...]]></description>
                        <content:encoded><![CDATA[Руслан, решала подобную задачу, правда для MSP430. Тоже необходимо было передавать результат непрерывной оцифровки, правда по RS-485. Использовала 2 буфера и 2 канала DMA.
Первый канал DMA был настроен, чтобы заполнять буферы (поочередно) результатами АЦП. Размер буфера уже не помню, по-моему, 256 или 512. Второй канал DMA использовался, чтобы передать данные из буфера по USART (в моем случае). Запрос данных производила каждые примерно 5 сек (это надо считать). 
Как только буфер наполнился результатами АЦП, переключаемся на второй буфер и устанавливаем флаг готовности передачи. Запрос пришел - передаем данные через второй канал DMA.
Передавать каждое измерение в данном случае - не вариант.]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Елена</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-53</guid>
                    </item>
				                    <item>
                        <title>НА: STM32F4 USB ADC</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-52</link>
                        <pubDate>Mon, 08 Feb 2016 21:00:38 +0000</pubDate>
                        <description><![CDATA[Ну так и отлично же... Проблема ведь была в том, что данные передаются кусками. Если бы оцифровка занимала больше времени, чем передача, тогда это бы пришлось как то решать другими способами...]]></description>
                        <content:encoded><![CDATA[Ну так и отлично же... Проблема ведь была в том, что данные передаются кусками. Если бы оцифровка занимала больше времени, чем передача, тогда это бы пришлось как то решать другими способами. А так началась передача 64 значений, начинается параллельная оцифровка, оцифровка закончилась и контроллер спокойно ждет пока закончится передача, а затем передает уже готовые данные. В итоге передача идет без перерывов.]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-52</guid>
                    </item>
				                    <item>
                        <title>НА: STM32F4 USB ADC</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-51</link>
                        <pubDate>Mon, 08 Feb 2016 16:23:14 +0000</pubDate>
                        <description><![CDATA[while (i&lt;326)
			{
				for (int j=0; j&lt;1023;j++)
				{		
				ADC1-&gt;SR=0;
				ADC1-&gt;CR2|=ADC_CR2_SWSTART;
				UserData=ADC1-&gt;DR;
				}
				CDC_Transmit_FS((uint8_t*)UserData...]]></description>
                        <content:encoded><![CDATA[<pre><code>
			while (i&lt;326)
			{
				for (int j=0; j&lt;1023;j++)
				{		
				ADC1-&gt;SR=0;
				ADC1-&gt;CR2|=ADC_CR2_SWSTART;
				UserData=ADC1-&gt;DR;
				}
				CDC_Transmit_FS((uint8_t*)UserData, 1023);
				for (int j=0; j&lt;1023;j++)
				{				
				ADC1-&gt;SR=0;
				ADC1-&gt;CR2|=ADC_CR2_SWSTART;
				UserData2=ADC1-&gt;DR;
				}
				CDC_Transmit_FS((uint8_t*)UserData2, 1023);
				for (int j=0; j&lt;1023;j++)
				{		
				ADC1-&gt;SR=0;
				ADC1-&gt;CR2|=ADC_CR2_SWSTART;
				UserData3=ADC1-&gt;DR;
				}
				CDC_Transmit_FS((uint8_t*)UserData3, 1023);
				i++;
			}
</code></pre>

Пробовал с 3-я буферами всё равно АЦП быстрее оцифровывает, чем значения успевают передаваться...]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Руслан</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-51</guid>
                    </item>
				                    <item>
                        <title>НА: STM32F4 USB ADC</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-47</link>
                        <pubDate>Fri, 05 Feb 2016 14:43:34 +0000</pubDate>
                        <description><![CDATA[Ну ты же вызвал функцию передачи и процессор уже сам аппаратно делает всю работу, а ты уже можешь в while(1) заниматься чем угодно.]]></description>
                        <content:encoded><![CDATA[Ну ты же вызвал функцию передачи и процессор уже сам аппаратно делает всю работу, а ты уже можешь в while(1) заниматься чем угодно.]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-47</guid>
                    </item>
				                    <item>
                        <title>НА: STM32F4 USB ADC</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-46</link>
                        <pubDate>Fri, 05 Feb 2016 09:49:59 +0000</pubDate>
                        <description><![CDATA[Ну тогда как мне параллельно предавать и оцифровывать? Т.е. я оцифровал пачку данных, начинаю передачу, при этом я оцифровка должна продолжаться...]]></description>
                        <content:encoded><![CDATA[Ну тогда как мне параллельно предавать и оцифровывать? Т.е. я оцифровал пачку данных, начинаю передачу, при этом я оцифровка должна продолжаться...]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Руслан</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-46</guid>
                    </item>
				                    <item>
                        <title>НА: STM32F4 USB ADC</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-45</link>
                        <pubDate>Thu, 04 Feb 2016 21:29:26 +0000</pubDate>
                        <description><![CDATA[Тоже сталкивался с проблемой низкой скорости по USB, решения не нашел...Самым простым было бы в памяти собрать все данные, а потом за один раз отправить, но данных очень уж много, памяти не ...]]></description>
                        <content:encoded><![CDATA[Тоже сталкивался с проблемой низкой скорости по USB, решения не нашел...Самым простым было бы в памяти собрать все данные, а потом за один раз отправить, но данных очень уж много, памяти не хватит. Сделай два буфера действительно - один заполнился - начинает передаваться - в это время заполняется второй - как закончилась передача - передается второй итд. Передача будет без перебоев.]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-45</guid>
                    </item>
				                    <item>
                        <title>STM32F4 USB ADC</title>
                        <link>https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-3</link>
                        <pubDate>Thu, 04 Feb 2016 10:40:03 +0000</pubDate>
                        <description><![CDATA[Всем доброго времени суток! Задача снять с АЦП 1 000 000 значений и отправить их на ПК. С АЦП я разобрался и могу снять 1 000 000 значений, но упираюсь в скорость передачи по USB. Подскажите...]]></description>
                        <content:encoded><![CDATA[Всем доброго времени суток! Задача снять с АЦП 1 000 000 значений и отправить их на ПК. С АЦП я разобрался и могу снять 1 000 000 значений, но упираюсь в скорость передачи по USB. Подскажите пожалуйста как я могу решить эту проблему? Приходит на ум только снимать эти значения где то хранить в памяти и потом уже по USB передать. Но не знаю как это сделать... Может есть ещё какое решение? Использую USB_FS. По даташиту USB работает максимально на 12Mbit/s, но реально я не вижу этой скорости, максимум что я получил это ~ 500Kbit/s. Что я делаю не так?
<pre><code>
			while (i&lt;15874)
			{
				for (int j=0; j&lt;63;j++)
				{				
				ADC1-&gt;SR=0;
				ADC1-&gt;CR2|=ADC_CR2_SWSTART;
				UserData=ADC1-&gt;DR;
				}
				for (int delay=0;delay&lt;=0x2DFF;delay++);
				
				CDC_Transmit_FS((uint8_t*)UserData, 63);
				i++;
				}
</code></pre>

Я цифрую и кидаю в буфер из 63 значений, и они не успеваю передаться без задержки, как уже цифруется новая пачка, но с задержкой всё нормально работает, только получается что быстро цифрую 63 значения и потом какое-то время их передаю, то есть на выходе получаю сигнал рывками по 63 отсчета. Вы не знаете как бы мне сделать чтобы так не было. Думал создать несколько буферов, один отправляется, а другой по прерывании заполняется, и как первый передался, передается 2-ой, а третий заполняется и т.д....]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/mikrokontrollery/">Микроконтроллеры</category>                        <dc:creator>Руслан</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/mikrokontrollery/stm32f4-usb-adc/#post-3</guid>
                    </item>
							        </channel>
        </rss>
		