Перейти к содержанию
    

Поиск

Показаны результаты для тегов 'stm32f429'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Нейронные сети и машинное обучение (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Методы и средства верификации ПЛИС/ASIC
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Ремонт и отладка
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники


Звание

Найдено: 0 результатов

  1. Всем привет. Подскажите, каким образом можно гарантированно определить, что обмен по SPI (прием/передача, с использованием DMA) завершен? У меня обращение к внешней флэш-памяти по SPI может происходить из главного цикла, а также в обработчике прерывания EXTI. Если прерывание возникло в момент, когда в главном цикле что-то писалось/читалось во флэш, то данные конечно же портятся.. Пробовал смотреть биты SPI-модуля - TXE, RXNE И BUSY, но подобрать правильно условие так и не смог, либо оно никогда не выполняется, либо наоборот выполняется тогда, когда нельзя запускать обмен по SPI. Почитал про флаги DMA, они выставляются по завершению чтения/записи, но в соответствующем обработчике прерываний эти флаги сбрасываются.. И, похоже, использовать их для определения завершения обмена не получится. Понимаю, что можно убрать код обращения к флэш-памяти из обработчика прерывания EXTI (пока так и сделал), но тем не менее - каким образом можно узнать, что данные прочитаны/отправлены и можно запускать обмен по SPI?
  2. Приветствую. Интересует вопрос, каким образом можно подключить к 2-м независимым контроллерам LCD TFT по LTDC? Контроллер с источником сигнала можно выбирать переключателем. Есть ли специальные мультиплексоры? Режим RGB565. Контроллер STM32F429
  3. Доброго времени суток! Вопрос возможно идиотский, я не силен в сетевых делах. Поднял на моей железке (stm32f429 + ksz8721) tcp-стек (FreeRTOS+TCP) и запустил обычный пинг с большой длинной (1460). Обнаружил, что иногда ответ на ping просто не приходит (происходит ошибка таймаута, а в wireshark не видно никакого ответа, даже битого). Это происходит редко скажем на 1000 запросов один таймаут. Долго мучался искал ошибку в драйвере. Когда отчаялся подумал, может ошибка не софтовая, тогда вывел значения регистра ETH_MMCRFCECR (Ethernet MMC received frames with CRC error counter register) и выяснил, что его значение постепенно увеличивается. Вот только таймаутов больше, чем значение в этом регистре (например этот счетчик натикал 131, а таймаутов 160). Но этот счетчик стабильно увеличивается и, если это можно так назвать, "коррелирует" с количеством таймаутов. Сейчас моя железка соединена с ноутбуком "напрямую". На ноуте в wireshark'е я не вижу входящих фреймов с битым crc, но если я правильно понимаю это отрабатывается уровнем ниже, поэтому я и не увижу ничего. Правильно ли я понимаю, что увеличивающийся ETH_MMCRFCECR сигнализирует о входящий фреймах с битым CRC, что косвенно указывает на аппаратный "недуг"?
  4. Доброго времени суток! Вроде бы тривиальная задача, а вот однако застрял не могу понять, где ошибся. Проц - stm32f429. Суть такая "верхнее" приложение парсит hex-файл, выбрасывая из него все служебные данные, и данные не относящиеся к flash. Далее полученное подобие bin отправляется байт за байтом по последовательному порту в микроконтроллер. Микроконтроллер принимает, зашивает и переключается. Так вот после переключения ничего не происходит, проц зависает непонятно где. Прошивку принятой программы я делаю так: #define AVALIABLE_SECTORS_NUM 17 /**< @brief Общее количество доступных мне секторов */ #define USER_APP_START_ADR 0x08020000 /**< @brief Адрес куда шить программу */ /** Сектора, которые мне доступны */ static const u16 sectors [AVALIABLE_SECTORS_NUM] = { FLASH_Sector_5, FLASH_Sector_6, FLASH_Sector_7, FLASH_Sector_8, FLASH_Sector_9, FLASH_Sector_10, FLASH_Sector_11, FLASH_Sector_12, FLASH_Sector_13, FLASH_Sector_14, FLASH_Sector_15, FLASH_Sector_16, FLASH_Sector_17, FLASH_Sector_18, FLASH_Sector_19, FLASH_Sector_20, FLASH_Sector_21 }; /** Тут лежит принятая прошивка (массив в SDRAM) */ static u8 __attribute__((section ("._sdram"))) userApp[MAX_BIN_FILE_LEN]; /** Это счетчик принятых байт */ static u32 byteCount = 0; void programmUserApp (void) { u32 numOfPages = byteCount / PAGE_LEN; if (byteCount % PAGE_LEN) numOfPages++; FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR); /** Стираю необходимые мне сектора */ for (u32 i = 0; i < numOfPages; i++) { if (FLASH_EraseSector(sectors[i], VoltageRange_3) != FLASH_COMPLETE) { FLASH_Lock(); while (1); /* Стопор на всякий случай */ } } /** Далее шью по 4 байта */ u32 * word = (u32*)userApp; u32 wordCount = byteCount/4; if (byteCount%4) wordCount++; u32 adr = USER_APP_START_ADR; for (u32 i = 0; i < wordCount; i++) { if (FLASH_ProgramWord(adr, *(word++)) != FLASH_COMPLETE) { FLASH_Lock(); while (1); /* Стопор на всякий случай */ } adr += 4; } FLASH_Lock(); } Далее, чтобы удостовериться, что я зашил, то что хотел, я считываю и вывожу в последовательный порт данные, которые оказались во flash в результате моих манипуляций: void showProgram (void) { u8 * p = (u8*) USER_APP_START_ADR; printf ("\r\n"); for (u32 i = 0, j = 0; i < byteCount; i++, j++) { if ( (j>0) && ((j%16) == 0) ) printf ("\r\n"); printf ("%02X", p[i]); } printf ("\r\n"); printf ("End\r\n"); } Переключаю программу вот так: typedef void(*VoidFunction)(void); void jumpToUserApp (void) { NVIC_SetVectorTable(NVIC_VectTab_FLASH, (USER_APP_START_ADR & (~(0x08000000)))); u32 jumpAddress = *(__IO uint32_t*) (USER_APP_START_ADR + 4); VoidFunction jumpToApp = (VoidFunction) jumpAddress; __set_MSP(*(__IO uint32_t*) USER_APP_START_ADR); jumpToApp(); } Так вот, после считыания я вижу, что зашилось именно то, что лежит в hex-файле в полях данных. То есть данные в hex и во flash совпадают (за вычетом служебных данных). Я не могу понять, что я упустил. Есть у кого соображения, поделитесь если не трудно?
  5. Господа, есть вопрос. Хочу прицепить к STM32F429 дисплей через LTCD Есть у меня дисплей с платой, на которую напаян SSD196. И я обратил внимание, что от контроллера к разъему линии подходят сплошной шиной. Ну то есть последовательность пинов на контроллере соответствует последовательности пинов разъема. У меня же получилось как-то вразнобой. Гляньте на разводку, не будет ли проблем с LTCD ? Ничего что у меня есть линии которые оттрассированы так что дорожка идет скажем вверх, затем после VIA меняет направление на противоположное в другом слое? Не создаст ли это паразитную индуктивность?
×
×
  • Создать...