카메라 드라이버 0V7725 SCCB 타이밍 구현
September 3, 2021
카메라 드라이버 0V7725 SCCB 타이밍 구현
SCCB 인터페이스 타이밍
듀얼 버스의 시작 및 정지 신호는 아래 그림과 같습니다.그 중 SCCB_E는 다중 슬레이브 장치에 대해 설정된 인에이블 신호입니다.여기에서 데이터 구성에는 하나의 센서만 사용됩니다.따라서 이 신호는 사용할 수 없습니다.
위는 시작 및 중지 신호 타이밍 다이어그램에 대한 것입니다.
위의 그림은 레지스터에 쓰기 위한 관련 설정을 보여줍니다.먼저 ID 주소를 설정한 다음 레지스터 주소를 쓰고 마지막으로 레지스터 값을 씁니다.
첫 번째 단계: OV의 경우 장치 주소는 0X42, 쓰기는 0X42, 읽기는 0X43입니다.
두 번째 단계: 쓰기 레지스터 주소, 이 주소는 설정해야 하는 OV의 주소 값입니다.
세 번째 단계: 두 번째 단계에서 설정된 레지스터의 주소 값에 해당하는 레지스터에 기록된 값.
레지스터를 읽기 위해 설명서에는 이러한 단락 설명이 있습니다.
따라서 위 그림의 읽기 단계에 대해 4단계를 사용하여 달성하려고 합니다. 하나는 ID 주소와 설정할 레지스터 주소를 포함하여 쓰기 레지스터와 동일한 처음 두 단계를 사용한 다음 두 단계를 추가하는 것입니다. phase, one ID 주소를 다시 읽어와서 데이터 값을 읽어오는 것입니다.아래 그림과 같이:
OV 레지스터의 경우 일부 레지스터 값은 읽기에 적합하고 일부 레지스터 값은 쓰기에 적합합니다.따라서 OV 레지스터를 설정할 때 다양한 데이터의 형식 구성에 특히 주의하십시오.다음은 OV7725의 I2C 인터페이스 구현 및 레지스터 구성입니다.
위 그림은 글로벌 클럭과 글로벌 리셋 신호를 드로우하지 않는 SCCB 인터페이스의 전체 블록도이며, 재설계 시 글로벌 클럭과 글로벌 리셋 제어가 필요하다.
구현 코드는 다음과 같습니다.
I2C_OV7725 구성 모듈
위의 그림은 파라미터 설정의 간략한 목록입니다.레지스터 12 및 37 라인은 리셋용이고 64 라인은 출력 형태를 설정하기 위한 것입니다.
모든 레지스터가 재설정된 후 최대 범위의 안정성을 보장하기 위해 1ms 이하의 지연이 필요하다고 설명서에 명시되어 있습니다.
위의 그림은 포트 선언과 완료까지의 1ms 전원 켜기 지연입니다.
위는 SCL 생성을 완료하고 클럭 중간에 활성화 신호를 설정하는 것입니다.시뮬레이션 다이어그램은 아래 그림과 같습니다.
상태 머신의 다양한 상태.
위의 그림은 상태 머신의 첫 번째 부분입니다.매뉴얼에 나와 있는 것처럼 레지스터를 변경하지 않으면 최대 300ms의 지연이 필요합니다.최소값과 일반값은 300ms 이하이면 지정하지 않습니다.이 지연을 달성하려면 i2c_transfer_end 및 i2c_ack을 사용하십시오.그 중 i2c_ack은 각 단계의 총 응답입니다.그것은 아래에서 언급될 것이다.
위의 그림은 상태 머신의 첫 번째 부분입니다.매뉴얼에 나와 있는 것처럼 레지스터를 변경하지 않으면 최대 300ms의 지연이 필요합니다.최소값과 일반값은 300ms 이하이면 지정하지 않습니다.이 지연을 달성하려면 i2c_transfer_end 및 i2c_ack을 사용하십시오.그 중 i2c_ack은 각 단계의 총 응답입니다.그것은 아래에서 언급될 것이다.
188행에서 처음 두 레지스터는 공급업체 ID를 생성하는 데 사용되며 읽기 전용이므로 판단이 필요합니다.
위의 그림에서 i2c_stream_cnt는 데이터 비트 수를 계산하는 데 사용되므로 전송할 때 상위에서 하위로 전송됩니다.
위 그림에서 i2c_sdat_out은 구성 레지스터 모듈에서 보낸 데이터를 수신하기 위한 출력 데이터 레지스터로 사용됩니다.
위의 그림은 I2C ack 신호에 대한 응답이고, 라인 420~422의 응답은 고임피던스 상태이며, 다음은 전체 SCCB에 의해 구현된 인터페이스의 modelsim 시뮬레이션 다이어그램입니다.