Jump to content

    

hd44780

Свой
  • Content Count

    1231
  • Joined

  • Last visited

Community Reputation

0 Обычный

About hd44780

  • Rank
    Профессионал
  • Birthday 06/30/1977

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

5071 profile views
  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 раскуривал с помощью коллег с этого форума