nRF52 SPI
Features
SPI 수량 : nRF52840 의 경우 SPI master 로 사용시 4개, spi slave 로 사용시 3개.
nRF52840 SPI 최대 통신 속도 및 SPI 클럭
SPIM3 최대통신속도 32Mbps . 주의 : 32Mbps 는 SPIM3 에서만 지원되는 사양.
최대 통신 속도는 SPI 클럭으로 결정되는데 , 데이트 시트 전기사양 부분을 보면 SPIM3을 비롯한 모든 nRF52840 의 SPI 클럭 최대 주파수는 8MHz 로 명시되어있는데, SPI 클럭 최대 8MHz 라면 통신 속도 32Mbps 는 불가능한데 32Mbps 가능하다고 표현하고 있음.
from : http://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf 의 페이지 388 에 있는 SPIM 전기 사양 부분 상세히 보자 SCK Period 최소값이 125 nsec 이므로 주파수로는 8MHz 에 해당한다. 그런데 Bit rates 에서 최대 32MBps 된다고 기록되어있다. 그리고 그 아래에 고속 통신 가능할려면 GPIO 핀 High Drive 요구될 수도 있다고되어있음. must 도 아니고 may?
사족
아...또 빡대가리가 데이터 시트 작성했나봄. 혹은 동일 품번 칩인데 revision 에 따라 특성이 달라서 지들도 혼선 일으키고 있는 것 같기도 함.
nRF5280 SPI 안전 설계 기준
안전하게 설계하려면 nRF52840 의 모든 SPI (마스터든 슬레이브든 ) 클럭 최대 8MHz 이하로 사용하면 됨.
고속 SPI Master 요구되는 경우 SPIM3 의 안정 통신 가능한 속도 시험 검사 직접 수행 한 결과 보증되는 최고 속도로 확인 과정 거쳐야 한다. 예 : 30일 연속 온도 범위 0도 ~ 80도 고속 통신 과정에서 오류 0회 등의 조건 만족. 특히 연속 통신 중엔 오류 없었던 것도 초기 첫 통신 시점에 오류가 많이 발생하므로 이런 지점 모두 체크되어야 함.
SPI Master . Function Block
from : http://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf page 367
SPIM - SPI Master with Easy DMA
SPIS - SPI slave with EasyDMA
from : http://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf page 389
- SPIS 는 기본 EasyDMA 적용되어 작동하므로 SPI master 처럼 EasyDMA 활용 위한 별도 처리 필요없음.
- ultra low power
- SPI mode0,1,2,3 지원. 레지스터 CONFIG 의 CPOL, CPHA 에서 설정.
-- SPI Mode 0 : CPOL = 0 (Leading), CPHA = 0 (Active High)
-- SPI Mode 1 : CPOL = 0 (Leading), CPHA = 1 (Active Low)
-- SPI Mode 2 : CPOL = 1 (Trailing), CPHA = 0 (Active High)
-- SPI Mode 3 : CPOL = 1 (Trailing), CPHA = 1 (Active Low)
SPIS Pin configuration
1. SPI 의 핀 설정 레지스터.
PSEL.CSN : CSN
PSEL.SCK : SCK
PSEL.MOSI : MOSI
PSEL.MISO : MISO
2. SPI slave 가 disabled 상태에서만 위 레지스터 설정해야한다.
3. SPI slave 용으로 사용되는 핀의 입출력방향은 모두 Input 으로 설정(MISO 마저도 Input 으로 설정)한 이후에 SPI slave enable 시켜야한다.
4. MISO 핀은 CSN 으로 선택되지 않은 상태에서는 high impedance 상태이다.
Errata - SPI
- 칩 출하 이후 발견된 오류 및 조치법들.
- ERRATA 웹페이지: https://infocenter.nordicsemi.com/topic/errata_nRF52840_Rev2/ERR/nRF52840/Rev2/latest/err_840_new.html
Errta 214 SPIS : Incorrect data transferred.
- 상황 : CSN low 인 상태에서 SPIS 를 disabled 시킨경우.
- 오류 : 신규 SPI 전송시 첫바이트에 이전 전송시의 바이트가 전송되어 오류 발생함.
- 조치 : After disabling the SPISn instance (writing SPISn->ENABLE = SPIS_ENABLE_ENABLE_Disable), apply the following code:
*(volatile uint32_t *) (NRF_SPISn_BASE + 0xA4ul) = 1ul;
*(volatile uint32_t *) (NRF_SPISn_BASE + 0xACul) = 1ul;
nRF52840 최고속도 얼마냐 는 질문에 답변 달린거 보면 SPIM Instance 3 는 34MHz 까지 된다는 답변. -2018년 .
SPIS 첫통신 1 비트 시프트 증상 있다는 질문.
위 링크의 질문자와 동일한 오류 증상 경험했었는데, 나의 경우엔 STM32 의 오류로 결론 났었음. 상세 아래 링크.
SPI Code example
- SPI Master
The SPI Master Example demonstrates the use of the SPI or SPIM peripheral. It uses the SPI master driver. The application executes SPI transactions every 200 ms and toggles the LED when the transfer is completed.
- DMA 기반 SPI Master 통신.
The nrfx SPI Master Example demonstrates the use of the SPIM peripheral with extended features. It uses the SPIM driver.
- SPI slave Example
The SPI Slave Example demonstrates the use of the SPIS peripheral. It uses the SPIS driver - legacy layer.
연관
기초 지식 SPI Mode 이해 . https://igotit.tistory.com/2088
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
상위 정리글
https://igotit.tistory.com/244 의 nRF52
첫 등록 : 2019.01.13
최종 수정 : 2023.08.12
단축 주소 : https://igotit.tistory.com/2048
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
nRF52840. USB CDC (com 포트) 구현. (6) | 2020.11.18 |
---|---|
nRF52. BLE Central Multilink. Nordic UART Service(NUS) Client 구현. (3) | 2019.11.10 |
nRF5 SDK 기반 SES , KEIL 멀티 프로젝트 폴더 구축 및 프로젝트 템플릿3 (4) | 2019.10.24 |
nRF5 SDK 16.0.0 버그들 . KEIL DeviceFamilyPack 등 (0) | 2019.10.24 |
nRF52840 project template 2. nRF5 SDK 15.2.0, SEGGER Embedded Studio (3) | 2019.10.24 |
댓글