Страница 1 из 3

Инициализация видеоконтроллера T112

Добавлено: Сб сен 14, 2013 12:18:09
wss60
Есть дисплей с видеоконтроллером T112.
Не магу ни как разобраться, как посылать ему команды по I2C шине…
Правильно ли я отправляю команды? И зачем там 2 slave адреса?

Код: Выделить всё

void send_cmd(unsigned char addr, unsigned char data){
  I2C_Start();          // старт
  I2C_WriteByte(0x50);  // slave адрес
  I2C_WriteByte(addr);  // адрес регистра
  I2C_WriteByte(data);  // данные
  I2C_Stop();           // стоп
} 
tw112.pdf
Часть даташита
(156.17 КБ) 420 скачиваний

Re: Инициализация видеоконтроллера T112

Добавлено: Вт сен 17, 2013 14:53:32
Alexeyslav
Вероятно это составное устройство, которое логически работает как два устройства на шине каждое со своим адресом.

Re: Инициализация видеоконтроллера T112

Добавлено: Пн июн 23, 2014 13:18:17
taran_ob
Удалось инициализировать?

Re: Инициализация видеоконтроллера T112

Добавлено: Пн июн 23, 2014 22:17:33
wss60
Не удалось...
Не понятно: по какому адресу отсылать данные, как настроить Tcon, питание матрицы и пр.
Нету нормального даташита.
Есть только исходники китайского dvd с похожим контроллером.

Re: Инициализация видеоконтроллера T112

Добавлено: Вт июн 24, 2014 02:49:00
taran_ob
Киньте в личку адрес, отправлю полный даташит на t112 с регистрами.
Есть у меня экранчик на таком скалере без центрального проца, хочу запустить...
И еще есть рабочий двд со скалером MX88V462 (даташита нет) и цпу MT1389HD, сейчас пытаюсь сниферить инициализацию. Нужно отсеить остальные микрухи сидящие на шине. Возможно ковыряние прояснит картину с t112.

Re: Инициализация видеоконтроллера T112

Добавлено: Вт июн 24, 2014 04:24:53
wss60
Даташит с регистрами у меня есть, но разобраться в нем - что куда в какой последовательности не смог…
Скинул в лс исходники.
Там есть инициализация контроллера и дефейны для разных разрешений дисплеев – может, чем поможет…

Re: Инициализация видеоконтроллера T112

Добавлено: Вт июн 24, 2014 13:44:50
taran_ob
О! Спасибо!
Лог инициализации скалера снял. Теперь, имея даташит, отброшу OSD, и будет видно, что куда прописывать...

Re: Инициализация видеоконтроллера T112

Добавлено: Чт июн 26, 2014 14:37:41
taran_ob
Как обычно в I2C происходит адресация к регистрам если их больше 256?
В даташите на MX88v462 указано только то, что регистры разбиты на 3 группы со своими базовыми адресами 0x00 (от 0x00 до 0xC4), 0xF0 (от 0x00 до 0x94), 0xF2 (от 0x00 до 0x5F). Так понимаю, что адресное пространство регистров 16 бит.

Осциллограф диско расшифровывает пакет красиво, со всеми атрибутами start, stop, ask, nask, но в нем нет возможности сохранения данных. Снифер на tiny2313 пакет инициализации передает в терминальник в виде 1060 строк по 3 байта. 2 строчки это 1 посылка. У MX88v462 адрес на шине 0x14 + флаг записи 0 - 0x28.

Не могу понять где тут адрес регистра, а где данные.

Кусок начала пакета

28 00 30
28 00 02
28 01 03
28 01 00
28 02 00
28 02 00
28 03 44
28 03 00
28 04 07
28 04 0f
28 05 60
28 05 00
28 06 79
28 06 40
28 07 40
28 07 40
28 08 40
28 08 40
28 09 40
28 09 40
28 0a 00
28 0a 00
28 0b 00
28 0b 00

Re: Инициализация видеоконтроллера T112

Добавлено: Чт июн 26, 2014 15:41:25
wss60
Где вы нашли регистр больше 255?
Судя по исходникам там все 8-ми битовое.
Пишется в каждый регистр отдельно или в несколько последовательно.
Спойлер

Код: Выделить всё

#if 0   
void I2C_Write(BYTE dev_addr, BYTE start_addr, BYTE count , BYTE *write_buf)   
{   
    BYTE i;   
   
    I2C_SendByteWithStart(dev_addr);        //Write W_ID   
    I2C_SendByte(start_addr);               //Write Address   
    DELAY(1);   
    for(i=0;i<count;i++)   
    {   
        I2C_SendByte(*(write_buf+i));       //Write multi-data   
        DELAY(1);   
    }   
    I2C_SendStop();                         //Stop   
    DELAY(1);   
    I2C_ReleaseBus();   
}   
#endif   
void I2C_WriteByte(BYTE dev_addr, BYTE start_addr, BYTE write_byte)   
{   
    I2C_SendByteWithStart(dev_addr);        //Write Device ID   
    I2C_SendByte(start_addr);               //Write Address   
//  DELAY(1);   
   
        I2C_SendByte(write_byte);           //Write data   
//      DELAY(1);   
           
    I2C_SendStop();                         //Stop   
//  DELAY(1);   
    I2C_ReleaseBus();   
}   

Re: Инициализация видеоконтроллера T112

Добавлено: Чт июн 26, 2014 18:15:40
taran_ob
В даташите есть регистры с одинаковыми адресами, скажем 0х01 (стр 13, 76, 114 даташита), но базовые адреса разные (мелким шрифтом в начале каждого раздела описания) 0х00, 0хF0, 0хF2. Всего регистров как минимум 0xC4+0x94+0x5F=1В7 или 432 шт.
Значит в контроллер должен слаться 16 битный адрес, или я чего то не понимаю?
И еще, в логе есть такой кусок
Спойлер

Код: Выделить всё

28	41	00
28	41	01
28	42	00
28	42	00
28	43	00
28	06	7a
28	0a	00
28	0a	00
28	0a	00
28	0a	00
28	0a	00
28	0a	00
28	0a	00
28	0a	00
28	0a	00
28	0a	01
28	0a	01
28	0a	01
28	0a	02
28	0a	02
28	0a	02
28	0a	03
28	0a	03
28	0a	03
28	0a	04
28	0a	04
28	0a	04
28	0a	05
28	0a	05
28	0a	05
28	0a	06
28	0a	06
28	0a	06
28	0a	07
28	0a	07
28	0a	07
28	0a	08
28	0a	08
28	0a	08
28	0a	09
28	0a	09
28	0a	09
28	0a	0a
28	0a	0a
28	0a	0a
28	0a	0b
28	0a	0b
28	0a	0b
28	0a	0c
28	0a	0c
28	0a	0c
28	0a	0d
28	0a	0d
28	0a	0d
28	0a	0e
28	0a	0e
28	0a	0e
28	0a	0e
28	0a	0e
28	0a	0e
28	0a	0f
28	0a	0f
28	0a	0f
28	0a	10
28	0a	10
28	0a	10
28	0a	11
28	0a	11
28	0a	11
28	0a	12
28	0a	12
28	0a	12
28	0a	13
28	0a	13
28	0a	13
28	0a	13
28	0a	13
28	0a	13
28	0a	14
28	0a	14
28	0a	14
28	0a	15
28	0a	15
28	0a	15
28	0a	16
28	0a	16
28	0a	16
28	0a	17
28	0a	17
28	0a	17
28	0a	17
28	0a	17
28	0a	17
28	0a	18
28	0a	18
28	0a	18
28	0a	19
28	0a	19
28	0a	19
28	0a	1a
28	0a	1a
28	0a	1a
28	0a	1a
28	0a	1a
28	0a	1a
28	0a	1b
28	0a	1b
28	0a	1b
28	0a	1c
28	0a	1c
28	0a	1c
28	0a	1d
28	0a	1d
28	0a	1d
28	0a	1d
28	0a	1d
28	0a	1d
28	0a	1e
28	0a	1e
28	0a	1e
28	0a	1f
28	0a	1f
28	0a	1f
28	0a	1f
28	0a	1f
28	0a	1f
28	0a	20
28	0a	20
28	0a	20
28	0a	21
28	0a	21
28	0a	21
28	0a	21
28	0a	21
28	0a	21
28	0a	22
28	0a	22
28	0a	22
28	0a	23
28	0a	23
28	0a	23
28	0a	23
28	0a	23
28	0a	23
28	0a	24
28	0a	24
28	0a	24
28	0a	25
28	0a	25
28	0a	25
28	0a	25
28	0a	25
28	0a	25
28	0a	26
28	0a	26
28	0a	26
28	0a	27
28	0a	27
28	0a	27
28	0a	27
28	0a	27
28	0a	27
28	0a	28
28	0a	28
28	0a	28
28	0a	29
28	0a	29
28	0a	29
28	0a	29
28	0a	29
28	0a	29
28	0a	2a
28	0a	2a
28	0a	2a
28	0a	2a
28	0a	2a
28	0a	2a
28	0a	2b
28	0a	2b
28	0a	2b
28	0a	2b
28	0a	2b
28	0a	2b
28	0a	2c
28	0a	2c
28	0a	2c
28	0a	2d
28	0a	2d
28	0a	2d
28	0a	2d
28	0a	2d
28	0a	2d
28	0a	2e
28	0a	2e
28	0a	2e
28	0a	2e
28	0a	2e
28	0a	2e
28	0a	2f
28	0a	2f
28	0a	2f
28	0a	2f
28	0a	2f
28	0a	2f
28	0a	30
28	0a	30
28	0a	30
28	0a	30
28	0a	30
28	0a	30
28	0a	31
28	0a	31
28	0a	31
28	0a	32
28	0a	32
28	0a	32
28	0a	32
28	0a	32
28	0a	32
28	0a	33
28	0a	33
28	0a	33
28	0a	33
28	0a	33
28	0a	33
28	0a	34
28	0a	34
28	0a	34
28	0a	34
28	0a	34
28	0a	34
28	0a	35
28	0a	35
28	0a	35
28	0a	35
28	0a	35
28	0a	35
28	0a	36
28	0a	36
28	0a	36
28	0a	36
28	0a	36
28	0a	36
28	0a	36
28	0a	36
28	0a	36
28	0a	37
28	0a	37
28	0a	37
28	0a	37
28	0a	37
28	0a	37
28	0a	38
28	0a	38
28	0a	38
28	0a	38
28	0a	38
28	0a	38
28	0a	39
28	0a	39
28	0a	39
28	0a	39
28	0a	39
28	0a	39
28	0a	3a
28	0a	3a
28	0a	3a
28	0a	3a
28	0a	3a
28	0a	3a
28	0a	3b
28	0a	3b
28	0a	3b
28	0a	3b
28	0a	3b
28	0a	3b
28	0a	3b
28	0a	3b
28	0a	3b
28	0a	3c
28	0a	3c
28	0a	3c
28	0a	3c
28	0a	3c
28	0a	3c
28	0a	3d
28	0a	3d
28	0a	3d
28	0a	3d
28	0a	3d
28	0a	3d
28	0a	3e
28	0a	3e
28	0a	3e
28	0a	3e
28	0a	3e
28	0a	3e
28	0a	3e
28	0a	3e
28	0a	3e
28	0a	3f
28	0a	3f
28	0a	3f
28	0a	3f
28	0a	3f
28	0a	3f
28	0a	40
28	0a	40
28	0a	40
28	0a	40
28	0a	40
28	0a	40
28	0a	40
28	0a	40
28	0a	40
28	0a	41
28	0a	41
28	0a	41
28	0a	41
28	0a	41
28	0a	41
28	0a	42
28	0a	42
28	0a	42
28	0a	42
28	0a	42
28	0a	42
28	0a	42
28	0a	42
28	0a	42
28	0a	43
28	0a	43
28	0a	43
28	0a	43
28	0a	43
28	0a	43
28	0a	43
28	0a	43
28	0a	43
28	0a	44
28	0a	44
28	0a	44
28	0a	44
28	0a	44
28	0a	44
28	0a	45
28	0a	45
28	0a	45
28	0a	45
28	0a	45
28	0a	45
28	0a	45
28	0a	45
28	0a	45
28	0a	46
28	0a	46
28	0a	46
28	0a	46
28	0a	46
28	0a	46
28	0a	46
28	0a	46
28	0a	46
28	0a	47
28	0a	47
28	0a	47
28	0a	47
28	0a	47
28	0a	47
28	0a	47
28	0a	47
28	0a	47
28	0a	48
28	0a	48
28	0a	48
28	0a	48
28	0a	48
28	0a	48
28	0a	48
28	0a	48
28	0a	48
28	0a	49
28	0a	49
28	0a	49
28	0a	49
28	0a	49
28	0a	49
28	0a	49
28	0a	49
28	0a	49
28	0a	4a
28	0a	4a
28	0a	4a
28	0a	4a
28	0a	4a
28	0a	4a
28	0a	4a
28	0a	4a
28	0a	4a
28	0a	4b
28	0a	4b
28	0a	4b
28	0a	4b
28	0a	4b
28	0a	4b
28	0a	4b
28	0a	4b
28	0a	4b
28	0a	4c
28	0a	4c
28	0a	4c
28	0a	4c
28	0a	4c
28	0a	4c
28	0a	4c
28	0a	4c
28	0a	4c
28	0a	4d
28	0a	4d
28	0a	4d
28	0a	4d
28	0a	4d
28	0a	4d
28	0a	4d
28	0a	4d
28	0a	4d
28	0a	4e
28	0a	4e
28	0a	4e
28	0a	4e
28	0a	4e
28	0a	4e
28	0a	4e
28	0a	4e
28	0a	4e
28	0a	4f
28	0a	4f
28	0a	4f
28	0a	4f
28	0a	4f
28	0a	4f
28	0a	4f
28	0a	4f
28	0a	4f
28	0a	50
28	0a	50
28	0a	50
28	0a	50
28	0a	50
28	0a	50
28	0a	50
28	0a	50
28	0a	50
28	0a	51
28	0a	51
28	0a	51
28	0a	51
и тд
так 0x0A это "SCALING PLL CTRLREG (стр 17)" или "CODE BUFFER OFFSET SELECT AND VALUE (стр117)" или "CHROMA SATURATION (стр 81)" ?

Re: Инициализация видеоконтроллера T112

Добавлено: Чт июн 26, 2014 20:43:23
m.ix
немного оффтопа

timewind
T112
и им подобные

Часто стоят в китайских автомагнитолах с небольшим дисплеем.
иногда и в телеках такого же формата.

Re: Инициализация видеоконтроллера T112

Добавлено: Чт июн 26, 2014 21:42:05
wss60
Судя по коду при инициализации (регистры 0x00..0xF0) данные идут:
Старт
адрес (0x28)
адрес регистра (начиная с 0x00)
значение регистра
стоп

Для регистров (0xF0…) наверно так:
Старт
адрес (0x28)
адрес регистра (0xF0)
смещение регистра (например 0x02)
значение регистра
стоп
в коде все это есть.

Re: Инициализация видеоконтроллера T112

Добавлено: Пт июн 27, 2014 09:01:12
taran_ob
Ок, вот первые 4 строчки лога записи данных:

28 00 30
28 00 02
28 01 03
28 01 00
wss60 писал(а):Судя по коду при инициализации (регистры 0x00..0xF0) данные идут:
Допустим это так, но какой тогда смысл писать в один регистр одно значение, а затем сразу же другое? Почти все строки лога с повторяющимися 2 раза адресом регистра.
wss60 писал(а):Для регистров (0xF0…) наверно так:
то есть 4 байта в посылке? хм, в логе такого формата не видно, а вот при чтении из регистра - да, 4 байта:

28 78
29 07

адрес 0х14 с флагом 0 (0х28)
адрес регистра
адрес 0х14 с флагом 1 (0х29)
принятые данные

Может одна посылка записи состоит из 6 байт?

Re: Инициализация видеоконтроллера T112

Добавлено: Пт июн 27, 2014 09:10:04
taran_ob
m.ix писал(а):немного оффтопа
Часто стоят в китайских автомагнитолах с небольшим дисплеем.
иногда и в телеках такого же формата.
По этому тема и заинтересовала. Портативные двд уже нах ни кому не нужны, а вот LCD с композитным входом нужны...

Re: Инициализация видеоконтроллера T112

Добавлено: Пт июн 27, 2014 09:48:00
wss60
В исходниках, взятых у китайцев, инициализация tcon идет так: адрес устройства, адрес регистра, значение регистра.
Чем снимали лог?
Можно увидеть весь лог с начала?

пример:
Спойлер

Код: Выделить всё

unsigned char MXIC_TCON_REG[] =    
{                  
//  0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F   
    0x20,0x01,0x0F,0x01,0x01,0x00,0x81,0x00,0x0F,0x1E,0xC0,0x00,0xF2,0x70,0x70,0x70,    // 0x0000   
    0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0xA8,0x00,0x40,0xFF,0x00,0x00,0x00,0x40,    // 0x0010   
    0x00,0x95,0xCC,0x32,0x68,0x02,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    // 0x0020   
    0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x8C,0x00,0xC1,0x02,0x0D,0x00,0x17,0x01,    // 0x0030   
    0x00,0x00,0x01,0x3E,0x03,0x98,0x00,0xD0,0x02,0x88,0x00,0xD0,0x02,0x20,0x01,0xFD,    // 0x0040   
    0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x28,0x70,0x66,0x01,0x00,0x00,0x18,0x18,0x00,    // 0x0050   
    0x10,0x04,0x35,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x96,0x00,0x03,0x00,0x00,0x00,    // 0x0060   
    0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,    // 0x0070   
    0x3A,0x00,0x3A,0x00,0x00,0x00,0x00                                                  // 0x0080   
}; 

/**********************************/
/******* инициализация TCON *******/
/**********************************/
unsigned char MX88V46X_TCON_Initial(void)   
{   
    unsigned char i;   
    for(i=0;i<sizeof(MXIC_TCON_REG);i++)   
    {   
      I2C_SendStart(); 
	  I2C_SendByte(0x28);
	  I2C_SendByte(i);                 // адрес регистра
	  I2C_SendByte(MXIC_TCON_REG[i]);  // значение регистра
	  I2C_SendStop(v);   
    }  
}

Re: Инициализация видеоконтроллера T112

Добавлено: Пт июн 27, 2014 10:29:35
taran_ob
Вот!, нашел в исходнике из вашего архива

Код: Выделить всё

#define MX88V46X_ID          0x28 
#define CVD1_ADDRESS_PORT    0xF0 
#define CVD1_DATA_PORT       0xF1

unsigned char MXIC_WriteInternalReg(unsigned char m_Address,unsigned char m_Data)   
{     
    I2C_WriteByte(MXIC_ID,CVD1_ADDRESS_PORT,m_Address);   
    MXIC_Delay(100);   
    I2C_WriteByte(MXIC_ID,CVD1_DATA_PORT,m_Data);   
    return m_Data;     
}
таки одна посылка состоит из 6 байт


Лог снимал этим http://forum.easyelectronics.ru/viewtop ... 48#p273648

Re: Инициализация видеоконтроллера T112

Добавлено: Пт июн 27, 2014 10:51:15
taran_ob
Можно увидеть весь лог с начала?
не понимаю, что такое CVD1_ADDRESS_PORT CVD1_DATA_PORT

Re: Инициализация видеоконтроллера T112

Добавлено: Пт июн 27, 2014 11:21:46
wss60
Лог какой то странный - возможно тинька не успевает считывать.
В даташите на 112 указанна скорость до 1MHz, у тиньки максимум 0.4MHz + нужно еще по usart передавать.
Как вариант можно попробовать считать значения всех регистров на уже инициализированном контроллере и сравнить.
taran_ob писал(а):не понимаю, что такое CVD1_ADDRESS_PORT CVD1_DATA_PORT

Код: Выделить всё

#define MX88V46X_ID          0x28 
#define CVD1_ADDRESS_PORT    0xF0 
#define CVD1_DATA_PORT       0xF1  

Регистр 0xF0 только один и если пишем сначала в него то все остальное пишется в регистры, которые начинаются со страницы 76 даташита.
Это только предположение! :))

Re: Инициализация видеоконтроллера T112

Добавлено: Пт июн 27, 2014 12:29:21
taran_ob
Лог какой то странный - возможно тинька не успевает считывать.
Гарантии конечно же нет, но данные совпадают с логом снятым игрушечным юсб осциллографом диско, у которого нет возможности сохранения, им же было выяснено, что частота SCL порядка 100кГц. Автор логера на тиньке утверждает, что до 400кГц работает.
Ладно, сегодня должен приехать клон Saleae Logic, проверим истинность.
Как вариант можно попробовать считать значения всех регистров на уже инициализированном контроллере и сравнить.
:idea:

Re: Инициализация видеоконтроллера T112

Добавлено: Сб июн 28, 2014 18:45:57
taran_ob
Да, снять лог 100кГц не такая уж тривиальная задача.
Вчера весь вечер промучился SaleaeLogic. Его софт декодирует быстро, но экспорт кривой! Не сохраняет адреса регистров. Перезалил еепромку в железяке под софт USBee Suite - этот вообще экспортирует только start ack nack stop, без данных, хотя визуальные данные совпадают с SaleaeLogic.
Воспользовался USBee AX Test POD. Глюковатый, но экспорт делает. Правда не удобочитаемый - все данные с атрибутами в один столбец. Пришлось просить знакомого написать макрос для экселя.
Логи отличаются от раннее сделанных USB DISCO и снифером с easyelectronics. На первый взгляд более логичные.
Чуть позже выложу.


пс USB DISCO купил давным давно, чтоб лямбда-зонд проверить, думал еще пригодится, а оказалось не стоит своих 100уе