22.07.2013, 11:43
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Не знаю что у вас за задача и что за камень, но похоже вы и сами плохо представляете что к чему. Рассмотрите несколько вариантов, возможно вы удивитесь узнав, что DMA вам может быть и не нужно, и что DMA - не всегда быстро.
Цитата:
|
niXto, Добрый день. А как лучше останавливать поток DMA или запускать по требованию преобразование АЦП?
|
Ответа вы не услышите, он знает по STM32 меньше школьника коррекционной группы, но что-то пытается вставить, "писатель, аднака".
|
|
|
|
22.07.2013, 13:38
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Камень STM32F407IGT6. Поидее его хватит с головой. А задачу я немного описывал выше. Нужно максимально быстро оцифровать аналоговый сигнал. Сигнал имеет вид импульса. Передний фронт очень затянутый, потом резкий спад. И так несколько импульсов. Длительность всего импульса 1-2 мс. Но интересуют моменты начала спада и нарастания. Где происходит вибрация. Длительность импульсов на этих участках сказать не могу. Поэтому и хочу максимум, что можно выжать с используемого камня.
Когда использовал PIC18F4550, то импульс получался очень примерным. Т.е. не видно вибраций на вершине и внизу графика.
Дело даже не в скорости обработки, а в количестве результатов.
Из-за этого и думаю, что использовать проц для перезаписи из АЦП в SRAM 512К результатов это лишняя трата времени и ресурсов...
Последний раз редактировалось swat24; 22.07.2013 в 13:45.
|
|
|
|
22.07.2013, 14:03
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Пройдитесь поиском по элху, там такое поднималось.
Цитата:
|
Из-за этого и думаю, что использовать проц для перезаписи из АЦП в SRAM 512К результатов это лишняя трата времени и ресурсов...
|
На данном камне - может быть, на F1xx - я бы уже задумался.
|
|
|
|
22.07.2013, 17:34
|
|
Прописка
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от swat24
|
Длительность всего импульса 1-2 мс
|
Максимальную скорость, которую можно выжать из 407 - 6 мегасемплов тремя АЦП в режиме чередования. Стоит ли морочить голову с внешним озу для 6000-12000 выборок? Во внутреннем озу там достаточно места.
А чтобы не мешать ДМА разместите данные своей программы в CCM RAM.
Последний раз редактировалось Impartial; 22.07.2013 в 17:45.
|
|
|
|
22.07.2013, 17:51
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
в 407IG 192+4 кб озу. чего явно не достаточно для того, что хочу сделать. Флеш планирую ставить на 512К слов. - 1 МБ.
А на счет ацп попробую со встроенным и со внешнем. т.к. никогда их не использовал еще.
Последний раз редактировалось swat24; 22.07.2013 в 17:59.
|
|
|
|
22.07.2013, 18:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от swat24
|
в 407IG 192+4 кб озу.
|
Для ДМА - только 128к, 64к ССМ для него недоступны (только через процессор)
|
|
|
|
22.07.2013, 21:00
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Так, вроде получилось. При прерывании ДМА о завершении заполнения буфера, выключаю АЦП и начинаю обработку. После обработки массива опять включаю ацп и стартую начало измерения.
Только сейчас немного странно прыгают результаты... Сейчас еще посмотрю. При повторном старте, иногда, каналы меняются местами. Т.е. оцифрованое с первого канала попадает на второе слово в памяти, а результат второго канала на первое слово...
niXto, хоть 128к, хоть 192 к все равно мало... поэтому и внешнюю беру.
Последний раз редактировалось swat24; 22.07.2013 в 21:43.
|
|
|
|
30.07.2013, 08:47
|
|
Временная регистрация
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день, коллеги.
Есть одна непонятка с работой EXTI, контроллер STM32F100.
Есть такой код инициализации прерываний от двух портов по обоим фронтам:
Код:
|
void InitExtInterrupt()
{
RCC_APB2PeriphClockCmd(RCC_APB2ENR_AFIOEN , ENABLE); //альтернативные функции пинов
AFIO-›EXTICR[PinSet1››0x02]&= ~AFIO_EXTICR2_EXTI6_PB;
AFIO-›EXTICR[PinSet2››0x02]&= ~AFIO_EXTICR2_EXTI7_PB;
AFIO-›EXTICR[PinSet1››0x02]|= AFIO_EXTICR2_EXTI6_PB;
AFIO-›EXTICR[PinSet2››0x02]|= AFIO_EXTICR2_EXTI7_PB;
EXTI-›IMR |=EXTI_IMR_MR6|EXTI_IMR_MR7;//
EXTI-›FTSR |=EXTI_FTSR_TR6|EXTI_FTSR_TR7;// Событие по спаду |EXTI_FTSR_TR0
EXTI-›RTSR |=EXTI_RTSR_TR6|EXTI_RTSR_TR7;// Событие по фронту
NVIC_EnableIRQ (EXTI9_5_IRQn);
} |
Ну и обработчик прерываний:
Код:
|
void EXTI9_5_IRQHandler(void)
{
if (EXTI-›PR & (1‹‹PinSet1))
{
.................
ChangeModeStatus = 1;
EXTI-›PR |= 1‹‹PinSet1;
}
if (EXTI-›PR & (1‹‹PinSet2))
{
..................
ChangeModeStatus = 1;
EXTI-›PR |= 1‹‹PinSet2;
}
} |
Непонятный момент состоит в том, что если установлены оба флага прерывания, например, если объединить оба входа и подавать один сигнал, то при сбросе флага прерывания от одного источника сбрасывается и второй флаг. Есть опасность потерять необработанное прерывание. В еррате ничего про это не сказано, ни с чем подобным ранее не сталкивался. Прошу подсказки.
|
|
|
|
30.07.2013, 09:06
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от TAutomatic
|
В еррате ничего про это не сказано, ни с чем подобным ранее не сталкивался. Прошу подсказки.
|
NVIC это ядро , посему и читать надо не в даташите и еерате .
Читайте на тему приоритета прерываний и вообще что такое NVIC
Nested Vectored Interrupt Controller
__________________
Осторожно , злой кот
|
|
|
|
30.07.2013, 09:59
|
|
Временная регистрация
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А при чем тут приоритет прерывания и все остальное?
В системе нет других приоритетов, ранжировать нечего.
Да и EXTI вроде как не к ядру относится, а к периферии.
Я вроде объяснил, в чем проблема. Попробую еще раз.
Если одним сигналом вызвать оба прерывания, как и положено, вызывается обработчик. И я вижу, что установлены оба флага, как и должно быть. Но при сбросе флага первого прерывания записью единички в соответствующий разряд сбрасывается и соседний. Тоесть фактически второе условие всегда дает ложь. Вот в этом и проблема?
Я не прав, что к периферии относится? Может тогда скажете, что конкретно в NVIC не так, вместо того, что бы отправлять что-то читать целыми главами и книгами...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:24.
|
|