linux i2c 예제

우리는 리눅스 (CELinux)와 뿐만 아니라 리눅스와 I2C 장치 드라이버를 사용합니다. 그러나 우리의 응용 프로그램 코드에는 우리가 경험한 모든 다양한 장치를 처리하기위한 모든 해결 인텔리전스가 포함 된 사소한 I2C 모듈이 있습니다. 이 예제에서 사용되는 AD7991은 AD7991-1이며 데이터 시트에서 0101001로 보고한 주소가 있습니다. 이 것을 제대로 사용하려면 왼쪽에 있는 주소를 0b00101001로 저장합니다. ioctl 이후에 읽고 쓰는 호출은 주변 장치를 신호할 때 적절한 읽기 및 쓰기 비트를 자동으로 설정합니다. 리눅스가 USB 스틱과 같이이 장치를 자동으로 인식하지 못하는 이유는 I2C 프로토콜이 핫플러그킹의 개념을 지원하지 않기 때문입니다. 이 루틴은 버스 번호가 중요한 경우 I2C 어댑터를 선언하는 데 사용됩니다. 예를 들어 시스템 온 칩 CPU의 I2C 어댑터에 사용하거나 시스템의 메인보드에 내장된 경우 i2c_board_info를 사용하여 I2C 장치를 적절하게 구성할 수 있습니다. 예를 들어 PCF8574 I2C I/O 익스팬더가 있는 DAISY-22 모듈을 사용하는 경우 이 명령은 모든 GPIO 라인을 1로 설정합니다.

리눅스 커널을 다시 컴파일하는 방법에 대한 자세한 내용은 비글 보드 #Linux_커널과 비글 보드리눅스 커널을 참조하십시오. 특히 해당 프로세스 중에 i2c2를 사용하려면 “메뉴 구성 확인” 단계에서 설정을 사용하도록 설정합니다. 이 자습서를 따르십시오: 리눅스 커널을 교차 하는 방법과 그 안에 사용 하도록 드라이버를 구성 하는 방법을 알고 소스에서 리눅스 커널을 컴파일. Linux I2C 프로그래밍 인터페이스는 버스 상호 작용의 마스터 측면과 슬레이브 측을 지원합니다. 프로그래밍 인터페이스는 두 종류의 드라이버와 두 종류의 장치를 중심으로 구성됩니다. I2C “어댑터 드라이버”는 컨트롤러 하드웨어를 추상화합니다. 물리적 장치(아마도 PCI 장치 또는 platform_device)에 바인딩하고 관리하는 각 I2C 버스 세그먼트를 나타내는 구조형 i2c_어댑터를 노출합니다. 각 I2C 버스 세그먼트에는 구조형 i2c_client로 표시되는 I2C 장치가 있습니다. 이러한 장치는 표준 Linux 드라이버 모델을 따라야 하는 구조형 i2c_driver에 바인딩됩니다. 다양한 I2C 프로토콜 작업을 수행하는 기능이 있습니다.

이 글에서 이러한 모든 함수는 작업 컨텍스트에서만 사용할 수 있습니다. 이렇게하려면 i2c 버스 4에서 읽기 및 쓰기를 프로그래밍 방식으로 발행해야합니다. 이 작업을 수행하는 유일한 방법은 이미 Linux에서 로드한 i2c 어댑터 드라이버에서 노출된 장치 인터페이스와 상호 작용하는 것입니다. ioctal은 노출된 장치 노드를 통해 사용자 공간에서 장치 드라이버로 직접 통신하는 데 사용할 수 있는 Linux 시스템 호출입니다. I2C 어댑터는 I2C 버스의 메인 버스 컨트롤러이며, 버스의 마스터가 되고 장치에 읽기 및 쓰기를 발행하는 일을 담당합니다. 어댑터 자체는 물리적 장치이며 일반적으로 SoC에 내장 된 실리콘 조각이며 Linux에는 부팅 시 이미로드 된 장치 드라이버가 있습니다. 여기에서 우리는 플랫폼에서 실행되는 리눅스 드라이버에 의해 노출되는 모든 장치 노드를 참조하십시오. 가장 중요한 것은 우리가 i2c-4 장치 노드 (왼쪽 아래)에 가장 관심이, i2c 도구는 같은 리눅스에 대한 I2C 도구의 이기종 세트를 포함하는 패키지입니다 : 이 게시물에서, 우리는 프로그램적으로 i2c-dev 라이브러리를 사용하여, 같은 일을하는 방법을 조사할 것입니다 리눅스 ioctls.

This entry was posted in Uncategorized. Bookmark the permalink.