-
Постов
2 694 -
Зарегистрирован
-
Победитель дней
2
Весь контент repstosw
-
Мне лень было подключать PNG-декодер, и я в GIMP сконвертировал ваш PNG в RAW в формате ABGR: mantech.zip Там же - в виде сишного хедера.
-
Не поленился, скачал картинку и проверил. Никакой бороды нет, не надо ничего выравнивать, и не надо менять высоту и не нужно выделять лишнюю память. Поворот на 270 градусов 350x157: Координаты (0,0): Координаты (200,100): Прямоугольник: Проверял на таких режимах: #define LCD_PIXEL_WIDTH 800 #define LCD_PIXEL_HEIGHT 480 #define BYTE_PER_PIXEL 4 #define DE2_FORMAT_ABGR_8888 0x01 G2D_BLT.src_image.format=G2D_FMT_ABGR_AVUY8888; G2D_BLT.dst_image.format=G2D_FMT_ABGR_AVUY8888; G2D_BLT.flag=G2D_BLT_ROTATE270; Форматы DE и G2D(источник и приёмник) - полностью совпадают. В противном случае, возможно, при поворотах может быть всё, что угодно. Очевидно, что-то криво настроено: TCON, DE, G2D, или всё вместе.
-
Ну так поворачивайте область с высотой 158, при этом 158-ю линию сделать с прозрачностью 0. Увидите только 157. Не пойму вашей сути боданий с G2D. Нужен шустрый 2D-блиттер: значит смиритесь с рестрикциями, налагаемыми на автомат G2D. Способов красивых обходов масса: от вспомогательного буфера и вырезанию нужной области, до альфы прозрачности...
-
А декодеры не пишут напрямую в память? VE тоже работает с памятью. Кто мешает выделить буфера для G2D с падами ДО- и ПОСЛЕ- активной области? Тем самым - проверить эти пады после работы G2D. А TCON настроить на активную область. Память с падами проинициализировать псевдо-рэндомом, фазировка фиксированным сидом. После работы G2D прочекать пады.
-
Понимаю ваши недовольства. Сам был в аналогичной ситуации. По-хорошему - надо проверить что и куда пишут аппаратные декодеры. У меня на FHD H264 энкодер иногда записывал во вспомогательные буфера больше, чем надо. Вопрос решил дополнительными падами в памяти (привет, перерасход 🙂 ), иначе некорректно отрабатывала функция освобождения (free) памяти, так как структуры аллокатора разрушались, Плюс убеждал заказчика испольовать фреймы с размерами кратными 16. P.S. Надеюсь, функцию memalign используете, для выделения выровненного куска памяти? Иначе, придётся запоминать значение указателя до выравнивания, чтобы потом его корректно освобождать.
-
Поднял I2S на T113-s3. Теперь нет шумов, тресков во время работы устройства. Проверил даже в наушниках. Применено дифференциальное включение и отвязка аналогового домена от китайской платы. Доволен, тем что вышло. Китайцы знатно налажали в разводке платы MangoPi. На видео макет устройства: аудио-ЦАП UDA1334BTS, усилок LM4871T (дифференциальное включение по входу и выходу). В релиз хочу поставить MAX98357. Это и ЦАП и усилок и регулятор усиления. Из даташита на усилитель: Тоесть, работа микросхемы должна быть устойчива к наводкам ВЧ, что немаловажно для моих проектов.
-
Если он может читать из видео-ОЗУ и выводить в стекляшку уже повёрнутый на 90 градусов кадр - тогда это будет очень полезно для мелких дисплеев с портретной ориентацией, которые используются в горизонтальном положении.
-
Второй TCON я уже давно раскурил в этой теме. Работает в паре с TVE для вывода кадра на экран ТВ (NTSC/PAL CVBS)
-
А вот и нифига... В моём случае ваш тезис неправильный. Правильными будут те координаты, которые я давал для своего примера. Очевидно, всё дело в исходниках, которые используются. И не найдёте. Выравниваю на кратность 4.
-
Не понял. А в чём сложность расчитать самостоятельно координаты для вашего случая? Или проверить на мелком прямоугольнике?
-
Шумит. Потому что у него земля AGND соединяется с остальной землёй. Никакого разделения земель нет. Потому что китайцам фиолетово на правильную топологию. Надеюсь, сплошная плоскость на печатной плате улучшит ситуацию. Потому что низкоимпедансная эквипотенциальная земля. Чуто-выше написал ответ - противофазные сигналы дали полезный сигнал, посторонних не слышу (если в аудио-ЦАП нули засылать):
-
Сделал два противофазных сигнала с каналов Left/Right. Работает. Посторонних звуков теперь нет. Даже при работающем источнике тока для подсветки. Вывод А1 микросхемы - резистор отлепил от GND и подключил ко второму каналу.
-
Так и сделано: Но в случае с этой платой CPU, шум не убирается. Остаётся попробовать сделать противофазные сигналы программно: стерео, один из каналов - инверсия второго.
-
Не знаю. Мне достаточно было Linux-исходников. Вот ещё что подумалось: если высота кадра всего 1080, то повернутый прямоугольник 1920x1080 не влезет полность в экран, срежется снизу. Скорее всего G2D не умеет отсечение. Поэтому область задавать надо 1920x1920.
-
С ходу так не определить... Для своих случаев я рисовал картинку на бумаге и арифметически рассчитывал. В первом приближении - представить исходный прямоугольник с начальными координатами левого верхнего угла, затем его повернуть. И рассчитать новое положение этого угла - в координатах дисплея (дисплейного буфера) Он повёрнут. Просто камера одного из собеседников(слева) не была повёрнута на 90 градусов. Очевидно, что да. Эксперименты покажут. Для начала я бы всё-таки попытался вывести не 1920x1080, а в 10 раз меньше 192x108 в центр экрана. Тогда никаких вылетов за пределы видеопамяти не будет. Затем нашёл бы формулу нахождения координат при нужном угле. А потом -вернулся к 1920x1080
-
Имеется два выхода - левый и правый каналы. К сожалению, они не могут работать в противофазе, как это мог делать чип-предшественник(V3s). Поэтому вопрос остается открытым - как сделать дифференциальный выход из однополярного? Пробовал полевой транзистор с двумя резисторами - в цепи стока и истока, и с резисторов снимал два сигнала. Но выигрыша в помехозащищённости это не дало, так как всё крутится вокруг грязной земли. Ситуацию ухудшает источник тока для подсветки (на фотах не показан) - мощный светодиод с током 300 мА, который диммируется ШИМ: если заполнение импульса не равно 0 или 100%, то я слышу также гудение этого преобразователя (источник тока на базе микросхемы DC/DC).
-
А вот и нифига... Взял внешний УНЧ класса D, запитал его напрямую от аккумулятора. Также запитал плату MangoPi напрямую. Плюс и минус питания: разветвляются на УНЧ и на CPU-плату. В наушниках отчётливо слышу чирикание при загрузке программы с SD-карты. Фото ниже: Потом попробовал перекинуть GND УНЧ на другие пины на плате CPU. Нашёл положение с "чистой" землёй. При таком положении чирикание SD-карты в наушниках пропало. Земля очень уязвима - вход УНЧ относительно высокоомный. Плюс на питание УНЧ поставил ФНЧ из резистора 47 Ом и конденсатора 470 мкФ (керамика также присутствует) - для того, чтобы убрать одиночные потрескивания иногда. Фото ниже: Ну, и.... Какие выводы напрашиваются?
-
Но это не означает, что его нельзя написать самому, переложив на SIMD. В TMS320C6745 самостоятельно делал поворот видеобуфера на 90 градусов (потому что дисплей был с портретной ориентацией развёртки, нужна была отрисовка соосная с ходом луча для VSYNC) : void Rot_Buffer(void) { for(int y=0;y<(SCREEN_HEIGHT<<1);y+=8) { u64 * __restrict vc=(u64*)(VIDEO_CACHE+y); u64 * __restrict vb0=(u64*)&VRAMBuffer[((SCREEN_WIDTH-4)<<1)+(SCREEN_WIDTH*y)]; u64 * __restrict vb1=vb0+(SCREEN_WIDTH>>2); u64 * __restrict vb2=vb1+(SCREEN_WIDTH>>2); u64 * __restrict vb3=vb2+(SCREEN_WIDTH>>2); for(int x=0;x<(SCREEN_WIDTH>>2);x++) { _amem8(&vc[(3*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16) _amem8(&vb0[-x]) ))|((u64)((u16) _amem8(&vb1[-x]) )<<16)|((u64)((u16) _amem8(&vb2[-x]) )<<32)|((u64)((u16) _amem8(&vb3[-x]) )<<48); _amem8(&vc[(2*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16)(_amem8(&vb0[-x])>>16)))|((u64)((u16)(_amem8(&vb1[-x])>>16))<<16)|((u64)((u16)(_amem8(&vb2[-x])>>16))<<32)|((u64)((u16)(_amem8(&vb3[-x])>>16))<<48); _amem8(&vc[(1*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16)(_amem8(&vb0[-x])>>32)))|((u64)((u16)(_amem8(&vb1[-x])>>32))<<16)|((u64)((u16)(_amem8(&vb2[-x])>>32))<<32)|((u64)((u16)(_amem8(&vb3[-x])>>32))<<48); _amem8(&vc[(0*(SCREEN_HEIGHT>>2))+(SCREEN_HEIGHT*x)])=((u64)((u16)(_amem8(&vb0[-x])>>48)))|((u64)((u16)(_amem8(&vb1[-x])>>48))<<16)|((u64)((u16)(_amem8(&vb2[-x])>>48))<<32)|((u64)((u16)(_amem8(&vb3[-x])>>48))<<48); } } } Так вот, оно очень хорошо запараллелилось. Проблема в некорректном указании координат вывода финального изображения. Там будет не (0,0). А с учётом поворота. Прямоугольные тоже поворачивает. Рисую на экран 320x240 пару фреймов 160x240 повёрнутые на 270 градусов. Координаты вывода такие: #define BUFFER_WIDTH 320 #define BUFFER_HEIGHT 240 #define WINDOW0_WIDTH 240 #define WINDOW0_HEIGHT 160 #define WINDOW1_WIDTH WINDOW0_WIDTH #define WINDOW1_HEIGHT WINDOW0_HEIGHT #define WINDOW0_X (((3*BUFFER_WIDTH)/4)-(WINDOW0_HEIGHT/2)) #define WINDOW0_Y ((BUFFER_HEIGHT-WINDOW0_WIDTH)/2) #define WINDOW1_X ((BUFFER_WIDTH/4)-(WINDOW1_HEIGHT/2)) #define WINDOW1_Y ((BUFFER_HEIGHT-WINDOW1_WIDTH)/2) //... G2D_Rot.dst_x=WINDOW0_X; //координаты вывода левого фрейма G2D_Rot.dst_y=WINDOW0_Y; G2D_Rot.dst_x=WINDOW1_X; //координаты вывода правого фрейма G2D_Rot.dst_y=WINDOW1_Y;
-
Не будет питающих проводов. Будет 4-слойная печатная плата с внутренними сплошными плейнами земли и питания. Но на модуле платы с процессором - источник звука с землёй, которая соединяется с цифровой не совсем правильно. Потому что китайцы.
-
Мой опыт показал, что он вообще не подавляет пульсации. Поэтому я опасаюсь, что если его запитать от аккумулятора напрямую, то я услышу писк и треск от ШИМ'ов преобразователей - в аудиотракте УНЧ - в наушниках/в динамике, питающихся с этого аккумулятора и питающих другие узлы: 1) ядро процессора 0,95 V 2) DDR память 1,5 V 3) Порты ввода-вывода 3,3 V 4) Подсветка дисплея 12 V (источник тока 20 мА) 5) Подсветка камеры в темное время суток - 6V (источник тока 300 мА ) 6) Трансивер 435 МГц - 5..6 V ( ток при передачи 500 мА) Тоесть: основная цель - не допустить появления помех в аудио-тракте УНЧ , от работы ШИМ конвертеров и цифровых узлов
-
У меня один потребитель требует 5...6 В. Как правильно сделать: 1) запитать все потребители от выхода повышающего преобразователя 5V, в том числе и плату с t113-s3 у которой вышеупомянутый EA3036C ? 2) запитать от 5V только потребитель, требующий питания 5V, а остальное от литий-ионки ? Плюс есть УНЧ PAM8301 - как правильно сделать его питание? Чтобы в отстутствии сигналов не было треска. LDO поставить? На какое напряжение? И откуда брать первичное питание - с повышающего DC/DC или с литий-ионки?
-
Насколько правильно получить выходное напряжение 3.3V из одной литий-ионки (4,2...3,7V), используя понижающий DC/DC конвертер типа EA3036C ? Даташит на микросхему DC/DC: https://datasheet.lcsc.com/lcsc/2005300208_Everanalog-IC-design-EA3036CQBR_C570857.pdf Запитал плату MangoPi с T113-s3 от литий-ионки: напряжение 3.3V присутствует. Ток потребления - до 0.3A. Насколько корректно? Два аккумулятора последовательно ставить - не хочу.
-
В таком случае, использую инвалидацию кеша, когда процессор использует данные от декодера. И сброс с кеша, когда процессор готовит данные для энкодера. Длина и ширина источника. Да. Константа с нужным порядком следования компонент RGB. Да. Для RGB нужен только с индексом [0]. остальные не нужны. Это координаты левого верхнего угла вывода изображения в финальном видеобуфере.
-
Интересно, как VNA может помочь ответить на вопрос 1):