SPI에 대한 기본적인 내용을 확인하였으니, 지금부터는 한번 직접 설계를 하는 시간을 가지도록 할게요.
이제 Aurix MCU를 이용하여 SPI 통신을 설계해 볼게요.
현재 제가 가지고 있는 Aurix MCU 개발 보드는 TC237 TFT 개발 보드입니다.
그래서, 다양한 회로가 이미 아래와 같이 구현이 되어 있습니다.
이중에서 저는 RTC라는 IC(Integrated Circuit)와 MCU간의 SPI 통신을 수행해 볼겁니다.
위와 같이 RTC가 MCU가 QSPI3이라는 통신선으로 연결이 되어 있는 것을 확인하실수 있네요.
그렇다면 설계를 수행하기 전, RTC는 무엇을 하는 IC인지 확인할 필요가 있습니다.
RTC는 Real Time Clock의 약자입니다.
정확한 내용은 아래 위키 내용을 살펴 보도록 해요!
실시간 시계(중국어: 實時間時計, 문화어: 실시간기계기구, Real Time Clock, RTC)는 현재의 시간을 유지시키는 컴퓨터 시계이다. 이 용어가 개인용 컴퓨터, 서버, 임베디드 시스템의 장치를 일컫기도 하지만 실시간 시계는 정확한 시간을 유지해야 하는 거의 모든 전자기기에 존재한다. 실시간 시계는 컴퓨터 전원이 나가도 시간이 유지되어야 하기 때문에 마이크로프로세서의 개입 없이 초부터 년까지의 시간을 디지털 회로의 카운터에 의존하여 시간을 센다. 컴퓨터의 전원이 인가되지 않아도 시간을 유지하도록 동작하는 것이 필요하다. 만약 컴퓨터를 껐는데 RTC의 카운터 회로에 전원이 인가되지 않으면 카운터 값을 상실하기 때문에 시간을 다시 설정해야 하는 문제가 발생한다. 따라서 컴퓨터의 전원이 꺼져도 RTC의 카운터회로에 전원을 공급함으로써 시간 카운터를 유지하여 시간 값을 유지하도록 시스템을 구성한다. |
현재의 시간을 유지시키는 장치라고 합니다.
그렇다면 SPI를 통해서 다양한 시간정보를 획득할수 있겠네요.
그렇다면 어떠한 RTC가 개발보드안에 들어가 있는 것일까요?
RTC도 여러 종류가 있으니 말이에요!
찾아보니 RTC MPC79511 이라는 IC가 들어가 있습니다.
그렇다며 MCP79511 DataSheet를 찾아 보도록 해요!
구글에 검색하면 잘 나옵니다.
그래서 아래와 같이 DataSheet를 획득하게 되었습니다.
64바이트 RAM을 가지고 있고, EEPROM 1Kbit를 가지고 있습니다.
그렇다면 RTC는 EEPROM 이라는 비휘발성 메모리를 가지고 있어서, 데이타를 저장할수 있는 역할도 있나봅니다.
다시말해서 지금 개발보드안에 들어간 RTC는 다양한 역할을 하는 IC라고 볼수 있겠네요!
아래는 기본적인 Block Diagram입니다.
이제 Spec을 통해서 SPI를 설계할때 중요한 파라미터를 뽑아내야 합니다.
지금부터 살펴 보도록 해요!
그렇다면 이제 SPI의 설정에서 중요한 부분을 살펴 보도록 하자!
1. 최대 주파수 대역 확인하기
최대 대역은 몇 MHz일까요?
아래 스펙에서 5MHz까지 가능하다고 합니다.
SPI는 동기화 통신 방식이기 떄문에 Clock을 가지고 있습니다.
이 Clock을 최대 5MHz까지로 설정하여 사용할수 있다는 것입니다.
그래서 저는 넉넉하게 1MHz로 Clock 설정을 하도록 설계를 할 것입니다.
2. Polarity 확인하기 (CPOL , CPHA 설정 확인)
Spec에서 아래 그림을 찾을수 있었습니다.
아래와 같이 SCK가 아래로 있다가, Rising일때 데이터를 획득하네요.
그렇다면 이경우는 아래와 같이 CPOL = 0, CPHA= 0 인 경우 입니다.
3. 한번 보낼때, 몇비트 보내나?
그렇다면 MCU에서 통신을 할때 몇 비트를 보내야 할까요?
RTC의 경우 24비트를 보내는 경우도 있고, 그렇지 않는 경우도 있었습니다.
RTC가 다양한 기능을 하니까 이러한 경우가 생기는 것 같습니다.
우선 저는 가장 기본적인 기능인 상태 레지스터를 읽을때 필요한 비트를 보내도록 할겁니다.
16비트를 보내도록 설계하면 되겠네요!
4. Delay 설정은 어떻게 해야 하나?
Delay 설정은 어떻게 수행해야 되는지를 알아 보도록 하자!
저는 우선적으로 넉넉하게 설정하고 나중에 맞추는 것이 좋다고 생각합니다.
아래와 같이 CS가 내려가고 SCK가 시작하는 시점
그리고 SCL가 끝나고 CS가 올라가는 시점이 가장 중요합니다.
우선 Spec을 보고 넉넉하게 500ns로 설정을 하도록 하겠습니다.
위의 부분에 대해서 적적하게 500ns로 설정하도록 하자!
이제 설계 파라미터는 어느정도 정리를 하였습니다.
이제 부터 Aurix MCU를 가지고 SPI 설정을 수행해 보도록 하겠습니다. ^^
'Embedded SW > Embedded SW Introduction' 카테고리의 다른 글
Digital-to-Analog Converter (Pmod DA4)를 SPI를 이용하여 동작 1편 (TC275 MCU) (0) | 2022.09.11 |
---|---|
16. Aurix SPI 개발 수행 (2) (0) | 2021.07.27 |
14. MCU에서 메모리와 Memory-mapped I/O란 무엇인가? (5) | 2021.07.26 |
13. MCU에서 PLL(Phase-Locked Loop)란 무엇인가? (0) | 2021.07.24 |
12. MCU에서 Clock 과 오실레이터(Oscillator) 이란 무엇인가? (0) | 2021.07.22 |
댓글