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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 350
Зарегистрирован: Пт сен 10, 2010 20:48:01
Откуда: Минск

Сообщение 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 скачиваний
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Вероятно это составное устройство, которое логически работает как два устройства на шине каждое со своим адресом.
Контактная информация:
Реклама
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение taran_ob »

Удалось инициализировать?
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 350
Зарегистрирован: Пт сен 10, 2010 20:48:01
Откуда: Минск

Сообщение wss60 »

Не удалось...
Не понятно: по какому адресу отсылать данные, как настроить Tcon, питание матрицы и пр.
Нету нормального даташита.
Есть только исходники китайского dvd с похожим контроллером.
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение taran_ob »

Киньте в личку адрес, отправлю полный даташит на t112 с регистрами.
Есть у меня экранчик на таком скалере без центрального проца, хочу запустить...
И еще есть рабочий двд со скалером MX88V462 (даташита нет) и цпу MT1389HD, сейчас пытаюсь сниферить инициализацию. Нужно отсеить остальные микрухи сидящие на шине. Возможно ковыряние прояснит картину с t112.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 350
Зарегистрирован: Пт сен 10, 2010 20:48:01
Откуда: Минск

Сообщение wss60 »

Даташит с регистрами у меня есть, но разобраться в нем - что куда в какой последовательности не смог…
Скинул в лс исходники.
Там есть инициализация контроллера и дефейны для разных разрешений дисплеев – может, чем поможет…
Вложения
MX88V462.pdf
datasheet
(1.89 МБ) 875 скачиваний
Реклама
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение taran_ob »

О! Спасибо!
Лог инициализации скалера снял. Теперь, имея даташит, отброшу OSD, и будет видно, что куда прописывать...
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение 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
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 350
Зарегистрирован: Пт сен 10, 2010 20:48:01
Откуда: Минск

Сообщение 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();   
}   
Вложения
MX88V46X.sc.zip
(11.58 КБ) 291 скачивание
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение 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)" ?
Друг Кота
Аватара пользователя
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo

Сообщение m.ix »

немного оффтопа

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

Часто стоят в китайских автомагнитолах с небольшим дисплеем.
иногда и в телеках такого же формата.
Лечу лечить WWWашу покалеченную технику.
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 350
Зарегистрирован: Пт сен 10, 2010 20:48:01
Откуда: Минск

Сообщение wss60 »

Судя по коду при инициализации (регистры 0x00..0xF0) данные идут:
Старт
адрес (0x28)
адрес регистра (начиная с 0x00)
значение регистра
стоп

Для регистров (0xF0…) наверно так:
Старт
адрес (0x28)
адрес регистра (0xF0)
смещение регистра (например 0x02)
значение регистра
стоп
в коде все это есть.
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение 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 байт?
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение taran_ob »

m.ix писал(а):немного оффтопа
Часто стоят в китайских автомагнитолах с небольшим дисплеем.
иногда и в телеках такого же формата.
По этому тема и заинтересовала. Портативные двд уже нах ни кому не нужны, а вот LCD с композитным входом нужны...
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 350
Зарегистрирован: Пт сен 10, 2010 20:48:01
Откуда: Минск

Сообщение 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);   
    }  
}
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение 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
Последний раз редактировалось taran_ob Пт июн 27, 2014 11:05:48, всего редактировалось 1 раз.
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение taran_ob »

Можно увидеть весь лог с начала?
не понимаю, что такое CVD1_ADDRESS_PORT CVD1_DATA_PORT
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 350
Зарегистрирован: Пт сен 10, 2010 20:48:01
Откуда: Минск

Сообщение 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 даташита.
Это только предположение! :))
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение taran_ob »

Лог какой то странный - возможно тинька не успевает считывать.
Гарантии конечно же нет, но данные совпадают с логом снятым игрушечным юсб осциллографом диско, у которого нет возможности сохранения, им же было выяснено, что частота SCL порядка 100кГц. Автор логера на тиньке утверждает, что до 400кГц работает.
Ладно, сегодня должен приехать клон Saleae Logic, проверим истинность.
Как вариант можно попробовать считать значения всех регистров на уже инициализированном контроллере и сравнить.
:idea:
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн янв 26, 2009 17:27:18
Откуда: Odessa, Ukraine

Сообщение taran_ob »

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


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

Вернуться в «Периферия»