원래는 WIFI 모듈을 연결하여 테스트를 진행하려고 했는데,
회사에서 WIFI 모듈은 잠깐 미뤄두고 급한 일을 먼저 처리하라고 해서..
IC를 연결하지 않고 SPI Write만 동작시키고, 파형만 오실로 스코프로 찍어 봤습니다.
Nucleo 보드의 SPI 용 핀 할당은 다음과 같습니다.
STM32F411 의 SPI용 핀할당 내용입니다.
SPI_CS 는 일반 GPIO로 제어했습니다.
아무 설정도 안하고 기본 SPI 스피드는 42MHz 입니다. Cube 툴에 표시 되네요.
다음은 SPI_CS 를 일반 GPIO 출력으로 설정하는 코드 예제입니다.
PA8 핀을 사용했습니다. 설정은 내부 풀업,출력,Fast Speed,초기값 HIGH 입니다.
기본 SPI_CLK 스피드인 42MHz 로 출력을 테스트 해 보니, 오실로 스코프가 파형을 못 쫒아가서 파형이 엉망으로 나오네요.
다음은 42MHz SPI CLK 확대한 그림입니다. 스코프가 못 쫒아갑니다. 오실로 스코프 회사에 연락해 보니, 측정할 클럭의 10배는 되야 보인다 하더군요. 42MHz 이면 500MHz 오실로 스코프가 필요하단 말이네요. 제가 갖고 있는 건, 200MHz 입니다.
다음은 SPI_CLK를 21MHz로 설정한 소스 코드입니다.
이 코드로 동작시킨 21MHz SPI_CLK 과 파형입니다.
그리고 다음은 21MHz SPI_CLK 확대 파형입니다. 클럭이 잘 보이네요.
그런데 이상한 점은 42MHz 나 21MHz 나 통신 속도가 똑같다는 점입니다.
42MHz가 전송 속도는 21MHz 보다 2배는 빨라야 하는데, 10 Byte 전송 테스트시 같은 시간이 걸린다는 게 좀 의아하네요.
좀 전에, 스코프 회사에서 점검하고 갔는데.. 아무리 해도 개선이 안되네요.
금요일에 300MHz 오실로 스코프를 가지고 온다니까, 스코프가 문제인지 파형이 문제인지 확인할 수 있겠습니다.
DMA 나 인터럽트로 동작시켜야 SPI_CLK 사이의 구간이 짧아 지려나?
현재는 회사 다음 일정이 바빠서 인터럽트나 DMA 테스트는 나중에 진행하겠고,
테스트 후에 자료를 다시 올리겠습니다.
테스트 한 소스코드 첨부합니다.
댓글 없음:
댓글 쓰기