기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

이솝보드는 아니지만 s3c6410 을 사용한 TINY6410 이란 보드를 사용하고있고 ov9650 이라는 카메라를 사용하고있습니다.

i2c를 이용해서 카메라 레지스터에 값을 넣어주는 방법으로 카메라를 셋팅하려고 합니다.

 

i2c - eeprom 예제를 봤는데

r = ioctl(fd, I2C_SLAVE, 0x50); 라고 사용하던데 여기에서 0x50 은 slave가 되는 eeprom의 주소를 적는것이 맞나요?

0x50 의 주소를 넣어서 실행시키면 잘 실행됩니다.

 

ov9650 datasheet에서는

 

The OmniVision Serial Camera Control Bus (SCCB) Functional Specification is available at
http://www.ovt.com. The Functional Specification provides complete information for using the SCCB
to control the features of an OmniVision CAMERACHIP.
The OV9650 CAMERACHIP uses the SCCB protocol to control the features noted in this document
via the companion backend system ASIC. The device slave addresses of the OV9650 CAMERACHIP
are: 0x60 for write (7-bit address and 1-bit write) and 0x61 for read (7-bit address and 1-bit read).
The first command in the SCCB transmission must be a register reset, as most registers will rely on
the default value setting.

 

이렇게 나와있습니당 sccb 가 i2c랑 같은 역활인거같은데 그러면

ioctl(fd, I2C_SLAVE,0x60); 하면 되야하는거 아닌가요??

근데 0x60을 넣으면 에러가뜹니다T^T (ioctl 리턴값 받아서 0보다 작으면 에러메세지 뜨게해놨습니다.)

 

혼자 디바이스드라이버쪽보려고하니깐.....정말 잘모르겟네요ㅜㅜ 도와주세요!


고도리

2012.07.27 03:25:31
*.200.239.234

http://www.aesop.or.kr/?mid=Board_Documents_Linux_Applications&document_srl=79433


참고하시기 바랍니다.


저는 무조건 scan해서 결과를 보고 얘기합니다.......^^

핸폰개발자

2012.07.27 19:29:11
*.111.135.254

I2C는 7bit를 어드레스로 사용하고 0번 bit는 R/W 용도로 사용합니다.

상기의 경우는 0x60 >> 1 이 어드레스 주소가 되겠습니다.

 

0번 bit의 1/0값은 read/write 함수에서 자동으로 붙여 줍니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인