원문출처 : http://arduino.cc/en/Reference/SPI
SPI library
This library allows you to communicate with SPI devices, with the Arduino as the master device. 이 라이브러리는 아두이노를 마스터로하여, SPI디바이스들과 통신을 가능하게 한다.
|
A Brief Introduction to the Serial Peripheral Interface (SPI)
직렬 주변장치 인터페이스(SPI)에 대한 간략한소개
Serial Peripheral Interface (SPI) is a synchronous serial data protocol used by microcontrollers for communicating with one or more peripheral devices quickly over short distances. It can also be used for communication between two microcontrollers. SPI는 근거리에서 마이크로컨트롤러가 하나 또는 여러개의 주변 장치들과 빠르게 통신하기위한 동기식 직렬 데이터 통신 프로토콜이다. 이것은 또한 두개의 마이크로컨트롤러 사이의통신에 사용될 수 있다. With an SPI connection there is always one master device (usually a microcontroller) which controls the peripheral devices. Typically there are three lines common to all the devices: SPI연결에서는 항상 하나의 마스터장치가(대개는 마이크로컨트롤러) 주변장치들을 제어한다. 일반적으로 모든 디바이스들은 3개의 공통 라인을 가진다.
and one line specific for every device: 또한 모든 장치들을 위한 하나의 라인이 명시된다 :
When a device's Slave Select pin is low, it communicates with the master. When it's high, it ignores the master. This allows you to have multiple SPI devices sharing the same MISO, MOSI, and CLK lines. 슬레이브의 SS핀이 low상태가될때, 마스터와 통신하며, HIGH일때는 마스터를 무시한다. 이것은 동일한 MISO, MOSI 및 CLK라인을 공유한 상태에서 다중의 SPI디바이스연결을 가능하게한다.
To write code for a new SPI device you need to note a few things: SPI장치를 위한 코드를 작성할때 약간의 주의가 필요하다 :
The SPI standard is loose and each device implements it a little differently. This means you have to pay special attention to the device's datasheet when writing your code.
Generally speaking, there are four modes of transmission. These modes control whether data is shifted in and out on the rising or falling edge of the data clock signal (called the clock phase), and whether the clock is idle when high or low (called the clock polarity). The four modes combine polarity and phase according to this table: SPI표준은 느슨하고, 각 장치들의 구현에는 약간씩 차이가 있다. 이것이 의미하는것은 코드 작성시 장치의 데이터시트를 주의해서 참조 할 필요가 있다는 것이다. 일반적으로 말해서, 데이터 전송에는 4개의 모드가 있다.이모드들은 클럭 신호의 상승 또는 하강에지에서 데이터의 입/출력 시프트를 할지(클럭 위상이라 불린다), 클럭의 대기상태가 HIGH신호인지 LOW신호인지(클럭의 극성이라 불린다)이다. 4개의 모드들은 아래테이블에서 보여지는것처럼 극성과 위상의 조합을 통해서 만들어진다.
The 당신은 SPI.setDataMode()함수 호출로 클럭의 극성과 위상 제어모드를 설정할 수 있다.
Every SPI device has a maximum allowed speed for SPI Bus. The SPI.setClockDivider() allows you to change the clock speed to make your device working properly (default is 4MHz). 모든 SPI장치들은 SPI 버스 상에서 사용할 수 있는 제한된 최대 속도를 가진다. SPI.setClockDivider()함스로 당신의 장치가 알맞게 작업할 수 있도록 클럭속도를 변경할 수 있다(기본은 4MHz다).
Once you have your SPI parameters set correctly you just need to figure which registers in your device control which functions, and you're good to go. This will be explained in the data sheet for your device.
For more on SPI, see Wikipedia's page on SPI. SPI파라메터들을 올바르게 설정했다면, 남은 것은 단지 디바이스를 제어하기 위한 레지스터와 함수들이 참조하는것이다. 이것은 당신의 디바이스 데이터시트에 설명되어 있을것이다. SPI에 대한 좀더 자세한 부분은, Wikipedia's SPI부분을 참조하라.
|
Connections(연결)
The following table display on which pins the SPI lines are broken out on the different Arduino boards: 다음의 테이블은 서로다른 아두이노 보드들에서 어떠한 핀들이 SPI라인들인지 나타낸다.
Note that MISO, MOSI, and SCK are available in a consistent physical location on the ICSP header; this is useful, for example, in designing a shield that works on every board. 주의할점은 MISO, MOSI, SCK핀들은 ICSP헤더의 물리적 위치에서 사용될 수 있다는 것이다; 이것은 유용한데, 예를 들면, 모든 보드들 위에서 움직이는 쉴드의 디자인같은 것이다.
|
Note about Slave Select (SS) pin on AVR based boards
AVR기반 보드들에서의 슬레이브 선택(SS)핀에 대한 기록 All AVR based boards have an SS pin that is useful when they act as a slave controlled by an external master. Since this library supports only master mode, this pin should be set always as OUTPUT otherwise the SPI interface could be put automatically into slave mode by hardware, rendering the library inoperative.
It is, however, possible to use any pin as the Slave Select (SS) for the devices. For example, the Arduino Ethernet shield uses pin 4 to control the SPI connection to the on-board SD card, and pin 10 to control the connection to the Ethernet controller. 모든 AVR기반 보드들은 외부의 마스터 장치로 부터 슬레이브로 제어될 수 있도록 SS핀을 가지고 있다. 라이브러리는 마스터모드만 지원하므로, 이핀은 항상 출력으로 설정되지만, 다른 경우에 SPI인터페이스는 하드웨어를 자동적으로 슬레이브 모드가 되게 할 수 있으며, 이핀을 무시하게 만들어졌다. 어쨌든, 디바이스의 SS에 어떠한 핀이든 사용될 수 있다. 예를들어, 아두이노 이더넷 쉴드는 4번핀을 온보드 SD카드와 SPI통신하기 위한 제어핀으로 이용하며, 10번은 이더넷 컨트롤러와 연결을 제어한다.
|
Extended SPI functionality for the Due
두에를 위한 SPI 기능 확장 The Arduino Due's SPI interface works differently than any other Arduino boards. The library can be used on the Due with the same methods available to other Arduino boards or using the extended methods. The extended methods exploits the the SAM3X hardware and allows some interesting features like: 두에의 SPI인터페이스는 다른 아두이노 보드들과 다르게 작동한다. 다른 아두이노 보드들에서 이용가능한 동일한 메소드를 이용하거나 확장된 메소드들을 사용할 수 있다. 확장된 메소드들은 SAM3X 하드웨어를 최대한 이용하거나 다음과 같은 몇가지 흥미로운 기능들을 허용한다:
Arduino Due has three exposed pins for the devices Slave Select (SS) lines (pins 4, 10, and 52). 두에는 SS라인을 위한 3개의 노출된 핀을 가지고 있다(핀4, 10, 52).
|
|
Functions
|
Examples
|
See also
|
Corrections, suggestions, and new documentation should be posted to the Forum.
The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.
'아두이노' 카테고리의 다른 글
아두이노 delay() 함수 (0) | 2015.05.02 |
---|---|
아두이노 millis() 함수 (0) | 2015.05.02 |
HC-06 블루투스 모듈 (0) | 2015.02.09 |
아두이노 타이머 인터럽트의 주의점 #3 (0) | 2015.02.09 |
아두이노 타이머 인터럽트 사용#2 (0) | 2015.02.09 |