CODEDRAGON ㆍDevelopment/IoT
SPI 라이브러리 함수
Arduino Uno의 SPI 라이브러리에서는 4MHz 속도, MSB 우선, 모드 0번을 디폴트값으로 가집니다.
· begin()
· end()
· setFrequency()
· setBitOrder()
· setClockDivider()
· setDataMode()
· transfer()
· shiftOut()
begin()
SPI통신 초기화
end()
SPI통신 종료
setFrequency()
void setFrequency(uint32_t freq)
매개변수 |
설명 |
freq |
통신 속도 |
setBitOrder()
SPI통신을 할때 데이터의 전송순서를 설정한다. LSBFIRST나 MSBFIRST중 선택할 수 있습니다.
void setBitOrder(uint8_t bitOrder)
매개변수 |
설명 |
bitOrder |
데이터 전송 방법 (LSBFIRST, MSBFIRST) |
setClockDivider()
시스템에서 사용할 클럭의 상대적인 분주비율을 설정한다. AVR기반의 보드에서는 2,4,8,16,32,64,128중 선택할 수 있으며 default값은 SPI_CLOCK_DIV4로 시스템클럭의 1/4속도로 데이터를 전송합니다.
setClockDivider(rate) |
setDataMode()
클럭의 phase와 polarity를 조합하여 4가지의 전송모드를 나타낸다. 내용이 어렵기 때문에 자세한 내용은 생략합니다.
void setDataMode(uint8_t dataMode) |
매개변수 |
설명 |
dataMode |
데이터 모드 SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3 중 하나를 지정 |
transfer()
SPI통신으로 데이터를 보내고 데이터를 수신받습니다.
uint8_t transfer(uint8_t data) |
MISO를 통해 슬레이브에서 수신된 8비트 데이터를 반환합니다.
매개변수 |
설명 |
data |
MOSI를 통해 슬레이브로 전송할 8비트 데이터 |
void transferBytes(uint8_t *out, uint8_t *in, uint32_t size) |
매개변수 |
설명 |
out |
MOSI를 통해 슬레이브로 전송할 바이트 데이터 배열 |
in |
MISO를 통해 슬레이브에서 수신된 바이트 데이터 저장을 위한 버퍼 |
size |
송수신할 데이터의 바이트 단위 크기 |
shiftOut()
한번에 한 비트씩의 바이트를 옮깁니다.
최고(가장 왼쪽) 또는 최저(가장 오른쪽) 비트부터 시작합니다.
각 비트에, 클락 핀(Clock Pin)은 HIGH로 풀 되고, 다음 비트는 데이터 라인에서 읽히고, 클락 핀은 LOW 됩니다.
각 비트는 차례로 데이터 핀에 써지며, 각 클락 핀이 펄스되어(high 되면, low) 비트가 사용가능함을 가리킵니다.
주의 - 올라가는 에지에 의해 클락되는 장치와 인터페이스하면, shiftOut() 이 불리기 전에 클락 핀이 로우되는, 예를 들어 digitalWrite(clockPin, LOW), 것을 확인해야 합니다.
shiftOut(dataPin, clockPin, bitOrder, value) |
매개변수 |
설명 |
||||
dataPin |
각 비트에 입력할 핀 (int) |
||||
clockPin |
dataPin 이 옳은 값(int) 로 맞추어지면 토글할 핀 |
||||
bitOrder |
비트들 안에서 어떤 순서로 옮길지 설정합니다.
|
||||
value |
옮길 자료. (byte) |
https://www.arduino.cc/reference/ko/language/functions/advanced-io/shiftout/
'Development > IoT' 카테고리의 다른 글
4자리 7 세그먼트 (0) | 2018.05.20 |
---|---|
#define 여러줄 정의 (역슬래쉬; \) (0) | 2018.05.19 |
SPI (Serial Peripheral Interface) (0) | 2018.05.17 |
수납함 (0) | 2018.05.16 |
74595 IC, 7 세그먼트 + 74595(74HC595) (0) | 2018.05.15 |