2 개 이상의 SPI 슬레이브 추가


12

이 구성표에서 볼 수 있듯이 슬레이브에는 CS0 및 CS1의 두 채널이 있습니다. MCP3008과 같은 2 개의 칩만 연결할 수 있다는 의미입니까? 또는 연결된 2 개의 슬레이브에 더 많은 슬레이브를 연결할 수 있습니까?

Raspberry 구성표가 Wikipedia에서 가져온이 SPI 슬레이브 연결 구성표와 공통적으로 지원되는 것이 있습니까? 이렇게 만들 수 있습니까?

SPI 슬레이브


"이렇게 만들 수 있습니까?" -> Pi가 SS1, SS2, SS3 대신 CE0 및 CE1을 제외하고는 그것이 정확히 어떻게 나에게 보입니다. SCLK, MOSI 및 MISO 버스 라인은 두 경우 모두 모든 장치에서 공유됩니다.
goldilocks

답변:


12

여러 가지 방법이 있습니다.

슬레이브 선택이 일종의 비트 뱅을 할 수 있습니다. 즉, 모든 장치를 공유 MISO / MOSI / SCLK 및 그라운드이지만 별도의 CS로 연결하십시오. SPI 드라이버를 호출하기 전에 원하는 장치에 대해 CS를 낮게 설정하십시오. SPI 드라이버는 CS를 설정하려고 시도하지만 CS가 연결되어 있지 않다는 것을 알지 못합니다.

40 핀 확장 헤더가있는 Pis에는 3 개의 칩을 선택하는 또 다른 SPI 장치가 있습니다. 내 pigpio 라이브러리는 해당 장치를 지원합니다.

당신은 소프트웨어 전체 프로토콜 비트 비트 뱅 수 있습니다.

추가 하드웨어를 추가하여 CS 회선을 원하는 장치로 전환 할 수 있습니다.

추가 편집

"적절한"Raspberry Pi Linux SPI 드라이버는 현재 임의의 gpios를 CS로 사용할 수 있도록 검토 중입니다.

2를 추가하도록 수정

현재 Linux SPI 드라이버 (spi_bcm2853)는 칩 선택에 따라 임의의 GPIO를 지원한다고합니다. / boot / overlays / README를 참조하십시오.


1
"임의의 gpios 허용"은 그 자체로도 좋은 아이디어이며 임베디드 시스템에서 기대할 수있는 것입니다. 입력 주셔서 감사합니다.
Ghanima

Joan, "pigpio"라이브러리와 함께 "3 개의 칩 선택을 가진 다른 SPI 장치"를 사용하거나 코드 예제에 링크하는 방법을 설명하십시오. 질문에 대답하는 데 도움이됩니다. 감사합니다
Alex

abyz.co.uk/rpi/pigpio/cif.html#spiOpen을 참조하십시오 . GPIO 16-21은 보조 SPI에 연결되어 있습니다. abyz.co.uk/rpi/pigpio/index.html#Type_3을 참조하십시오 . 또는 현재 현재 Linux SPI 드라이버 (spi_bcm2853)는 칩 선택에 따라 임의의 GPIO를 지원한다고합니다. / boot / overlays / README를 참조하십시오.
joan

"40 핀 확장 헤더를 가진 Pis에는 3 개의 칩 선택을 가진 또 다른 SPI 장치가 있습니다"40 핀 헤더에는 2

1
@meh 40 핀 확장 헤더에는 5 개의 칩 선택이 있습니다. 기본 SPI의 경우 2 개, 보조 SPI의 경우 3 개. 보조 SPI 신호는 소문자로 abyz.co.uk/rpi/pigpio/index.html#Type_3
joan

3

RaspberryPi는 SPI 버스에서 칩 선택을 2 개만 제공합니다 ( 여기 참조 ). 그리고 나는 SPI 드라이버와 소프트웨어 솔루션이 그 사실에 의존한다고 가정합니다 (@joan의 답변은 다른 라이브러리가 다르게 처리한다고 제안하지만 공식 드라이버는 향후 임의의 GPIO 핀을 칩 선택으로 사용할 수 있음).

그러나 칩 선택은 Pi의 전용 디지털 출력에 지나지 않습니다. 따라서 GPIO 핀을 사용하면 항상 더 많은 양의 칩을 선택할 수 있습니다. 그러나이 경우 소프트웨어는 올바른 SPI 슬레이브를 처리하기 위해 적절한 핀을 설정해야합니다.

칩 선택의 전체 아이디어는 하나의 단일 슬레이브를 상호 배타적으로 선택하는 것이므로 간단한 디지털 회로를 사용하여 "폐기 된"GPIO 핀의 양을 줄일 수 있습니다 (다른 목적으로도 필요한 경우). 74HC / HCT138과 같이 3-to-8 라인 디코더 / 디멀티플렉서를 사용하면 단 3 개의 GPIO 핀으로 8 개의 칩 선택을 통해 8 개의 슬레이브를 처리 할 수 ​​있습니다.

버스 라인 SCLK 및 MOSI는 모든 슬레이브간에 공유된다는 점에 유의하십시오. 따라서 여러 슬레이브를 Pi에 꽂을 때 Pi의 팬 아웃이 부하 (슬레이브 입력 핀의 저항 및 커패시턴스)를 초과하지 않는지 확인하십시오. 커패시턴스가 낮고 현재 문제가되지는 않지만 디지털 입력의 높은 저항.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.