Jump to content

    

hd44780

Свой
  • Content Count

    1231
  • Joined

  • Last visited

Everything posted by hd44780


  1. SDIO на STM32F723

    Поставил себе ENABLE_SD_DMA_CACHE_MAINTENANCE = 1 изменений не увидел. Да и последние байты у бут-сектора 0x55 и 0xAA, они всегда в порядке были бред там в начале буфера.
  2. SDIO на STM32F723

    Про кэши я в курсе, даже не включал их. Попробовал выключить принудительно - получил HardFault. ST-шники в своих примерах делают #if (ENABLE_SD_DMA_CACHE_MAINTENANCE == 1) /* the SCB_InvalidateDCache_by_Addr() requires a 32-Byte aligned address, adjust the address and the D-Cache size to invalidate accordingly. */ alignedAddr = (uint32_t)buff & ~0x1F; SCB_InvalidateDCache_by_Addr((uint32_t*)alignedAddr, count*BLOCKSIZE + ((uint32_t)buff - alignedAddr)); #endif Это оно по-моему и есть, у меня макроса нет и код этот игнорится
  3. SDIO на STM32F723

    ну в смысле число 0xAA55, а байты 0x55 и 0xAA - здесь всё нормально, сравнивал даже с секторным дампом этой же карты на компе
  4. SDIO на STM32F723

    Привет всем Пытаюсь запустить SD карту на проце STM32F723. За основу взял кубовые примеры (мутный он, этот SDIO :D). Там ещё есть SDRAM, SSD1963, QSPI, USB HS - всё пашет без хала. Т.е. на хале сейчас только SDIO. Инит карты проходит с полпинка без проблем - тип карты, размер сектора, кол-во секторов, всё проходит идеально с полпинка. Пытаюсь читать сектор, ошибок не даёт, но читается какой-то мусор (всегда вроде одинаковый), fatFS естественно падает на взлёте (чего тут ещё ожидать-то). Если надо, могу выложить содержимое 0 сектора настоящего (с компа) и то, что сие SDIO прочитало. Но сигнатура 0x55AAв конце нормальная. Такое ощущение, что оно как-то не так или не туда читает. Читаю через DMA. Пытался читать polling-функциями - столкнулся с ошибками каких-то переполнений, то там, то сям. На ST-шных форумах нашёл, что, мол, поллинг часто не успевает, используйте DMA. Конкретно у меня Transcend 10 класса, 32 гига. Ещё советовали понижать частоту SD карты. Поставил 6 MHz, как там сказали - какие-то сектора начали читаться, но какие-то дают мусор. Кто-то подобрал к нему ключик? Спасибо. STM32F723-SDIO.zip
  5. Прикольный баг. Я такого не замечал, но виндозным терминалом никогда не пользовался, работал в этом - https://digitalchip.ru/terminal-1-9b-rabotaem-s-com-portom/ и команды всегда вводил ТОЛЬКО большими буквами. Зато могу поделиться другим багом - у меня 2 модуля, оба работают в режиме FU2. В этом режиме у модуля пониженное энергопотребление с прослушкой эфира. При этом куча ограничений - скорость только 4800 и какие-то задержки при передаче. Плюс ещё и длинные последовательности байт (по моим наблюдениям больше 10) не передаёт. Но мне этого оказалось достаточно. Так вот, один из модулей при входе в командный режим (SET:=0) всегда включает скорость уарта 9600, другой то включит 9600, то так и остаётся на 4800. Пришлось сделать в прошивке проца хак - сперва он стучится в модуль по 4800, если тот не ответил - врубает 9600. Только после этого система стабильно заработала. Процы у меня - один STM32F030, другой - STM32L152. И ещё раздражает то, что невозможно переключить радиоканал без запоминания его в EEPROM управляющего STM8. Где-то попадалась статья, чуваки пытались поменять STM8 на какой-то STM32, но там, по-моему, дело ничем внятным не закончилось.
  6. Ясно-понятно. Спасибо.
  7. Привет всем. Столкнулся с таким моментом - если проц, подключенный к программатору не отвечает (в моём случае был выставлен режим внешнего кварца, которого на плате вообще нет), то не читается даже версия прошивки самого программатора. Когда я воктнул его в другую плату, где есть кварц и target отвечает - всё нормально заработало. Подскажите - это баг прошивки или супер-мега-фича для вызова у людей холодного пота и мыслей про сдохший программатор? Тыкался в CvAVR. Спасибо.
  8. QSPI не позволяет записывать в память в memory-mapped режиме. Он read-only.
  9. Спасибо, гляну. Я от SDRAM немного отвлёкся, запустил QSPI память w25n01gv, вроде пашет, но частоту выше 16.5 МГц поднять не могу - обмен виснет на опросе какого-то флага. Вожусь пока. Что касается SDRAM, то нашёл, что нога PC2 (сигнал NE0 - nCS) у этого проца двойным дном, по дефолту там сидит АЦП. Добавил в инит пинов SYSCFG->PMCR |= SYSCFG_PMCR_PC2SO; перед манипуляциями с GPIO регистрами. Улучшений пока не заметил. MPU пока выключил, на простую запись/чтение не влияет, а обо всём остальном говорить пока рано.
  10. Разводили сами в альтиуме (под Ф439+такой же SDRAM, который с полпинка взлетел тоже также разводили), заказывали в Китае. Дорожки рисовали руками с контролем длины. В принципе могу выложить альтиумные файлы, секретного там ничего нет, по сути макетка для разборок с этим процом. Плата 6-слойная (Ф439 - 4 слойная была). Настройки чипа взял из того же 439. Что такое "умощнение" внутреннего генератора частоты для работы? Приложил схему синхронизации из куба. FMC там виден. STM32H743I_EVAL вроде смотрел, пересмотрю ещё раз, может прогавил чего.
  11. Повключал и настроил всё: // Enable I-Cache SCB_EnableICache ( ); // Enable D-Cache SCB_EnableDCache(); MPU_Region_InitTypeDef MPU_InitStruct; HAL_MPU_Disable(); /* Configure the MPU attributes as WT for SDRAM */ // MPU_Region_InitTypeDef MPU_InitStruct; MPU_InitStruct.Enable = MPU_REGION_ENABLE; MPU_InitStruct.BaseAddress = SDRAM_BASE; MPU_InitStruct.Size = MPU_REGION_SIZE_64MB; MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; MPU_InitStruct.Number = MPU_REGION_NUMBER1; MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; MPU_InitStruct.SubRegionDisable = 0x00; MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE; HAL_MPU_ConfigRegion ( &MPU_InitStruct ); // Enable the MPU HAL_MPU_Enable ( MPU_PRIVILEGED_DEFAULT ); Никакой разницы не заметил. Может я FMC/SDRAM неправильно сконфигурил?
  12. Вот пытаюсь запустить указанную связку (STM32H743 + SDRAM MT48LC32M16A2-75). Результат пока хреновый - читается какой-то бред. Не пашет вобщем :( Если точнее - весь объём памяти (64 MB) доступен, ни в накие xxxHandler проц не вылетает, но с чтением/записью памяти трудности. После заполнения памяти нулями оттуда читаются слова 0x2004. Казалось бы D13 и D2 где-то коротят на Vcc, но не так-то всё просто - простая запись байтов по адресу 0xC0000000 (у меня банк 0) показывает, что 2-й бит всё же сбрасывается. При этом в MemoryBrowser атоллика видно, что при этом меняются какие-то другие байты по другим адресам - хз почему. Ну и подобные баги. Все кэши проца выключены, На FMC подаётся 180 МГц, на память - 90. Инициализация FMC+чип: Тактирование (тут чистый кубовый хал): // PLL2R - FMC (180 MHz) PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC | RCC_PERIPHCLK_USB | RCC_PERIPHCLK_QSPI | RCC_PERIPHCLK_FMC; PeriphClkInitStruct.PLL2.PLL2M = 8; PeriphClkInitStruct.PLL2.PLL2N = 180; PeriphClkInitStruct.PLL2.PLL2P = 2; PeriphClkInitStruct.PLL2.PLL2Q = 1; PeriphClkInitStruct.PLL2.PLL2R = 1; PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0; PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOMEDIUM; PeriphClkInitStruct.PLL2.PLL2FRACN = 0; // PLL3Q - LTDC (50 MHz) PeriphClkInitStruct.PLL3.PLL3M = 8; PeriphClkInitStruct.PLL3.PLL3N = 50; PeriphClkInitStruct.PLL3.PLL3P = 2; PeriphClkInitStruct.PLL3.PLL3Q = 4; PeriphClkInitStruct.PLL3.PLL3R = 1; PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0; PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOWIDE; PeriphClkInitStruct.PLL3.PLL3FRACN = 0; PeriphClkInitStruct.FmcClockSelection = RCC_FMCCLKSOURCE_PLL2; // PLL2R PeriphClkInitStruct.QspiClockSelection = RCC_QSPICLKSOURCE_PLL; PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } Кварц 8МГц. (8/8)*180/1=180MHz. LTDC нету, просто сконфигурено тактирование. Думать о нём без памяти бессмысленно. Такой же чип памяти прекрасно работает на Ф439. Здесь нашёл тему , но ТС так и не отписался, заработало у него что-то или нет, а сама тема укатилась хз куда... Может я чего не понял, как конфигурить это FMC. От Ф4 оно кое-где отличается. Спасибо.
  13. Конечно. Такая фича облегчает разводку платы в частности. Когда один и тот же уарт Вы можете взять с двух разных сторон чипа и не тянуть дорожки за три-девять земель в обход кучи компонентов на плате ... Или если вам надо включить уарт и ещё что-то, висящее на тех же ногах, например, таймер какой-то. Получается конфликт. Переключением уарта на другие ноги этот конфликт легко устраняется. Ну и тд. Для этого оно и придумано наверное. А если соединять проводками, то пофиг.
  14. не надо такой дисп сажать на F105, у него нет FSMC, ногами дрыгать программно долго будет. Возьмите либо дисп с SPI, либо проц с FSMC типа F103ZET6/F407/...
  15. Нет, не делал пока :( . Подключал только SPI-малявку ILI9163 128x128. Работает. Да и то SPI этого проца недели 2 раскуривал с помощью коллег с этого форума
  16. Купил VK2828U8G5LF, заработал с полпинка :). Всем списибо и с наступающим!
  17. Harbinger , повезло вам. Я крышку содрал, припоя там не было вообще, чистая латунь или из чего там они её сделали. Припаял также аккумулятор на 3в. Модуль молчит, как и молчал. Греется сам чип, который там стоит. Явно сам этот NEO-6M бракованный. Уже 3-й раз нарываюсь на брак. В первый раз модуль с ENC28J60 оказался полным трупом, второй - VS1053 на платке проигрывал половину из того, что должен. Ну и хрен с ним.
  18. Заранее извиняюсь, если написал не в тот раздел. Не нашёл более подходящего.. По сути. Попал в руки GPS модуль GY-NEO6MV2 - https://ru.aliexpress.com/item/GY-NEO6MV2-NEO-6M-GPS-Module-NEO6MV2-With-Flight-Control-EEPROM-MWC-APM2-APM2-5-Large/32785629516.html?spm=a2g0s.9042311.0.0.274233edJaKoCc Пытаюсь подключить пока к компу через USB-UART переходник без каких-либо контроллеров и прочего. Включил - и ничего. В терминале пусто, ни одного байта, ничего. Запускал под монитором ком-порта - там тоже ничего. Даже светодиод молчит, хотя должен то ли светиться, то ли мигать, неважно. Пробовал частоты 9600 и 38400. Ждал долго (около часа). Вычитал, что можно включать и от 3.3в и от 5в, типа там есть стабилизатор. Тоже глухо как в танке. Единственное, что он делает - греет атмосферу - на ощупь довольно горячий. На 3.3в чуть менее горячий, на 5в чуть более горячий. На сайтах типа алиэкспресса вычитал в отзывах, что это для них нормально. Ещё сия хреновина любит жрать электроэнергию - мультиметр показал ток типа 195 мА, хотя всякие там ДШ обещают 65-70 мА. Обнаружил, что на модуле сдохшая батарейка - вместо 3в там около 40 мВ. Выдрал её оттуда вообще. Без батарейки тоже просто греет атмосферу и жрёт миллиамперы. Вопрос - ставить ему другую батарейку (типа CR2032) и париться дальше или ему хана, выкинуть его в помойку и идти купить новый? Или что? Спасибо.
  19. Долго молчал, тестировал. Ещё недели полторы назад вынес радиомодуль на отдельную платку проводами (Vcc, GND, Rx, TX, SET) см по 10, на этой платке на питание поставил керамику 10nF, 100nF, 1uF + электролит 100 uF. Сигнальные провода идут как есть, без кондёров. На SET можно было тоже 10 нан поставить, а на UART боязно как-то - завалит фронты, хз. Платку с процом не экранировал ничем. Второй модуль (который подключен к компу) отнёс подальше от первого - вычитал в статьях про ардуину+HC-12, что модули надо разносить минимум на метр. Про электролит тоже там вычитал (советуют 22uF-1000uF). В этих условиях сбоев пока не видел. Прикрутил к процу и датчику спячку - ногу Tx модуля завёл на RX+PA0 будится импульсами уарта модуля. Один байт, конечно, теряет, ну то ладно, так и задумывалось в общем. С ногой SET ничего не делал, но она заработала, ответы на AT-команды ловлю исправно. Пустое ненужное прерывание собаки выкинул. Больше пока ничего не делал, проверяю.
  20. угу, следствие разного рода отладок. Перенёс RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN; RCC->APB2ENR |= RCC_APB2ENR_SPI1EN | RCC_APB2ENR_SYSCFGEN; в main, ничего не поменялось. К вопросу о Keil и IAR. С выбором типа проца для проекта разобрался, но они оба почему-то генерят совершенно пустые проекты, в которых нет ни одного файла - ни стартового кода, ни main.c - ничего. main-то у меня свой есть, а вот где взять стартап - пока не понял.
  21. Прикладываю проект для кокоса. С кейлом что-то у меня не складывается - показывает только процы ARM. Никаких STM там вообще нет. Пробую IAR. STM32F030-HC-12.zip
  22. осциллом пока не смотрел. Да, как посмотрю, отпишусь. Спасибо Ага. Наказание за передачу данных о погоде по радиоканалу
  23. Взял я это из отладчика, проц задан правильно, стартап файл родом из кокоса. Могу даже полный проект выложить, там ничего секретного нет совершенно.
  24. ага, спасибо. Попробую, отпишусь. Кондёры добавлю. Там кое-что быстро не переделать. Пока могу сказать, что модуль спаян на макетке проволочками. Ф103 был подключен к радиомодулю 15 см проводами. Теми же проводами подключал его и к Ф030 - пофигу.