|
Кто работал с ADV212 |
|
|
|
Oct 13 2014, 15:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Добрый день всем. Спаяли железо с ADV212, начинаю запускать. Сразу беда - не читаются прямо адресуемые регистры. Точнее читаются, но не те значения что я пишу.
Сигналы подаю по даташиту, дожидаюсь АСК от чипа (он приходит).
Делаю так:
1.Подаю питание (в норме, проверял) 2.Подаю клок 20МГц на МCLK 3.Подаю отрицательный импульс на reset 4.По адресу (прямому) 0xF пишу число 4 5.По адресу (прямому) 0xЕ пишу число 8 6.Читаю адрес 0xE - получаю 0x8B 7.Читаю адрес 0xF - получаю 0xB.
Клок померял прямо на шарике ADV212 - 20МГЦ приходит. Сигналы RD, WR,CS - думаю тоже нормально доходят, поскольку ACK от чипа приходит и на чтение, и на запись. Данные и адреса (он идут с ПЛИС) смотрел сигнал-тапом, все в норме.
При чтении регистров (прямых) всех кроме BUSMODE, MMODE, PLL_HI, PLL_LO ACK от чипа не приходит.
Кто что может посоветовать, что еще проверить? Похоже не запускается PLL внутренняя, есть там какие-то хитрости? Хотя написано, что регистры BUSMODE, MMODE, PLL_HI, PLL_LO не требуют клока вообще. Мысль только менять чип, охота услышать мнение специалиста, работавшего с этим чипом.
|
|
|
|
|
 |
Ответов
|
Oct 26 2014, 20:47
|
Гуру
     
Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965

|
Вот теперь и Вы добрались до глюкавых мест. Вы считываете это все на полной скорости программы или в отладчике? Мы видели зависимость от задержек между записями в регистры, сейчас уже не помню точно между какими. Попробуйте посмотреть на нашу инициализацию, может быть поможет: Код int adv_init(int pal, unsigned long bit_rate, unsigned short skip_field) { const unsigned short *fw = (const unsigned short *)adv_enc_fw; unsigned long fw_addr = ADV2X2_FIRMWARE_START_ADDR; unsigned int len = sizeof(adv_enc_fw)/sizeof(unsigned short); int err; uint32_t reg;
// Load PLL ADV2X2_REG(ADV2X2_PLL_HI) = 0x0008; // Delay 20 uS DELAY_uS(20); // MCLK * 4 = 28.636 MHz * 4 = 114.544 MHz ADV2X2_REG(ADV2X2_PLL_LO) = 0x0004; // Delay 20 uS DELAY_uS(20); // Reboot ADV2X2_REG(ADV2X2_BOOT) = 0x008A; DELAY_uS(1000); // Host bus width = 16 bits, DMA bus width = 32 bits ADV2X2_REG(ADV2X2_BUSMODE) = 0x9; DELAY_uS(1000); // Indirect bus width = 16 bits, 16 bits increment ADV2X2_REG(ADV2X2_MMODE) = 0x5; DELAY_uS(1000);
// Upload firmware // Setup address of firmware ADV2X2_REG(ADV2X2_STAGE) = fw_addr>>16; ADV2X2_REG(ADV2X2_IADDR) = fw_addr; while (len--) { unsigned short data = *fw++; ADV2X2_REG(ADV2X2_IDATA) = (data >> 8) | (data << 8); }
/* Start setting parameters */ adv_enter_set_param();
/* Firmware parameters */ /* SET ENCODE PARAM */ /* VFORMAT, PREC, XFORMLEV, UNI */ /* Video Standard = PAL de-interlaced Precision = 8bit Number of Wavelet Transform Levels = 5 (6 not recommended) Component Polarity = Unipolar (¤R<│_- бвRпвм ¤<п RЎ_Ёе бЁ_- <Rў Ё- з_ бЁ_- < ЄаЁўRc) */ /* NTSC = 8, PAL = 9 */ ADV_IWRITE_32(0x57F00L, (pal) ? 0x09000503L : 0x08000503L);
/* CBSIZE, WKERNEL, STALLPAR, ATTRTYPE */ /* Code Block Dimensions = 64x64 Wavelet Kernel = Reversible 5x3 (lossless) Skip Fields in Encode Mode = 0 Attribute Data Output Format = Do not output attribute data */ if (skip_field > 63) skip_field = 63; reg = 0x02010000 | ((uint32_t)skip_field<<8); debug_print("Reg skip field: "); debug_dump_hex((const char *)®, 4); debug_print("\r\n"); ADV_IWRITE_32(0x57F04L, reg);
/* RCTYPE, RCVAL */ /* Rate Control Algorithm = Target size per video field or image within 5% of RCVAL RCVAL = Size of field or image in bytes PAL 50 field/sec, NTSC = 60 field/sec X = brate/(8*fields) 10MBit 0x010061A8 20Mbit 0x0100C350 */ if (bit_rate > 20*MEGABIT) bit_rate = 20*MEGABIT; else if (bit_rate < 1*MEGABIT) bit_rate = 1*MEGABIT; /* X = brate/(8*fields) */ reg = 0x01000000 | (bit_rate/(8*((pal) ? 50 : 60))); ADV_IWRITE_32(0x57F08L, reg);
/* J2KPROG, PICFG, QFACT, COD_STYLE */ /* JPEG2000 Progression Style = LRCP Pixel Interface Bit Configuration Settings = 0 Quantization Factor = 256/256 factor (1x) Output Code Stream Format = j2c, PPT, PLT, SOP, EPH */ #ifdef EAV_SAV_VMODE ADV_IWRITE_32(0x57F0CL, 0x000100F1L); #else ADV_IWRITE_32(0x57F0CL, 0x004B00F1L); #endif // EAV_SAV_VMODE
//----------------------------------------------------------------------------- /* PMODE1 */ /* Cb/Y/Cr/Y interleaved, 8 bit */ ADV_IWRITE_16(0xFFFF0400L, 0x0005); /* PMODE2 */ #ifdef EAV_SAV_VMODE ADV_IWRITE_16(0xFFFF0448L, 0x0031); #else ADV_IWRITE_16(0xFFFF0448L, 0x003B); #endif // EAV_SAV_VMODE
/* VMODE */ #ifdef EAV_SAV_VMODE ADV_IWRITE_16(0xFFFF044CL, 0x0002); #else ADV_IWRITE_16(0xFFFF044CL, 0x0006); #endif // EAV_SAV_VMODE
/* EDMOD0 register */ ADV_IWRITE_16(0xFFFF1408L, 0x0002);
/* EDMOD1 register */ ADV_IWRITE_16(0xFFFF140CL, 0x0802);
/* Pixel Threshold */ ADV_IWRITE_16(0xFFFF1418L, 0x0080);
/* CODE Threshold */ ADV_IWRITE_16(0xFFFF141CL, 0x0080);
/* Apply parameters */ if (0 != (err = adv_exit_set_param())) return err;
return 0; }
|
|
|
|
Сообщений в этой теме
alexPec Кто работал с ADV212 Oct 13 2014, 15:59 Alex11 Странно это. Чип, конечно, кривенький, но не в это... Oct 13 2014, 16:32 alexPec Цитата(Alex11 @ Oct 13 2014, 20:32) Стран... Oct 14 2014, 07:03 Alex11 А длительности при этом достаточные? Там они опред... Oct 14 2014, 16:16 alexPec Цитата(Alex11 @ Oct 14 2014, 20:16) А дли... Oct 14 2014, 20:58  alexPec А что чип делает, если уставки размера картики (ак... Oct 23 2014, 09:50 Alex11 Я не пытался ставить ему кривые параметры, он и пр... Oct 24 2014, 18:03 alexPec Цитата(Alex11 @ Oct 24 2014, 22:03) Я не ... Oct 25 2014, 11:13 Golikov A. 10 бит дает 1024 уровня
8 бит дает 256 уровней
что... Oct 25 2014, 14:44 alexPec Цитата(Golikov A. @ Oct 25 2014, 18:44) 1... Oct 25 2014, 18:09 alexPec Спасибо за код. А можете показать кусок где запуск... Oct 27 2014, 09:07 Alex11 Там дальше в запуске уже все специфично для нашего... Oct 27 2014, 09:41 alexPec Цитата(Alex11 @ Oct 27 2014, 12:41) Там д... Oct 27 2014, 11:36 Alex11 Да, источник пикселов. Я подаю через VData.
Про ... Oct 30 2014, 17:00 alexPec Цитата(Alex11 @ Oct 30 2014, 21:00) Про ... Nov 2 2014, 19:31 russmakse не могу прочитать данные из региста IDATA косвенно... Apr 27 2017, 11:03 russmakse RE: Кто работал с ADV212 Apr 27 2017, 14:25 Alex11 Вы уж меня извините, но я не готов разбираться с В... Apr 27 2017, 21:41 russmakse Как считать значение любого из внутренних регистро... Apr 28 2017, 09:15 alexPec Цитата(russmakse @ Apr 28 2017, 13:15) Ка... Apr 28 2017, 21:18 Alex11 Начните с простого - не меняйте PLL, а прочитайте ... Apr 29 2017, 12:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|