inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트

STM32F103 schematic - Debugging pin 설계

JTAG신호를 받는 핀 선택 이유에 대한 질문이 있습니다.

4

tjwns2900

작성한 질문수 2

0

현재 JTMS는 PB14와 12, NTRST는 PB13, JTCLK은 PB0와 연결을 했는데 왜 그렇게 연결한 것인지 다른 곳에는 연결할 수 없는 것인지가 궁금하여 질문 남깁니다.

MCU stm32 hardware artwork kicad orcad

답변 2

0

회로설계 멘토 삼코치

안녕하세요, 답변 남겨드립니다.

질문에 적어주신 PB14, PB12, PB13, PB0가 실제 STM32F103의 GPIO 포트 번호를 의미한다면, 해당 연결은 STM32F103의 기본 JTAG 핀 구성과 맞지 않습니다. STM32F103의 JTAG 핀은 임의의 GPIO로 선택하는 구조가 아니라 MCU 내부의 디버그 회로에 직접 연결된 전용 핀으로 고정되어 있습니다.

STM32F103에서 JTMS는 PA13, JTCK는 PA14, JTDI는 PA15, JTDO는 PB3, NJTRST는 PB4에 연결해야 합니다. SWD 방식으로 디버깅할 때도 SWDIO는 PA13, SWCLK는 PA14를 사용합니다. 따라서 JTMS를 PB14나 PB12에 연결하거나 JTCK를 PB0에 연결하면, 핀 이름을 단순히 net label로 붙이는 것만으로는 디버거 신호가 MCU 내부의 JTAG 회로까지 전달되지 않습니다.

강의 회로에서 PB14, PB12, PB13, PB0로 보였다면 먼저 MCU 포트 번호인지, 디버거 커넥터의 핀 번호인지 구분해서 확인해야 합니다. 예를 들어 회로도에서 JTAG 커넥터의 12번, 13번, 14번 핀을 의미하는 표기라면 MCU의 PB12, PB13, PB14와는 전혀 다른 의미입니다. 커넥터 핀 번호와 MCU GPIO 이름이 함께 표시되면서 혼동했을 가능성이 있습니다. 반대로 회로도상 MCU 핀이 실제로 PB14, PB12, PB13, PB0에 연결되어 있다면 수정이 필요합니다.

STM32F103에서 디버그 핀을 다른 GPIO로 완전히 옮기는 기능은 제공되지 않습니다. AFIO 설정을 통해 전체 JTAG를 사용하거나, JTAG를 비활성화하고 SWD만 유지하는 선택은 가능합니다. 이 설정을 사용하면 PA15, PB3, PB4를 일반 GPIO로 다시 사용할 수 있지만, SWDIO인 PA13과 SWCLK인 PA14는 계속 디버깅용으로 사용해야 합니다. 즉, 디버그 기능을 줄여서 일부 핀을 확보할 수는 있어도 JTMS나 JTCK를 PB0, PB12, PB14 같은 임의의 핀으로 재배치할 수는 없습니다.

실무에서는 전체 JTAG보다 SWD 방식을 더 많이 사용합니다. 전체 JTAG는 JTMS, JTCK, JTDI, JTDO, NJTRST까지 최소 5개의 신호가 필요하지만, SWD는 SWDIO와 SWCLK 두 개의 디버그 신호만 있으면 됩니다. 여기에 NRST, 3.3 V 기준전압, GND를 포함하면 안정적으로 다운로드와 디버깅이 가능합니다. GPIO가 부족한 STM32F103 보드에서는 SWD를 사용해 PA15, PB3, PB4 세 핀을 다른 기능으로 확보하는 편이 설계 효율이 좋습니다.

NJTRST와 MCU의 NRST도 구분해야 합니다. NJTRST는 JTAG 내부 상태머신을 초기화하는 신호이고, NRST는 MCU 전체를 리셋하는 신호입니다. 일반적인 SWD 디버깅에서는 NJTRST가 없어도 되지만 NRST는 커넥터에 연결해 두는 것이 좋습니다. 펌웨어가 저전력 모드에 들어가거나 디버그 핀 설정을 잘못 변경했을 때, 디버거가 reset 상태에서 MCU에 접속할 수 있기 때문입니다.

제가 보드를 설계한다면 PA13은 SWDIO, PA14는 SWCLK, PB3는 선택적으로 SWO에 연결하고 NRST, 3.3 V, GND를 포함한 10핀 Cortex Debug 커넥터 또는 간소화된 6핀 커넥터를 사용합니다. SWDIO와 SWCLK에는 필요하면 MCU 가까이에 22~47 ohm 직렬저항을 배치할 수 있도록 옵션을 남겨두고, 배선 길이는 가능하면 50 mm 이하로 짧게 유지합니다. 디버거 속도를 1~4 MHz 정도로 사용할 일반적인 보드라면 이 정도 구성이 신호 무결성과 유지보수 측면에서 충분합니다.

정리하면 STM32F103의 디버그 핀은 기능이 고정되어 있으므로 데이터시트에 지정된 PA13, PA14, PA15, PB3, PB4를 사용해야 합니다. 질문에 적어주신 번호가 MCU의 PB 포트를 의미한다면 다른 곳에 연결한 이유가 있는 것이 아니라, 회로도 표기나 연결을 다시 확인해야 하는 상황으로 보입니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

tjwns2900님, 질문 주셔서 감사합니다. JTAG 신호를 특정 핀으로 연결하신 이유에 대해 궁금해하셨습니다. JTAG 신호 핀 선택에는 여러 가지 요소가 고려됩니다. 여러 게시물에서 논의된 바와 같이, 핀 선택은 주로 하드웨어 설계의 실용성, 디버깅 용이성, 그리고 기존 시스템의 레이아웃에 따라서 이루어질 수 있습니다. 다음은 그 이유에 대한 몇 가지 설명입니다:

  1. 하드웨어 설계의 일관성: 디버깅 시 연결 안정성을 위해 기존 하드웨어 설계와 일관성을 유지하는 것이 중요합니다. 이는 특정 핀 배치가 디버깅 효율을 극대화하기 위해 계획적으로 배치되었을 가능성이 있음을 의미합니다.

  2. 기능적 요구사항: 특정 핀은 하드웨어의 다른 기능(예: SPI, USART)도 지원할 수 있지만, JTAG 인터페이스의 정의에 더 적합한 핀으로 선택되었을 수 있습니다. 이는 신호 라우팅의 용이성과 소프트웨어적인 지원의 적합성 때문일 수 있습니다.

  3. 레이아웃 고려사항: PCB 설계 시 심각한 신호 간섭을 피하기 위해 신호 라우팅을 최적화하는 것이 필요합니다.

추가로, 다음 유사 질문에서 연결 방식에 대한 상세한 설명과 설계 이유를 명시한 답변을 확인하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

oscillator에 30p를 쓰는 이유가 궁금합니다.

0

7

2

pcb 제작 주문 질문입니다.

0

42

2

49. DAC Schematic 설계하기 강의에서 질문있습니다

0

60

2

Kicad Global Label shape 질문

0

53

2

과제 3. Power budget 관련 질문

0

55

2

STM32F103 Schematic 설계 관련 질문

0

55

1

디버거 관련하여 질문있습니다.

0

45

2

Biasing 저항

0

50

2

CH340 전원 연결

0

55

1

MOSFET pull down 저항의 필요성

0

65

2

21번 INT pin 풀업 저항

0

88

2

전력 산출하는데 이해가 안가요?

0

69

2

수강연장

0

69

2

강의수강 만료일 연장 신청

0

73

2

강의 질문

0

109

2

RJ45 library 누락

0

86

2

강의 만료 확인 요청

0

81

2

JTAG 통신 질문

0

93

1

GND 오류

0

101

2

프로젝트 주제

0

91

1

45강 UART, TTL 질문

0

100

1

발열에 의한 LDO의 드롭아웃 전압 상승

0

126

2

I2C 통신 방식

0

168

2

라우팅 질문

0

112

2