상세 컨텐츠

본문 제목

Firmware 담당자의 SPI 통신하기

개발이야기/보드간 통신 (UART, SPI 등)

by mycatdid0 2022. 4. 8. 15:02

본문

반응형

(포스팅 2019.11.29)

 

본 포스트는 필자가 회사 생활에서 경험한 내용을 적어보고자 한다.
이 포스트에서 필자는 A 보드의 Firmware 담당자이다.

당시는 본인이 개발중인 A보드와 외부에서 개발된 B 보드와의 SPI 통신을 만들어야 하는 상황이었다.
SPI 통신에 관한 기본 지식, MISO MOSI CPHA CPOL 같은 얘기는 인터넷에 검색하면 많이 나오니 일단 넘어가자.
필자 또한 처음부터 차근차근 설명하고 싶지만, 포스팅에 주어진 시간이 많지 않아서..

처음 개발 준비할때 이상적이라면
CPU 놓고, SPI 통신하는 칩 놓고, 회로로 연결되게 PCB 떠서 SMT 까지 해서 보드를 받으면 좋겠지만,

실제로는
A 보드와 B 보드의 전압 등 스펙이 달라 SPI 라인 중간에 부가 회로가 들어가고,
회사에선 테스트보드 만들어줄 돈이 없다면서 개발이 알아서 하라고 한다.
HW 에선 회로상으로 연결되게 점퍼를 날려놓은 다음, 테스터기로 찍어보고 문제없다면서 Firmware 담당자에게 전달한다.

HW 에서 작업하여 전달한 보드


Firmware 담당자는 소위 말하는 '보드를 살리는' 작업을 하게 된다.
여기서 Firmware 는 일이 진행이 안되면 도움을 받기가 힘들다.

HW 담당자 : 테스터기로 찍어본다 -> 회로 이상 없어요.
B보드 회사 : 메뉴얼 제대로 읽어보셨어요? 그 보드 전압 한번만 잘못 인가하면 버려야 됩니다.
팀장 : 그거 급한거야 빨리해. 제대로 하고 있는 거 맞아?
다른 담당자들은 각자 자신의 영역에서 문제 없다고 하고, 나머지 영역 전부를 Firmware 담당자가 책임져야 한다.


필자가 아무리 메뉴얼을 정독해보고 코드를 검토하고 디버깅을 해보아도 문제는 없었다.
스코프를 찍어서 bit 를 하나하나 다 검토해도 문제는 없었다.
문제점을 찾을 수가 없으니 변수를 하나하나 다 바꾸어 보는 수 밖에 없었다.

SPI 클럭이 B보드 스펙상으로는 1Mhz~20Mhz 였으니 클럭을 바꾸어 보자.
1Mhz 에선 아래와 같이 명료하게 응답이 오지만, 보드 초기화는 실패한다.

1Mhz 는 파형이라도 잘 나왔다.

클럭을 높이기 시작하니, 파형이 일그러지기 시작했다.
HW 담당자를 찾아갔다.
Firmware : HW님, 이거 클럭을 높였더니 파형이 이상하게 나와요.
HW : 그래도 High Low 는 맞게 나오는 것 같은데요? 뭐가 문젠지 잘 모르겠네.
HW : 제가 더 할 수 있는게 없어요.

10Mhz 에서 측정한 파형. 라인마다 High 로 올라가는 속도가 다르다.

각자가 다 자기가 옳다고 하고 최종 결과물은 내가 만들어야 하니, 패닉이었다.
그래서 결론을 다음과 같이 내렸다.
'아무도 믿지 말고 나혼자 다 다시 한다.'

HW 점퍼 날린 것 다 해체하고, 필자가 처음부터 다시 작업하였다.
신호라인의 길이 맞추고, 간섭 안되게 넓게 벌렸다.
점퍼 날리는데만 이틀이 걸렸다.

현미경으로 보면서 납땜하다 눈알 빠질뻔했다.

20Mhz 통신 성공한 결과물

이 상황이 말이 안되긴 하는데,
팀장은 쪼고 다른 담당자들은 문제가 없다고 하니 이런 거라도 해보는 수밖에 없었다.

결론은 10Mhz 이상에서 SPI 정상통신이 되어야 B보드가 응답을 하였다.

20Mhz 에서야 B 보드가 응답했다.

되면 된거다.
스펙이 잘못 표기되었다고 B보드사에 전달해봤자, '고칠게요' 라는 답변을 들을 뿐이고,
HW 담당자에게 '당신이 점퍼를 잘 날렸으면 이렇게 일이 꼬이진 않았을거야' 라고 할 순 없지 않는가?
팀장께 진행상황을 보고를 했고, 나중엔 B 보드를 쓸일도 없어졌다.

현자타임이다.


당시의 이야기를 꺼내다 보니 울컥 한 것 같다.
포스팅하고자 하는 내용은 다음과 같다.
'SPI 라인에서 1Mhz 가 넘기 시작하면, 회로 라인 및 칩의 영향을 받으므로 주의가 필요하다.'
'통신하는 라인을 점퍼 날릴 땐, 라인의 길이를 같게 하고 각 라인의 간격을 벌릴 필요가 있다.'

반응형

관련글 더보기

댓글 영역