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

Allwinner T113-s3 уделал HiFi4 DSP. Смеяться или плакать?

1 hour ago, Obam said:

А вы учитываете рекомендуемое\предпочтительное направление обзора, на чертежах дисплеев обычно стрелочкой обозначается и азимутом (6 часов, 12 часов)? Ваш-то для портретной ориентации проектировался (скорее всего на 6 ч взгляд должен быть).

Учёл конечно!  Отдаю себе отчёт в том, что дисплей 240x320.  А не 320x240.   И это надо учитывать при синхронизации вывода кадра из TCON в GRAM LCD.:yes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, sasamy сказал:

нашёл интересный вариант -

Он же DSIшный)))

14 часов назад, repstosw сказал:

И это надо учитывать при синхронизации вывода кадра из TCON в GRAM LCD.:yes:

Вопрос по JPEG декодеру. Пока были картинки 1024х768 вопросов не было, а вот 1366х768 он в упор не хочет воспринимать, причем 1360х768 нормально, вопрос, может знаете, как побороть это или это по-жизни ошибка выравнивания? Просто матрица 1366х768, и эти 8 пикселей пустые - неприятно)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У кого-то есть XtDevTools RI-2020.4 под вин32?

или может кто-то давно качал себе Xplorer-8.0.15-windows-installer.exe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, mantech said:

1366х768 он в упор не хочет

Буфер на 1376 ради эксперимента попробуете 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, mantech said:

1366х768 он в упор не хочет воспринимать

Если используете  аппаратный декодер, то и не будет работать. Так как он может обрабатывать только разрешения кратные 16-ти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 минуты назад, GenaSPB сказал:

Буфер на 1376

Да, тоже так подумал, завтра попробую..

31 минуту назад, Ozelot сказал:

Так как он может обрабатывать только разрешения кратные 16-ти.

Да, похоже на то, жаль, интересно, как обходят на компах с такими матрицами, там только программно, с помощью SSE, но у него на сколько помню, тоже кратность есть...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/28/2024 at 5:51 PM, mantech said:

Он же DSIшный

в конце даташита есть код инициализации "Appendix 2:NT35521 REGISTER SETTING" проблема c mipi-ми панелями из-за его отсутствия возникают. В Linux уже есть драйвер панели с таким же контроллером, достаточно код инициализации подправить если он не такой же

https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/panel/panel-sony-tulip-truly-nt35521.c#L44

On 1/28/2024 at 11:00 PM, mantech said:

как обходят на компах с такими матрицами, там только программно, с помощью SSE

при чём тут матрица интересно.. да и на armv7a neon есть для jpeg

https://libjpeg-turbo.org/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, mantech said:

Вопрос по JPEG декодеру. Пока были картинки 1024х768 вопросов не было, а вот 1366х768 он в упор не хочет воспринимать, причем 1360х768 нормально, вопрос, может знаете, как побороть это или это по-жизни ошибка выравнивания? Просто матрица 1366х768, и эти 8 пикселей пустые - неприятно)))

Нужно размеры JPEG округлить в бОльшую сторону до 16.  А на дисплей вывести через BitBlt G2D, вырезав ровно нужную область под дисплей.

 

Пытаюсь запустить TCON в режиме IF CPU/i80. Чё-т пока не получается(((   Дисплей рабочий - через ногодрыг работает, а через TCON не хочет.

Осциллографа нет, времянки и сигналы посмотреть не могу.  Пытался вольтметром определить уровни активного: делал цикл чтения и цикл записи.  Определил, что линии должны быть проинвертированы:

	pdat.timing.h_sync_active  = 1; //RD ---\___/---
	pdat.timing.v_sync_active  = 1; //CS ---\___/---

	pdat.timing.den_active     = 1; //RS
	pdat.timing.clk_active     = 1; //WR ---\___/---

 

Мэпинг для 8-битной шины такой:

IO0 VSYNC => CS (выбор устройства, активный 0)
IO1 HSYNC => RD (строб чтения, активный 0)
IO2 DCLK => WR (строб записи, активный 0)
IO3 DE => RS (0 - индекс(команда), 1 - данные)

D12  - R4,G2 - LCD D15  дисплее используются линии D15..D8 для шины 8 бит)
D11  - R3,G1 - LCD D14
D10  - R2,G0 - LCD D13
D7  - R1,B4 - LCD D12
D6  - R0,B3 - LCD D11
D5  - G5,B2 - LCD D10
D4  - G4,B1 - LCD D9
D3  - G3,B0 - LCD D8

 

Проверил уровни в моменты чтения и записи вольтметром. Они соответствуют тем, что в программе.

Цикл записи:

void LCD_Index(u32 index)
{
 LCD_Wait();
 LCD_CPU_IF_REG&=~(1<<25); //CA=0
 LCD_CPU_WR_REG=index;
}

Цикл чтения:

void LCD_Data(u32 data)
{
 LCD_Wait();
 LCD_CPU_IF_REG|= (1<<25); //CA=1
 LCD_CPU_WR_REG=data;
}

Запись в регистр:

void LCD_IndexData(u32 index,u32 data)
{
 LCD_Index(index);
 LCD_Data(data);
}

Всё остальное:

#define LCD_CPU_IF_REG (*((IO u32*)(T113_TCONLCD_BASE+0x60)))
#define LCD_CPU_WR_REG (*((IO u32*)(T113_TCONLCD_BASE+0x64)))

void LCD_Wait(void)
{
 while(LCD_CPU_IF_REG&(1<<23)); //WR wait 
 while(LCD_CPU_IF_REG&(1<<22)); //RD wait
}

 

И ещё непонятно, этот TCON самостоятельно разруливает 16-битные записи на две 8-битные, или надо самому это делать?

Ну тоесть чтобы отправить 16-битную команду через 8-битную шину: надо сначала отправить старший байт команды, потом младший байт команды. Затем отправить старший байт данных, потом младший байт данных.  Тоесть - 4 записи.   Столько же записей должно быть и через TCON?  Или он сам разделяет одну 16-битную запись в две 8-битных?

И вообще, учитывая бешеную популярность  матриц на шине i8080 у китайцев, особенно на контроллерах ILI9325 и им подобных,  неужели никто не озадачился как их подружить с Allwinner ?   Может есть фрагменты кода в Линуксе, которые подскажут как работать с TCON в режиме CPU/i80 ?

 

Второй немаловажный вопрос:  как установить времянки через TCON в режиме CPU/i80 ?  Ширина стробов чтения, записи. И прочие вещи.   Вижу там только времянки развёртки дисплея через RGB-итерфейс.

 

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

1 час назад, repstosw сказал:

И ещё непонятно, этот TCON самостоятельно разруливает 16-битные записи на две 8-битные, или надо самому это делать?

Ну тоесть чтобы отправить 16-битную команду через 8-битную шину: надо сначала отправить старший байт команды, потом младший байт команды. Затем отправить старший байт данных, потом младший байт данных.  Тоесть - 4 записи.   Столько же записей должно быть и через TCON?  Или он сам разделяет одну 16-битную запись в две 8-битных?

И вообще, учитывая бешеную популярность  матриц на шине i8080 у китайцев, особенно на контроллерах ILI9325 и им подобных,  неужели никто не озадачился как их подружить с Allwinner ?   Может есть фрагменты кода в Линуксе, которые подскажут как работать с TCON в режиме CPU/i80 ?

Второй немаловажный вопрос:  как установить времянки через TCON в режиме CPU/i80 ?  Ширина стробов чтения, записи. И прочие вещи.   Вижу там только времянки развёртки дисплея через RGB-итерфейс.

tcon de 2.0

de_lcd.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, repstosw said:

И ещё непонятно, этот TCON самостоятельно разруливает 16-битные записи на две 8-битные, или надо самому это делать?

Ну тоесть чтобы отправить 16-битную команду через 8-битную шину: надо сначала отправить старший байт команды, потом младший байт команды. Затем отправить старший байт данных, потом младший байт данных.  Тоесть - 4 записи.   Столько же записей должно быть и через TCON?  Или он сам разделяет одну 16-битную запись в две 8-битных?

Проделал замеры, в ходе которых пришёл к выводу, что TCON пишет отдельным байтом. Он не производит аппаратного расщепления слова на байты шины.

Выясняется элементарно:  путём записи в регистр LCD_CPU_WR_REG значений: 0xFF, 0xFF00 и 0xFFFF. И вольтметром смотрим напряжения на ножках, в программе циклическая запись.

Кроме того, обнаружен бит-свопинг на шине данных (что я собственно и предвидел):  при записи и чтения команд/данных нужно учитывать положения бит.

Тоесть чтобы послать байт на шину дисплея через TCON, нужно сделать следующие манипуляции над байтом:

#define CONVERT(b) ((((b)&0x1F)<<3)|(((b)&0xE0)<<5))

Биты идут так:

15 14 13 12 11 10 9 8  7  6  5  4  3  2  1  0
0   0  0 D7 D6 D5 0 0 D4 D3 D2 D1 D0  0  0  0 - биты байта в регистре LCD_CPU_WR_REG

D7 D6 D5 D4 D3 D2 D1 D0 - биты байта на шине LCD_D12/LCD_D11/LCD_D10/LCD_D7/LCD_D6/LCD_D5/LCD_D4/LCD_D3

 

Хотя они могли этот свопинг делать аппаратно, с учётом битов 28...31 регистра LCD_CPU_IF_REG : 1110 - 8 bit 65K mode.

При чтении  из регистров биты нужно просвопать в обратном порядке.

 

Кроме того, обнаружено следующее:

CS,RD,WR вначале всегда =1, D0..D7 = 0, RS = 0.  Никаких Z-состояний шины данных!

RS - устанавливается только при начале цикла чтения/записи (запись в регистр LCD_CPU_WR_REG или чтение регистра LCD_CPU_RD0_REG)

 

4 hours ago, vasilius said:

tcon de 2.0

de_lcd.zip

Это всё хорошо, но я не увидел где устанавливается ширина стробов чтения, записи. И прочие вещи, которые немаловажны.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/29/2024 at 2:57 AM, repstosw said:

И вообще, учитывая бешеную популярность  матриц на шине i8080 у китайцев

просто лет 15 назад наделали столько что до сих пор не продали

On 1/29/2024 at 2:57 AM, repstosw said:

неужели никто не озадачился как их подружить с Allwinner ?

а какой смысл - современные панели давно не используют свою память и разрешения уже на порядки больше. Нашёл очередной хороший вариант, сначала через

https://www.panelook.com/

выставил интересующие параметры панели, нашёл кучу вариантов с даташитами и внезапно через поиск озона нашёл запчасть за копейки с таким контроллером HSD070PWW1

https://datasheetspdf.com/pdf-file/1098796/HannStar/HSD070PWW1-B01/1

Asus MeMO Pad ME172V

LVDS 1280х800, удобное подключение через 30 пиновый разъём FPC и из напряжений нужно только 3.3В, на яндекс маркетк и озоне за примерно 800 рублей есть модуль LCD+тач

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, sasamy сказал:

при чём тут матрица интересно..

В смысле? Прямом, у нее не кратное разрешение.

Вообщем попробовал 1376 честно говоря не очень, если использовать плоскость VUV то можно настроить скалер, чтобы он 1360 "вытягивал" в 1366, выглядит вполне прилично, а вот обратно с 1376 не очень, срезает часть края экрана. 

8 часов назад, repstosw сказал:

А на дисплей вывести через BitBlt G2D, вырезав ровно нужную область под дисплей.

Походу так и придется, неудобные эти округления больно(((  Хорошо, хоть в 1920х1080 все норм без округлений...

19 минут назад, sasamy сказал:

С одной стороны хорошо, что LVDS, с другой - она тоже 6и битная((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/29/2024 at 11:51 AM, mantech said:

В смысле? Прямом, у нее не кратное разрешение.

те вы считаете что сайты в инете под вашу матрицу верстаются ? логичнее было бы подумать что картинки просто масштабируются под любое разрешение

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, sasamy сказал:

логичнее было бы подумать что картинки просто масштабируются

Вполне возможно, хотя самой винде приходится с разрешением матрицы работать, скорее всего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...