SPI 동작 방법 문의

Post Reply
worldchun
Posts: 11
Joined: Mon Nov 26, 2018 5:24 pm
languages_spoken: english, korean
ODROIDs: XU4
Has thanked: 0
Been thanked: 0
Contact:

SPI 동작 방법 문의

Unread post by worldchun » Thu Jan 03, 2019 10:39 am

XU4를 이용해서 spi방식의 oled(16x2)를 동작시키고자 합니다.
(oled는 raystar 제품입니다.)

헌데 spi로 데이터만 보내는 예제는 있으나, spi로 슬레이브 내부 레지스터에 데이터를 쓰는 방식이 없어서 문의합니다.
spi로 oled를 init하고 데이터를 쓰고자 합니다.

혹시 아시는 코드 예제(c, python)가 있다면 알려주시기 바랍니다.

charles
Posts: 15
Joined: Mon Feb 25, 2013 12:36 pm
languages_spoken: english
Has thanked: 0
Been thanked: 0
Contact:

Re: SPI 동작 방법 문의

Unread post by charles » Thu Jan 03, 2019 11:07 am

안녕하세요.

하드웨어 구성을 어떻게 하였는지와 사용하는 내부의 controller가 어떤것인가가 중요할 것 같습니다.

SPI bus와 RS pin을 사용하여 회로를 구성하는 경우가 제일 이해하기 쉽고 간단하며 이 경우 RS pin(Data/Instruction)의 설정을 먼저하고 SPI로 데이터를 보내면 됩니다.

worldchun
Posts: 11
Joined: Mon Nov 26, 2018 5:24 pm
languages_spoken: english, korean
ODROIDs: XU4
Has thanked: 0
Been thanked: 0
Contact:

Re: SPI 동작 방법 문의

Unread post by worldchun » Thu Jan 03, 2019 1:42 pm

OLED ----- XU4

SCL ----- SPI_1.CLK(No.10)
SDO ----- not connected
SDI ----- SPI_1.MOSI(No.7)
CSB ----- SPI_1.CSN(No.11)

OLED의 핀은 전원(VCC,GND)을 제외하면 위와 같이 연결하였습니다.
init command와 data 전송만 하기에 sdo는 연결하지 않았구요.

c언어나 python(spi.xfer 함수 사용)을 이용해서 단순 데이터 전송 구동 시에 SPI_1.CSN(chip select) 핀이 low되는 것과 SPI_1.CLK 클럭은 확인하였습니다.
전에 말씀하신 SPI 버스와 RS 핀을 사용한 경우가 위의 경우와 동일하다고 생각되는데요.

1.RS 핀의 DATA/INSTRUCTION 설정이 무엇을 의미하는지 문의드립니다.
(RS 핀 설정은 data 보낼 시 'high', instruction 보낼 시 'low' 시키는 걸 의미하는 건가요?)
ex) python의 경우 xfer or xfer2 이용시
spi.xfer([1,2,4,5,0]) 이렇게 그냥 값만을 전달하는 함수여서 원하는 주소에 값을 넣는 방법을 문의합니다.

2. RS 핀을 이용해서 INSTRUCTION 설정 후 데이터를 보낼 때 SLAVE 내의 주소에 값을 넣는 방법

3. RS 핀을 이용해서 DATA 설정 후 데이터를 보낼 때 SLAVE 내의 주소(OLED 1번째/2번째 라인 주소)에 값을 넣는 방법
위 3가지 방법을 알면 구동이 가능하리라 생각됩니다.

샘플 코드나 참조 사이트를 알려주면 더 좋구요.
감사합니다.

charles
Posts: 15
Joined: Mon Feb 25, 2013 12:36 pm
languages_spoken: english
Has thanked: 0
Been thanked: 0
Contact:

Re: SPI 동작 방법 문의

Unread post by charles » Mon Jan 07, 2019 1:34 pm

안녕하세요.

지금 하드웨어에는 RS핀이 없는 것 처럼 보입니다.

이 경우 내부 컨트롤러의 데이터 쉬트 내용을 참고하여 초기화 및 데이터를 전송하여야 합니다.

커널의 fbtft드라이버를 참조 하시면 될 듯 합니다. XU4 리눅스 최신 커널기준(4.14.y) drivers/staging/fbtft폴더의 내용입니다.

worldchun
Posts: 11
Joined: Mon Nov 26, 2018 5:24 pm
languages_spoken: english, korean
ODROIDs: XU4
Has thanked: 0
Been thanked: 0
Contact:

Re: SPI 동작 방법 문의

Unread post by worldchun » Tue Jan 08, 2019 4:12 pm

RS 핀의 low/high 상태를 이용해서 command를 보내거나 message를 보내는 것은 검색을 통해 확인하였습니다.
그리고 현재 사용하고자 하는 oled에 RS 핀이 없는 것도 확인하였고요.

헌데 답변한 내용에서 'drivers/staging/fbtft폴더'의 무엇을 참조하라는 얘긴가요?
"/usr/src/linux-4.14.78-150/drivers/staging/fbtft" 폴더가 있으나, Kconfig 파일 하나만 있고, 파일 내용도 config 파일이어서 전혀 도움이 되지 않는데요.

내부 컨트롤러의 초기화는 데이터시트를 통해서 확인은 하였습니다.

결과적으로 제가 궁금한 건 RS 핀이 없는 상태에서 어떻게 oled에 command와 message를 전송할 수 있느냐 입니다.
(RS 핀의 의미를 모를 때에는 제가 slave 내의 주소에 값을 넣는 방법이라고 표현했고요.)

그럼 RS 핀이 없는 장비와 SPI 통신할 경우 제가 참조할 수 있는 코드가 있을까요?

charles
Posts: 15
Joined: Mon Feb 25, 2013 12:36 pm
languages_spoken: english
Has thanked: 0
Been thanked: 0
Contact:

Re: SPI 동작 방법 문의

Unread post by charles » Thu Jan 17, 2019 10:27 am

안녕하세요.

커널소스를 git에서 받아서 보아야 합니다.

fbtft는 spi lcd를 framebuffer로 만들어 주는 드라이버입니다.

드라이버의 구조를 잘 보고 이해하면 사용하실 수 있습니다.

Post Reply

Return to “XU4/HC1+/HC2/XU3”

Who is online

Users browsing this forum: No registered users and 4 guests