Прошу помощи у коллективного разума.
Камера OV5642, ее нужно настроить на нужный режим путем программирования пачки регистров через SCCB. Есть описание того, что куда надо писать, есть описание самого SCCB и транзакций, осуществляемых по этому интерфейсу. Вроде все понятно. Но теперь проблема. В протоколе SCCB есть только три типа трансмиссионных циклов. Максимальная длина цикла - 3 фазы, т.е. 3 9-битных последоательности. Максимальная длина - у 3-фазной транзакции записи. В ней указывается ID устройства, 8-битный номер регистра и данные. НО ! В описании программирования камеры указана необходимость запихивать в камеру 4 байта ! 1 - байт идентификатора 78h 2 - младший байт адреса регистра управления 3 - старший байт адреса регистра упраления 4 - байт данных.
Вот пример блока транзакций для установки одного из режимов (копипаста из software application note)
3.2 QSXGA JPEG Capture, 7.5fps, 24 Mhz input clock,24Mhz PCLK i2c_salve_Address = 0x78; write_i2c(0x3011 ,0x08) write_i2c(0x3012 ,0x00) write_i2c(0x3010 ,0x10) write_i2c(0x460c ,0x22) write_i2c(0x380c ,0x0c) write_i2c(0x380d ,0x80) write_i2c(0x3a00 ,0x78) write_i2c(0x3a08 ,0x09) write_i2c(0x3a09 ,0x60) write_i2c(0x3a0a ,0x07) write_i2c(0x3a0b ,0xd0) write_i2c(0x3a0d ,0x10) write_i2c(0x3a0e ,0x0e)
Вот как передать в камеру сначала идентификатор 78h, потом двухбайтный адрес 3011h, а потом еще и байт данных 0Bh, если максимальная длина трансмиссионного цикла 3 байта.
ЗЫ для других камер OmniVision, в которых адреса регистров 8-битные спецификация SCCB ложится вроде бы понятно и не вызывает недоумения.
|