Jump to content
Стальной

Проблема с запуском DCMI

Recommended Posts

Доброго времени суток!

Неделю не могу запустить DCMI на STM32F407VET6. 

Работаю через HAL, инициализация кубом. К МК подключена камера OV7670. Камера дает картинку 640х480, и такое изображение мне негде хранить. Поэтому через фичу CROP хочу вырезать картинку 160х128 из центра под имеющийся экран.

Ниже примерный код, без настройки камеры. Камера тактируется от 16 МГц MCO. Сигналы поступают на выводы МК, посмотрел осциллографом. У камеры есть некоторые настройки, которые тут в коде не показал, так как они влияют только на представление данных, но не на алгоритм захвата данных.

/* USER CODE BEGIN PV */
uint16_t DCMI_data[20480] = {0}; //128*160=20480 words
uint32_t ptr;
/* USER CODE END PV */

//тут еще код куба, пропущу его

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_DCMI_Init();
  /* USER CODE BEGIN 2 */

  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); //снять ресет  с матрицы
  ptr = (uint32_t)(&DCMI_data[0]);
  HAL_Delay( 500 );
//начать резать с 512 клока строки (256 пиксель), начать резать с 160 строки
//захватить 256 клоков (128 пикселей), захватить 160 строк
  HAL_DCMI_ConfigCrop(&hdcmi, 512, 160, 256, 160);
  HAL_DCMI_EnableCrop(&hdcmi);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT, ptr, 10240); //однократный захват, 10240 тетрад, 20480 слов, 160*128=40960 пикселей
    HAL_Delay(1500);
  }
  /* USER CODE END 3 */
}

В результате в буфере ничего не появляется, DMA туда ничего не кладёт, проверил. Если не вызывать функцию EnableCrop, но какие-то данные появляются, но на экран их корректно отобразить не получается. Также пытался в камере обрезку включить, а не в МК - снова нет данных. Пробовал разные частоты тактирования матрицы давать - без разницы. Отладчиком увидел, что бит EN в регистре конфигурации потока  DMA не снимается, как будто DMA не получал запросов на транзакции. Помогите, пожалуйста, разобраться.

Проект на яндексДиске

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • У ал304 высота знака 3 мм. У алс314 высота знака 2,5 мм
    • А если двигатель будет шаговым, то у него ротор не крутится? Блокируется сразу после сделанных шагов?
    • https://eandc.ru/pdf/opto/al304.pdf   похоже  и даже  очень  ...  https://eandc.ru/pdf/opto/3ls314_als314.pdf  и  эти тоже   
    • После полного пропадания питания, на плате управления вертаком за счёт заряженного кондёра С1 должен открыться VT9, и будет подъём ЗС. Если открытия нет, то надо искать причину. Это всё для Арий с приводом ПЭП-001 и ранней моделью платы управления, на которой ещё есть подстроечный резистор. Была при ПЭП-001 несколько изменённая плата, и там этот транзистор - VT6.
    • Тема конечно полудохлая но может кто отзовётся.  Скажите таким программатором можно считать и прошить микроконтроллер 78F9116B?  Вот его даташит: 78F9116B.pdf Насколько я понял микроконтроллер "общается" через СОМ порт посредством устройства Fleshpro III. Что это за устройство и с чем его едят ?
    • Ну вот не надо из-за одного случая на всех такое мнение распространять! У меня еще не было ни одного случая, когда техподдержка не встала бы на мою сторону. Только один раз прислали совсем не то, что надо было, я отправил претензию и получил не полную компенсацию, а 60% стоимости (мол, все равно хрень-то какая-то пришла со стоимостью практически такой же, как нужный мне товар). P.S. Не советую покупать вот такую приставку для заточки сверел: жутко кривая фигня, никакой жесткости. Бьет на полтора миллиметра - вряд ли с такими биениями можно будет даже ø5мм заточить, а уж про 1-2мм вообще молчу. (Блин, форум угробил ссылку и заменил ее на какую-то дрянь! Я не виноват!!! вот ссылка: www.aliexpress.com/item/1005001633172301.html) Специально полез и перечитал правила форума (их, кстати, не так-то просто найти!). Нигде нет упоминания о том, что движок форума оборачивает ссылки на алиэкспресс, чтобы владелец форума имел с этого доход. Почему бы явно не указать об этом? Тогда и вопросов не будет...
    • Ониж старенькие. А N.XP  это шаг вперёд. 

  • Набор из XH2.54 разъемов

  • Similar Content

    • By Fordli
      Я написал программу последовательного порта с stm32, OP отправляет число, а затем возвращает число, но возвращаемое число - это какой-то неизвестный символ, скорость передачи синхронизирована 9608, стоп-биты данных и т.д. одинаковы, от tx до rx, все еще грязный код.
      Я поменял 3 помощника для отладки последовательного интерфейса, но они все одинаковые, кто-нибудь знает? Спасибо за ваш ответ.
    • By Solver
      Вопрос такой: как запросить содержимое корневого каталога при использовании библиотеки lfs.h. При этом я имею дело с чужим кодом и там файловая система уже отформатирована (когда-то) и смонтирована (при запуске устройства). Оперировать с каталогами и файлами имена которых я заведомо знаю (или сам создаю) у меня получатся, но для текущей задачи это мне никак не помогает.
      Вероятно мой вопрос очень простой и для многих очевидный, но я тем не менее не смог с наскока найти на него ответ ни в гугле, ни в lfs.h. Очень извиняюсь за невежество, я новичек
    • By hwmaker
      Добрый день.
      На проект требуется программист микроконтроллеров STM32 с пониманием Ethernet.
      Проект:
      плата работает под управлением STM32F413VGT6, представляет собой SIP-приставку для домофона.
      Для связи с Ethernet используется микросхема ENC424J600-I/P - мост SPI <-> Ethernet.
      Ниже приведено краткое описание функционала:
      Устройство должно обеспечивать:
          1.    Прием голоса из домофоной линии и оцифровка с помощью встроенного в контроллер АЦП.
          2.    Передача голоса по сети Ethernet по протоколу RTP. В качестве транспорта использовать UDP.
          3.    Прием голосовых сообщений по Ethernet по протоколу RTP и передачу их на встроенный ЦАП.
          4.    Микроконтроллер должен обеспечивать связь с внешним миром с помощью интерфейса Ethernet через микросхему ENC424J600-PT. 
          5.    Для установления соединения с сервером голосовых сообщений используется протокол SIP 2.0. с поддержкой методов, описанных в RFC 3261. 
          6.  Прием и отработку команд, приходящих по MQTT: открыть входную дверь, открыть шлагбаум и т.п.
          7.  WEB-интерфейс для удаленных настроект и мониторинга рабочих параметров устройства.
          8. Для работу через VPN-роутер контроллер должен поддерживать STUN.
          
      Есть проект для микроконтроллера для аналогичного устройства. Там используется STM32L475RET6.
      Для связи с Ethernet используется так же ENC424J600-I/P.
      Устройство успешно звонить по SIP на сервер. Выполняет приходящие MQTT-команды по открыванию дверей.
      Требуется: 
          поправить ПО под STM32F413VGT6, 
          добавить WEB-интерфейс, 
          добавить возможность удаленного обновления ПО через WEB-интерфейс,
          добавить возможность перезагрузки устройства через WEB-интерфейс,
          добавить возможность хранения данных абонентов во FLASH микроконтроллера и возможность синрохизации этих данных с сервером,
          добавить STUN, 
          исправить метод определения квартиры в которую звонят.
      Есть ТЗ на ПО.
    • By Uhbif
      Хочу сделать вольтамперметр на базе STM32L151, есть ли какие нибудь особенности при разводке платы? Свой вариант прикрепляю ниже. Буду благодарен за дельные комментарии. 
      ВА-30.dch
    • By dim21841
      Добрый день.
      Прошу помощи в выборе контроллера stm32 под следующую задачу:
      Bluetooth HC-05 (1 uart) необходимо связывать по uart с:
      1) MAX232 (2 uart) по 9600, иногда 115200,
      2) с Atmega328 (3 uart) по 115200.
      Задача stm32 выставлять скорость на hc-05 и соединять между собой нужные uart в соответствии с выбором (4 switch в dip-8 корпусе).
      Кто может что-то посоветовать?
      В stm32 пока совсем начинающий.
      STM32 выбрал потому что в перспективе хочу добавить возможность параллельно  выводить данные и на lcd.
      Зарание благодарен за помощь.
×
×
  • Create New...