2014년 9월 5일 금요일

02. Mango I2C 통신 안드로이드 어플 예제-20140905

  1. 하드웨어 구성



에서 받으면 됩니다.

보드는 아래와 같습니다.




통신은 I2C 0번 채널로 합니다.


    1. 하드웨어 연결


LCD 인터페이스 보드에 연결을 합니다.



인터페이스 연결보드 회로드를 보면 I2C 0번 채널에 연결이 되어 있습니다.


    1. Slave Address


Datasheet를 보면 0xEF(READ), 0xEE 로 정의가 되어 있습니다.


7bit Address 이므로 0x77입니다.


  1. 어플 소스 다운로드




  1. JNI 수정

파일은 “i2c.h” , i2c-dev.h 파일은 커널에 있는 소스를 사용하면 됩니다.

디바이스가 압력센서 이므로 간단히 Chip에 ID를 읽어 보겠습니다.

커널 드라이버는 “drivers/misc/bmp085.c” 파일을 참조하면
REGISTER는 0xD0 입니다. #define BMP085_CHIP_ID_REG      0xD0

“mango_standard.c” 파일에서 수정을 합니다.

#define BMP085_CHIP_ID_REG      0xD0
그리고, Slave address는


#define SLAVE_ADDRESS_RD 0x77  //BMP085

정의를 합니다.

컴파일을 합니다 .


[icanjji@icanjji-pc jni]$ ndk-build  clean
Clean: mango_standard [armeabi]
Clean: stdc++ [armeabi]
[icanjji@icanjji-pc jni]$ ndk-build
Compile thumb  : mango_standard <= mango_standard.c
Compile thumb  : mango_standard <= gpio_helper.c
Compile thumb  : mango_standard <= fbutils.c
Compile thumb  : mango_standard <= font_8x16.c
Compile thumb  : mango_standard <= font_8x8.c
Compile thumb  : mango_standard <= testutils.c
Compile thumb  : mango_standard <= ts_attach.c
Compile thumb  : mango_standard <= ts_calibrate.c
Compile thumb  : mango_standard <= ts_close.c
Compile thumb  : mango_standard <= ts_config.c
Compile thumb  : mango_standard <= ts_error.c
Compile thumb  : mango_standard <= ts_fd.c
Compile thumb  : mango_standard <= ts_load_module.c
Compile thumb  : mango_standard <= ts_open.c
Compile thumb  : mango_standard <= ts_parse_vars.c
Compile thumb  : mango_standard <= ts_read.c
Compile thumb  : mango_standard <= ts_read_raw.c
SharedLibrary  : libmango_standard.so
Install        : libmango_standard.so => libs/armeabi/libmango_standard.so

  1. 퍼미션 변경


안드로이드 부팅 후

root@android:/ # chmod 777 /dev/i2c-0

해당 디바이스 채널을 권한을 변경합니다.
부팅 시 자동으로 변경하기 위해서는

"android/device/crazyboys/mango210/ueventd.mango210.rc"
파일에서


/dev/i2c-0                0777   system     system

추가를 한 후 컴파일 후 안드로이드 이미지를 다시 Write하면 됩니다.



  1. 어플 실행하기

실행 어플 압축을 풉니다.

이클립스를 실행 후


File -> Import ->


선택 후 압축 푼 디렉토리 선택합니다.

컴파일 방법
이클립스에서 Project-> Clean

물론, usb otg 케이블은 PC와 연결이 되어 있어야 합니다.



“CTRL+F11” 실행하면 망고210 보드에 어플이 실행이 됩니다.


    1. I2C read 테스트



“i2cread” 버튼을 누르면 BMP085 chip ID를 읽어옵니다.


값이 85입니다.
16진수로 변환하면 0x55입니다.


    1. I2C Write 테스트



“i2cwrite” 버튼을 누르면

이클립스에서 아래와 같이 확인이 가능합니다.


댓글 없음:

댓글 쓰기