I2C Port Clock Frequency설정에 대한 자료는 없다.
arch/arm/mach-exynos/mach-odroid-x.c에서는 I2C Frequency 설정 부분이 없다.
기본 BSP만 포팅한 것 같다.
1주일동안 삽질 후 찾았지만 정확한 주파수로 동작하지는 않지만 대충은 맞다.
1. I2C Clock설정을 추가한다.
...
struct s3c2410_platform_i2c i2c5_data_odroidx __initdata = {
.bus_num = 5, // The bus number to use (if possible).
.flags = 0, // Any flags for the I2C bus (E.g. S3C_IICFLK_FILTER).
.slave_addr = (TS_I2C_SLAVE_ADDR >> 1), // The I2C address for the slave device (if enabled).
.frequency = 430*1000, // The desired frequency in Hz of the bus.
// This is guaranteed to not be exceeded.
.sda_delay = 100, // The delay (in ns) applied to SDA edges.
};
2. 설정한 변수 값을 아래와 같이 수정한다.
...
//s3c_i2c5_set_platdata(NULL);
s3c_i2c5_set_platdata(&i2c5_data_odroidx);
i2c_register_board_info(5, i2c_devs5, ARRAY_SIZE(i2c_devs5));
3. 참고로 s3c2410_platform_i2c 구조체에서 frequency 값은 400*1000으로 설정하면 I2C Frequency가 200KHz 근처에서 동작한다.
왜그런지는 나도 모른다. 아직 내부 코드를 뒤져보지 못했다.
가끔씩 개발들이 무시해야하는 경우가 대부분이다. 왜냐면 늘 고민할 시간을 개발자에게 주지 않기 때문이다.
나는 I2C Frequency 400KHz 동작이 필요해서 값을 무식하게(임으로 바꿔가면서) 찾은 값이다.
필요한 클럭은 값을 바꿔 찾아 봐야 할 것 같다.
이래서 삼성 BSP에 늘 불만이다. 뭔가 늘 부족하다.
'Embedded > ODROID-X2' 카테고리의 다른 글
[ODROID-X2] U-Boot, Kenel, Android Fusing (0) | 2014.03.29 |
---|---|
[ODROID-X2] source download & compile (0) | 2014.03.29 |
[ODROID-X2] 리눅스 개발환경 설정 (0) | 2014.03.29 |
개발환경 구축하기 - Ubuntu 설치 (0) | 2014.03.29 |
개발환경 구축하기 - VirtualBox 설치 (0) | 2014.03.29 |