|
STM32H7+DCMI+DMA+обработка |
|
|
|
Sep 18 2018, 09:14
|
Группа: Участник
Сообщений: 7
Регистрация: 10-04-17
Пользователь №: 96 446

|
Всем привет! Кто-нибудь использует в своих проектах STM32H7? Очень интересная диковинка, с которой достаточно не просто разобраться... Суть вопроса в чем: пытаемся реализовать проект на борде пока что, снимается сигнал с аналоговой линейки, который подается на внешний АЦП и от этого АЦП идет параллельный интерфейс к DCMI (14 бит). Далее DCMI укладывает по DMA в (u16). Далее, начинается самое интересное... Чтобы обработать сигнал необходимо найти максимум в массиве.. Массив представляет из себя u16 и 512 кол-во элементов.. Этот цикл занимает по времени около 120 мкс? Мне кажется это не адекватно, это примерно уровень f4. CPU настроен на 400 МГЦ. Какие могут быть идеи? Может есть какие-то особенности для H7? Кэш используется
|
|
|
|
|
 |
Ответов
|
Sep 18 2018, 11:52
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(aaarrr @ Sep 18 2018, 14:42)  На F4@168MHz такой цикл занимает 42мкс. Оптимизацию не забыли включить? И в какой памяти источник данных расположен? Вангую, что автор не только оптимизацию забыл включить, но прерывания забыл запретить при "измерении"  И 168*42/512 = 13.78125 тактов на один элемент - всё равно как-то многовато..... Цитата(Eros @ Sep 18 2018, 13:44)  Если есть на чем потестить, просто создайте массив, забейте константными значениями и найдите максимум, интересно за сколько справиться H7 .....и в зависимости от этих значений и результата компиляции цикла, получатся совершенно разные результаты - средняя температура по больнице.
|
|
|
|
|
Sep 18 2018, 13:26
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Tanya @ Sep 18 2018, 16:04)  Это как от значений? Так как неизвестно во что скомпилится этот сишный исходник, то возможно там будут команды условного перехода при сравнениях. И тогда: идём по одной ветке после сравнения - одно число тактов, по другой - другое. Такие простые вещи оптимизировать можно только на ассемблере. Вот например так (вроде этого хочет ТС): CODE PUBLIC FindMaxU16 ;extern "C" uint FindMaxU16(u32 *); THUMB FindMaxU16: PUSH {R4-R9, LR} MOVS R2, #512 / 16 - 1 MOVS R1, #0 p111: SUBS R2, #1 LDMIA R0!, {R3-R9, R12} USUB16 LR, R1, R3 SEL R1, R1, R3 USUB16 LR, R1, R4 SEL R1, R1, R4 USUB16 LR, R1, R5 SEL R1, R1, R5 USUB16 LR, R1, R6 SEL R1, R1, R6 USUB16 LR, R1, R7 SEL R1, R1, R7 USUB16 LR, R1, R8 SEL R1, R1, R8 USUB16 LR, R1, R9 SEL R1, R1, R9 USUB16 LR, R1, R12 SEL R1, R1, R12 BPL p111 CMP R1, R1, LSL #16 IT CC LSLCC R1, R1, #16 LSRS R0, R1, #16 POP {R4-R9, PC} Указатель (аргумент FindMaxU16()) должен быть выровнен на границу 32 бит. И данные должны быть в диапазоне: 0...32767 (ТС вроде говорил про 14-битные данные - тогда должно подойти). Этот код выполняется за ~963 такта. Нетрудно пересчитать в мкс если надо. На CPU ТС-а должно быть ~2.5 мкс. И время выполнения от данных тут не зависит.
|
|
|
|
Сообщений в этой теме
Eros STM32H7+DCMI+DMA+обработка Sep 18 2018, 09:14 Forger На первой странице даташита есть такая фраза:
192 ... Sep 18 2018, 10:14 Eros Цитата(Forger @ Sep 18 2018, 13:14) На пе... Sep 18 2018, 10:16  Forger А какой компилятор используется? Sep 18 2018, 10:31   Eros Цитата(Forger @ Sep 18 2018, 13:31) А как... Sep 18 2018, 10:33    Forger Цитата(Eros @ Sep 18 2018, 13:33) Пользую... Sep 18 2018, 10:34     Eros Цитата(Forger @ Sep 18 2018, 13:34) Да я ... Sep 18 2018, 10:44      Forger Цитата(Eros @ Sep 18 2018, 13:44) Ну кеил... Sep 18 2018, 10:50       Eros Цитата(Forger @ Sep 18 2018, 13:50) В 5й ... Sep 18 2018, 10:58        jcxz Цитата(Eros @ Sep 18 2018, 13:58) Линейны... Sep 18 2018, 11:15     Forger Цитата(Tanya @ Sep 18 2018, 16:59) Или не... Sep 18 2018, 14:08     jcxz Цитата(Tanya @ Sep 18 2018, 16:59) Так ве... Sep 18 2018, 14:10      Eros Цитата(jcxz @ Sep 18 2018, 17:10) Исходни... Sep 19 2018, 05:38       jcxz Цитата(Eros @ Sep 19 2018, 08:38) Спасибо... Sep 19 2018, 05:52        Eros Цитата(jcxz @ Sep 19 2018, 08:52) А за ск... Sep 19 2018, 05:55 Obam У вас в "LDMIA R0, {R3-R9, R12}" одни и ... Sep 18 2018, 19:38 jcxz Цитата(Obam @ Sep 18 2018, 22:38) У вас в... Sep 18 2018, 19:58 klen здравсвуйте!
а частота семплирования ацп какая... Sep 19 2018, 13:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|