linux spi 통신 예제

 Senast ändrad 2 augusti, 2019 kl 20:39
aug 022019
 

호환 되는 속성은 클라이언트 SPI 장치 드라이버에 대 한 링크를 제공 합니다., 특정 SPI 장치를 서비스 하는 커널에 의해 사용 됩니다. 위의 예에서 클라이언트 SPI 장치 드라이버는 LINUX MTD 장치로 SPI 장치에 대한 액세스를 제공하는 MTD_M25P80(호환 = ”spi-nor” ;)입니다. 커널에서 이 인터페이스를 활성화하기 위해 rootfs 프로젝트에는 CONFIG_MTD_M25P80 옵션이 기본적으로 활성화되어 있습니다. 이 경우 이름 /dev32766.0은 위에서 설명한 대로 dts 파일을 업데이트하고, Linux 건물에 설명된 대로 프로젝트를 다시 빌드하고, 설치에 설명된 대로 대상에 설치하는 데 사용하는 파일 이름입니다. 리눅스 이미지가 깜박입니다. 커널이 대상에서 부팅될 때 성공적인 SPI 컨트롤러 초기화에 대한 커널 메시지를 관찰합니다: Linux 커널은 STM32F429의 SPI 컨트롤러용 장치 드라이버를 제공합니다. 커널 구성에서 드라이버를 활성화하려면 kmenuconfig를 만들고 장치 드라이버로 이동하여 SPI 지원을 사용하도록 설정합니다. 그런 다음 SPI Support에서 STM32 SPI 컨트롤러(커널 구성의 CONFIG_SPI_STM32): 보드별 초기 초기 초기 코드는 SPI 장치 테이블의 세그먼트와 함께 이 것을 호출합니다(arch_initcall 중). 모든 장치 노드는 관련 상위 SPI 컨트롤러(bus_num)가 정의된 후 나중에 만들어집니다. 컨트롤러 드라이버를 다시 로드하면 Linux가 이러한 하드 유선 장치를 잊어 버리지 않도록 이 장치 테이블을 영원히 유지합니다. 이 예제에서는 두 개의 SPI 장치를 STM32F7의 SPI2 버스에 연결하고 칩이 이 두 SPI 장치에 대해 선택할 때 PB9 및 PD6 singals를 사용합니다.

우리는 리눅스 사용자 공간에서 ”원시 모드”에서 이러한 SPI 장치에 액세스 할 수 있습니다. 다음은 이 구성에 대한 rootfs.dts.STM32F7의 관련 정의입니다: 위에서 설명한 대로 커널에 SPI 장치의 모집단을 정의하면 칩 선택 0의 SPI4에 SPIDEV 장치가 있습니다. SPIDEV API를 통해 장치에 액세스하려면 응용 프로그램 코드가 대상에서 열 수 있는 장치 노드를 만들어야 합니다. 대상에 장치 노드를 만드는 가장 쉬운 방법은 mdev -s. mdev에 대한 호출을 발행하는 것입니다 .s. mdev는 시스템에 존재하는 장치에 대응하는 장치 파일로 /dev 디렉토리를 채우는 데 사용할 수있는 사용자 공간 리눅스 유틸리티입니다. mdev는 다중 호출 비지박스 유틸리티의 일부입니다. 버스 박스 구성에서 mdev를 사용하려면, bmenuconfig를 실행, 다음 리눅스 시스템 유틸리티로 이동하고 mdev를 활성화 : 여기에 나열된 SPI 버스 시설은 표준 리눅스에 따라 그들을 관리, SPI 버스 및 장치를 선언하는 일반화 된 인터페이스를 제공합니다 드라이버 모델을 수행하고 입력/출력 작업을 수행합니다. 현재 Linux가 SPI 주변 장치와 통신하고 이러한 주변 장치 자체를 구현하지 않는 ”마스터” 측면 인터페이스만 지원됩니다. (SPI 슬레이브 구현을 지원하는 인터페이스는 반드시 다르게 보일 것입니다.) 위에서 설명한 대로 프로젝트 구성을 업데이트한 후 프로젝트 디렉터리에서 make를 실행하여 부팅 가능한 Linux 이미지(.uImage)를 빌드합니다. 이 예제에서는 PB9 칩 선택에 의해 제어되는 STM32F7의 SPI2 버스에 연결된 단일 SPI 플래시 장치가 있다고 가정합니다.

두 개의 파티션이있는 Linux MTD 장치로이 SPI 플래시에 액세스 해 보겠습니다.

Tyvärr, det är nu stängt för kommentarer här.

© 2011 Radiostyrd Bilsport Suffusion theme by Sayontan Sinha