STM32 와 ST-Link 연결이 안 될 경우 체크 사항

무슨 이유에서인지 STM32 와 ST-Link 연결이 안 될 경우 꼭 확인해봐야할 사항에 대해 총정리 해보도록 하겠습니다. 본문은 계속해서 생각나는대로 업데이트 할 예정입니다. 

 

흔히 보드가 새로 나오거나 개발환경이 달라질 때 ST-Link 디버거와 타겟(STM32)와 연결이 안되는 것을 종종 볼 수 있습니다. 이러한 여러가지 사례들을 알아보고 해결 방법을 모색해 보도록 하겠습니다. 

 

ST-Link PWR을 제외한 ST-Link들은 타겟 자체에 전원이 별도 공급되어야 합니다.

 

 

1.  타겟에 전원이 안들어 간 경우

타겟(STM32) VDD, GND 핀들을 각각 확인 해 보고 정격 전원이 인가되었는지 반드시 확인해 보세요.

 

2. 타겟의 전원이 ST-Link 전원 Detect Pin에 연결이 안된 경우

아래 이미지는 ST-Link V2의 커넥터 Pin map입니다. 여겨 Target VCC와 타겟보드의 VDD 연결을 해주지 않으면 STM32CubeProgrammer나 IDE에 "전원이 없거나 디바이스를 찾을 수 없다"라고 하면서 연결이 안됩니다.

 

3. SWD 핀, SWDIO SWCLK  연결이 잘못되어있는 경우

대부분 이 경우가 많은 것 같습니다. 그러나 쉽게 찾아 낼 수 있는 상황이라 추가적으로 적을 말이 없네요.

 

4. ST-Link 디버거가 죽은 경우

한번 의심할 수 있는 문제입니다. 보통 ST-Link안에 있는 MCU외부에 프로텍션이 없습니다. 즉, 정전기나 타겟 보드에서 넘어오는 노이즈에 쉽게 죽을 수 있습니다. 특히 손으로 자주 디버거 포트를 만지작 거릴 경우 타겟과 ST-Link 디버거 모두 죽을 수도 있습니다. 

 

5. SWD 라인들의 임피던스가 높은 경우

SWDIO, SWCLK 핀에  회로 보호 목적으로 Series 저항을 달곤 합니다. 그러나 이럴 경우 높은 저항때문에 파형이 뭉개질 수 있습니다. 특히 ST-Link의 디버거의 버전이 높을 수도록 더 높은 주파수를 사용하기 때문에 SWD에 임피던스를 낮추던가 아니면 통신속도를 임의로 조정하여 낮추는 방법으로 통신을 재개 할 수 있습니다.

 

6. Option byte (feat. RDP)

Optoin byte조정으로 RDP Level을 1이상으로 설정할 경우 Debug 장비는 Flash에 접근 할 수가 없습니다. 

 

7. Low-power mode 혹은 Application에서 Debug를 막은경우

Core가 Sleep이나 Stop에 들어가기 위해 대부분의 기능을 Disable합니다. Debug에도 많은 전력을 사용하기 때문에 저전력 모드에 들어가기 전에 Debug Disable을 합니다. 혹은 Application의 유출을 막기위해 Application 시작과 동시에 Debug를 막는 경우도 있습니다. 이 경우 Debug를 막은 것을 기억하지 못하고 디버거 연결에 애 먹는 경우가 종종있습니다.

 

8. Dual Core

Dual Core 제품은 각 코어 별로 Access port가 다르기 때문에 디버깅시에 알 맞는 Access port를 지정해 주어야 합니다. 보통 Programming manual에 Access port가 나와있으니 개발전에 참조하여야 합니다.


9. System supply 

STM32H7과 같은 고속 MCU나 STM32L4와 같은 저전력을 추구하는 MCU들은 Core에 공급하는 System supply와 VDD가 분리되어 있는 경우가 있습니다.

STM32H7

맨처음 System Reset이 후 시스템은 Default 설정을 System supply를 따르는데 위의 그림 중 오른쪽 그림처럼 동작합니다. 만약 전력소모를 줄이기 위해서 오른쪽처럼 외부 SMPS와 연결하도록 설계하였어도 System 초기화 후에 별도의 소프트웨어 처리가 없다면 왼쪽처럼 동작하게 됩니다. 따라서 Supply 회로에 맞는 소프트웨어 처리가 있어야 초기화 이후 정상 작동하게 됩니다. 만약 System supply 하드웨어설계와 소프트웨어 처리가 서로 다르게 되어있다면 System Core는 제대로 동작하지 않게 되고 Debug 포트의 연결은 끊어지게 됩니다.

 

10. SWIO, SWCLK 선 간 간섭

의외로 아래와 같은 점프 와이어들은 노이즈에 취약합니다. 만약 두 선을 적당한 거리로 떨어 뜨리지 않고 SWDIO, SWCLK로 연결한다면 인덕턱스로 인해 신호에 외곡이 생기고 연결이 끊어질 수 있습니다. 

 

 

 

<계속 업데이트  예정입니다>