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

hd44780

Свой
  • Постов

    1 236
  • Зарегистрирован

  • Посещение

Весь контент hd44780


  1. Вобщем вроде понял происходящее. На обоих выходах ЦАПА буферы выключены // MCR.MODE1 = 010 - DAC channel1 is connected to external pin with Buffer disabled DAC -> MCR = DAC_MCR_MODE1_1; // OUT2 - connect to internal logic and to pin PA5, buffer is OFF // MCR.MODE2 = 001 - DAC channel1 is connected to pin PA5 and internal logic with Buffer disabled DAC -> MCR &= ~DAC_MCR_MODE2; DAC -> MCR |= DAC_MCR_MODE2_0; Буферы выключены сознательно, т.к. при этом на выходах почти чистый 0 (где-то 2-3 мВ). Если буферы включить - там порядка 0.4-0.5 в - мне это мешает. Видимо какой-то операционник подключается, который не ахтец. В качестве лирического отступления - год-полтора назад пробовал вместо ЦАПА цифровой потенциометр (условия схемы это позволяют, высокая ёмкость выхода и прочее - не проблема) - тот вообще на выходе идеальный 0 даёт. Перешёл на ЦАПы только ради разрешения - потенциометр 8 бит, ЦАП (любой) - 12. Питание схемы полностью импульсное - первичный БП 24в, потом импульсный преобразователь до 5в, на его выходе я добавил LowESR электролит 500 мкФ. Платa Nucleo с процом питается от этих 5в. На плате стоит штатный AMS1117-3.3 с какими-то мелкими конденсаторами типа 0.1 мкф. Схемы плат дельцы из ST уже давно не предоставляют. На выходах цапа наблюдаются пачки импульсных помех до 0.5 в (если верить моему осциллу UT-81B). Первичный БП - типа такого , только выходнй каскад у меня чуть другой, там я тоже оба выходных электролита поменял, родные заметно хуже были. На выходе компаратора честный прямоугольник, но с многократными беспорядочными импульсами 0-1-0. При росте напряжения IN+ их кол-во и частота сильно растут, это и приводит к свечению светодиода. Так что название темы оказалось некорректным, надо было раньше осциллом потыкать, потом уже писать 😀 Попробую запитать его от транса + LM7805, чтобы полностью уйти от импульсного питания, хотя уйти от него не получится, т.к. проц по задумке должен управлять понижающим преобразователем напряжения с 24в вниз. Сам преобразователь работает, сделаны вольтметр, амперметр и т.п. На компараторе собирался сделать аппаратную защиту тот оверлода с управляемым порогом. Т.е. его выход должен вырубать реле на выходе.
  2. Был 00, задал 11 - разницы не заметил. Попробовал ради прикола включить инверсию выхода COMP1 -> CSR = COMP_CSR_HYST | COMP_CSR_INMSEL_2 | COMP_CSR_INMSEL_0 | COMP_CSR_POLARITY; оно работает - теперь диодик не плавно разгорается, а плавно затухает 😀 У них там и инверторы аналоговые стоят явно 😂 ШИМ - не знаю, как-то не догнал до такого, завтра ткну осциллом туда, отпишусь.
  3. Привет всем. Решил использовать COMP1 на процессоре STM32G0B1RET6. Для тестирования (типа пощупать) подключил так: COMP1 IN+ - DAC OUT1 -- проверяемый сигнал, управляется кнопками (увеличить - уменьшить) COMP1 IN- - DAC OUT2 -- порог срабатывания. Пока неуправляемый COMP1 OUT - PA0 (или PA11) -- внешний выход компаратора К внешнему выходу компаратора подключен простой светодиодик. Просто чтоб видно было. Также выход компаратора опрашивается кодом (он есть в регистрах) и выводится на дисплей. Результат сего действа - битик в регистре ведёт себя довольно адекватно, а на пине я наблюдаю не цифровой уровень (как должно быть), а буквально аналоговый сигнал 0 - 3.3в (я туда кроме светодиода ещё и вольтметр подключил). Когда напряжение DAC OUT1 приближается к DAC OUT2 выход компаратора в регистре сброшен (т.е. IN+ < IN-), а светодиодик на выходе уже начинает светиться. При дальнейшем увеличении DAC OUT1 (IN+) компаратор срабатывает, яркость светодиода растёт. Вопрос - что это за дичь и как получить нормальный цифровой выход? Или я где-то ошибся? Я планировал подключить туда что-то типа К155ТМ2, чтобы аппаратно отключать реле. Я, конечно, понимаю, что в конечном итоге всё будет зависеть от порога срабатывания конкретной микросхемы, подключенной к выходу, но ведь у компаратора по определению должен быть цифровой выход. Пробовал использовать PA11 вместо PA0 - то же самое. Проц вроде настоящий, не пиленый. Это плата NUCLEO-G0B1RE, купленная на Украине в 2019 году, т.е. до всей этой политическо-санкционной хрени. Прилагаю мои исходники либы DAC+COMP dac_comp_lib.c
  4. Вот эта штука https://github.com/Postlast/USB-Blaster_STM32f1 у меня в вин 10 (не виртуалка) нормально взлетела. Quartus 22.1 SE программатор увидел без проблем, Altera MaX2 EPM570 программируется и работает. Там и исходники для кейла есть, можно улучшать 😀
  5. Привет, народ. Имею схожую проблему. В моём случае квартус просто зависает при запуске окна программатора при подключенном программаторе и отвисает обратно при его отключении. Вскрыл свой бластер - пика там нет, там STM32F103C8T6 + буфер-повторитель 74HC244D. Судя по всему тоже ничего не сделать кроме замены программатора? Виртуалка с вин7 ведёт себя также. Пробовал программатор без плисины - квартус тоже повис. PS. Пару-тройку лет назад, когда на компе была вин7 этот же комплект нормально работал, я вообще обо всём вышеописанном и не думал. Тогда же сделал на 100 пиновой EPM570 какую-то мигалку светодиодом, так она до сих пор им исправно мигает 😀 Заметил ещё, что бластер выдает из себя питание 2.6в вместо 3.3, хотя в нём стоит AMS1117-3.3. Дал плисине внешнее питание 3.3в - ничего не изменилось. Правда я не проверил вариант с внешним питанием на win7 виртуалке. Какое было питание 2-3 года назад, я не помню, но работал тогда с питанием от этого бластера.
  6. SDIO на STM32F723

    Поставил себе ENABLE_SD_DMA_CACHE_MAINTENANCE = 1 изменений не увидел. Да и последние байты у бут-сектора 0x55 и 0xAA, они всегда в порядке были бред там в начале буфера.
  7. 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 Это оно по-моему и есть, у меня макроса нет и код этот игнорится
  8. SDIO на STM32F723

    ну в смысле число 0xAA55, а байты 0x55 и 0xAA - здесь всё нормально, сравнивал даже с секторным дампом этой же карты на компе
  9. 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
  10. Прикольный баг. Я такого не замечал, но виндозным терминалом никогда не пользовался, работал в этом - 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, но там, по-моему, дело ничем внятным не закончилось.
  11. Ясно-понятно. Спасибо.
  12. Привет всем. Столкнулся с таким моментом - если проц, подключенный к программатору не отвечает (в моём случае был выставлен режим внешнего кварца, которого на плате вообще нет), то не читается даже версия прошивки самого программатора. Когда я воктнул его в другую плату, где есть кварц и target отвечает - всё нормально заработало. Подскажите - это баг прошивки или супер-мега-фича для вызова у людей холодного пота и мыслей про сдохший программатор? Тыкался в CvAVR. Спасибо.
  13. QSPI не позволяет записывать в память в memory-mapped режиме. Он read-only.
  14. Спасибо, гляну. Я от SDRAM немного отвлёкся, запустил QSPI память w25n01gv, вроде пашет, но частоту выше 16.5 МГц поднять не могу - обмен виснет на опросе какого-то флага. Вожусь пока. Что касается SDRAM, то нашёл, что нога PC2 (сигнал NE0 - nCS) у этого проца двойным дном, по дефолту там сидит АЦП. Добавил в инит пинов SYSCFG->PMCR |= SYSCFG_PMCR_PC2SO; перед манипуляциями с GPIO регистрами. Улучшений пока не заметил. MPU пока выключил, на простую запись/чтение не влияет, а обо всём остальном говорить пока рано.
  15. Разводили сами в альтиуме (под Ф439+такой же SDRAM, который с полпинка взлетел тоже также разводили), заказывали в Китае. Дорожки рисовали руками с контролем длины. В принципе могу выложить альтиумные файлы, секретного там ничего нет, по сути макетка для разборок с этим процом. Плата 6-слойная (Ф439 - 4 слойная была). Настройки чипа взял из того же 439. Что такое "умощнение" внутреннего генератора частоты для работы? Приложил схему синхронизации из куба. FMC там виден. STM32H743I_EVAL вроде смотрел, пересмотрю ещё раз, может прогавил чего.
  16. Повключал и настроил всё: // 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 неправильно сконфигурил?
  17. STM32H743 + SDRAM MT48LC32M16A2-75

    Вот пытаюсь запустить указанную связку (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 оно кое-где отличается. Спасибо.
  18. Конечно. Такая фича облегчает разводку платы в частности. Когда один и тот же уарт Вы можете взять с двух разных сторон чипа и не тянуть дорожки за три-девять земель в обход кучи компонентов на плате ... Или если вам надо включить уарт и ещё что-то, висящее на тех же ногах, например, таймер какой-то. Получается конфликт. Переключением уарта на другие ноги этот конфликт легко устраняется. Ну и тд. Для этого оно и придумано наверное. А если соединять проводками, то пофиг.
  19. не надо такой дисп сажать на F105, у него нет FSMC, ногами дрыгать программно долго будет. Возьмите либо дисп с SPI, либо проц с FSMC типа F103ZET6/F407/...
  20. Нет, не делал пока :( . Подключал только SPI-малявку ILI9163 128x128. Работает. Да и то SPI этого проца недели 2 раскуривал с помощью коллег с этого форума
  21. Купил VK2828U8G5LF, заработал с полпинка :). Всем списибо и с наступающим!
  22. Harbinger , повезло вам. Я крышку содрал, припоя там не было вообще, чистая латунь или из чего там они её сделали. Припаял также аккумулятор на 3в. Модуль молчит, как и молчал. Греется сам чип, который там стоит. Явно сам этот NEO-6M бракованный. Уже 3-й раз нарываюсь на брак. В первый раз модуль с ENC28J60 оказался полным трупом, второй - VS1053 на платке проигрывал половину из того, что должен. Ну и хрен с ним.
  23. Заранее извиняюсь, если написал не в тот раздел. Не нашёл более подходящего.. По сути. Попал в руки 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) и париться дальше или ему хана, выкинуть его в помойку и идти купить новый? Или что? Спасибо.
  24. Долго молчал, тестировал. Ещё недели полторы назад вынес радиомодуль на отдельную платку проводами (Vcc, GND, Rx, TX, SET) см по 10, на этой платке на питание поставил керамику 10nF, 100nF, 1uF + электролит 100 uF. Сигнальные провода идут как есть, без кондёров. На SET можно было тоже 10 нан поставить, а на UART боязно как-то - завалит фронты, хз. Платку с процом не экранировал ничем. Второй модуль (который подключен к компу) отнёс подальше от первого - вычитал в статьях про ардуину+HC-12, что модули надо разносить минимум на метр. Про электролит тоже там вычитал (советуют 22uF-1000uF). В этих условиях сбоев пока не видел. Прикрутил к процу и датчику спячку - ногу Tx модуля завёл на RX+PA0 будится импульсами уарта модуля. Один байт, конечно, теряет, ну то ладно, так и задумывалось в общем. С ногой SET ничего не делал, но она заработала, ответы на AT-команды ловлю исправно. Пустое ненужное прерывание собаки выкинул. Больше пока ничего не делал, проверяю.
×
×
  • Создать...