강좌 & 팁
제가 사용하는 칩은 stm32f107 이라고 품명이 붙어 있습니다.
flash 256K memory 64K 로 작은 놈이죠.
마이컴 기준으로는 뭐... 널널한 사이즈이지만 좋은 칩만 쓰다보니... ㅠㅠ
핀은 64핀 밖에 되지 않지만 상당히 많은 기능을 갖고 있습니다.
당연히 핀들을 공유하는 기능이 있습니다.
저는 jtag 으로 펌웨어를 다운로드 하고 있고 spi3 번을 사용하려고 하고 있습니다.
alternate 기능으로 spi3 번을 선택하고 사용하려고 했습니다.
하지만 동작을 안하는 군요?
데이타 쉬트를 아무리 보아도 그 외에 다른 기능은 없습니다.
그러다가 찾은 건...
jtag 같은 경우 무조건 활성화 되어 있어야 하기 때문에 핀의 기본 기능으로 되어 있습니다
alternate 설정을 하여도 jtag 을 비활성화하지 않는 이상 무조건 jtag pin 으로 사용하게끔 되어 있네요 ㅠㅠ
그래서 해야 하는 것은 AF remap 에 있는 SWJ_CFG 레지스터를 제어하는 것입니다.
해당 레지스터는 아래와 같이 설명이 있습니다.
Bits 26:24 SWJ_CFG[2:0]: Serial wire JTAG configuration
These bits are write-only (when read, the value is undefined). They are used to configure the
SWJ and trace alternate function I/Os. The SWJ (Serial Wire JTAG) supports JTAG or SWD
access to the Cortex debug port. The default state after reset is SWJ ON without trace. This
allows JTAG or SW mode to be enabled by sending a specific sequence on the JTMS /
JTCK pin.
000: Full SWJ (JTAG-DP + SW-DP): Reset State
001: Full SWJ (JTAG-DP + SW-DP) but without JNTRST
010: JTAG-DP Disabled and SW-DP Enabled
100: JTAG-DP Disabled and SW-DP Disabled
Other combinations: no effect