본문 바로가기
개발이야기

거짓말쟁이 AI와 개발하기 (EFR32FG1 + MCP48FVB21)

by 코저씨 2025. 7. 27.
728x90

최근 들어 ChatGPT와 같은 AI 도구를 활용해 임베디드 시스템 개발을 진행하는 사례가 점점 일반화되고 있다. 프롬프트 기반으로 알고리즘을 설계하고, 기존의 화이트보드에서 이뤄지던 설계 과정이 디지털로 전환되는 것을 실감하고 있다.

이번 프로젝트에서는 MCP48FVB21 DAC 칩을 사용해 전압 출력을 제어하는 펌웨어를 개발해야 했고, 초기부터 ChatGPT와 함께 SPI 통신 설정 및 DAC 구동을 시도해보았다.


SPI 설정: 좋은 시작, 예기치 못한 오류

ChatGPT는 꽤 괜찮은 출발을 보여줬다. SPI 설정 예제를 제공하고, 실리콘랩스 관련 문서 링크까지 안내해줬다.
하지만 실제 구현에 들어가자 문제가 발생했다.


SPI를 설정하고 송신 루틴을 구성했음에도 완전히 다른 핀들이 동작하기 시작했다. EFR32 계열 MCU는 각 핀이 다수의 기능을 가질 수 있고, 해당 기능을 사용하려면 LOC 설정을 정확히 해야 한다. 이 부분은 문서로도 명확히 안내되어 있지만....
ChatGPT는 이를 간과했다.

 


GPT의 고집과 LOC 설정

 

UART1을 통해 SPI를 구성할 수 있는 핀을 선택했음에도 GPT는 지속적으로 해당 핀은 SPI에 사용할 수 없다고 주장했다.

EFR32의 GPIO 기능 매핑이 복잡하다는 점을 감안하더라도, 이는 신뢰도에 타격을 주는 결과였다.

 

 

LOC 설정과 레지스터 구성을 하나하나 검토할 시간은 부족했기에, 일단 해당 핀들이 GPIO로 토글되는지를 우선 확인했다.

정상적으로 토글되는 것으로 보아 핀 문제는 아니었고, SPI를 GPIO 방식으로 시뮬레이션해 구현하기로 결정했다.


MCP48FVB21 통신 규격 혼란

 

SPI 루틴이 완료된 후, DAC에 명령어를 전송하는 단계에서 GPT와 GitHub Copilot의 제안이 상이했다.

  • GPT는 24비트 전송을,
  • Copilot은 16비트 전송을 권장.

코파일럿
챗지피티

 

이처럼 중요한 프로토콜에서 모순된 답변이 나오는 것은 상당히 위험하다.

GPT에게 "왜 24비트를 사용해야 하냐"고 물었더니, 내가 질문한 내용에 따라 “그게 맞다”고 하는 식의 대답이 돌아왔다.

사실 확인보다는 사용자의 말에 맞춰주는 성향을 드러낸 셈이다.

 

결국, 직접 MCP48FVB21 데이터시트를 확인한 결과, GPT의 답변이 맞았다 (24비트 전송). 하지만, 해당 답이 맞는 것과는 별개로, 이 과정에서 GPT에 대한 기술적 신뢰는 낮아질 수밖에 없었다.

지피치 크악! C발

 

 

여기서부터는 믿을수가 없어서 직접 데이터시트를 보면서 코드를 짜기 시작했다. 간단한 칩이라 크게 설정할껀 없었다.

최종 구성 및 결과

  • Vref: 내부 기준전압 사용
  • Gain: 1x 설정
  • 채널: CH0만 활성화
  • SPI 송신 데이터: 3바이트 (상위 2바이트: 제어, 하위 1바이트: 출력값)

SPI 시뮬레이션 방식으로 구성한 루틴은 문제없이 동작하였고, DAC 출력도 정확히 나왔다. ChatGPT가 제공한 코드 구조 자체는 꽤 깔끔했고, 입력값 변화에 따른 출력도 안정적으로 이루어졌다.

 

 


결론 및 교훈

 

  1. AI에게는 명확한 알고리즘 위주 요청이 효과적이다. 예: 센서 중앙값 계산, 필터링 알고리즘 등.
  2. 데이터시트 기반 설정은 직접 확인이 필수다. GPT는 종종 거짓 정보를 자신감 있게 말한다.
  3. 기술적 내용은 반드시 교차검증하자. GPT, Copilot 모두 보조 수단일 뿐이다.

AI는 훌륭한 보조자이지만, 기본은 여전히 개발자의 몫이라는 사실을 다시금 느낄 수 있었다.

728x90