Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

임베디드 하드웨어/기타 회로 설계

STM32F407 32.768kHz Crystal 선정 및 디버그!

방피터 2023. 3. 16. 00:53

보통은 큰 문제가 안돼.

STM의 경우 메인 크리스탈은 any vendor(아무거나) 8Mhz 때려박고 대강 18pf 정도 달아주면 왠만하면 동작해.

stm32 32.768 크리스탈 회로(?)

그런데 문제는 32.768khz....

RTC용 크리스탈인데;;;

이게 잘 동작하지 않는 경우를 한 두어번 본거 같은데

첫 번째는 십수년 전, stm32f103!

이 때는 해결을 못해서 클럭을 내부 RC 오실레이터로 몰래 변경하고 모른척 했어 ㅋㅋㅋㅋ

stm32 mcu clock tree

stm32 mcu의 clock tree에서 RTC 부분을 보면

mux를 통해서 3개 중 하나를 RTC 클럭 소스로 사용할 수 있게 되어 있어.

HSE를 분주한 것,

외부 32.768khz 클럭 소스,

내부 32khz RC 오실레이터

이렇게 3 가지인데 RTC를 사용하는 Application에서는 1초를 정확하게 맞추기 위해서

보통 32.768khz 짜리 외부 클럭 소스를 사용해.

내부 RC 오실레이터는 오차가 크고 온도에 따른 편차도 있어서 잘 사용하지 않아 ㅋㅋ

나는 몰래 썼지만 ㅋ

 

그리고 바로 지금 내 인생에서 두 번째로 32.768khz가 동작하지 않고 있어 ㅋㅋㅋㅋㅋㅋ

아주 그냥 환장하겠어.

STM32F407VGT6를 사용하고 있는데 이 RTC 크리스탈이이 동작했다 안했다 하네..

아주 희망 고문이 절어

😭😭😭

크리스탈에 붙는 로드캡이랑 크리스탈(CM315DZFT)을 몇번이나 교체해봐도 똑같고 ㅠㅠ

또 내부 RC 오실레이터로 확 돌릴까? ㅋㅋ

아냐 ㅋㅋ

이번에는 제대로 해보자구.

진짜 제대로 정석으로 접근해 볼거야! ㅋ

먼저 어떤 기준으로 크리스탈을 선택해야 하는지 알아야겠지?

이거에 대해서 잘 정리해놓은 stm 문서가 있어. 👇👇

https://www.st.com/resource/en/application_note/cd00221665-oscillator-design-guide-for-stm8afals-stm32-mcus-and-mpus-stmicroelectronics.pdf

 

이 문서를 다 읽기가 좀 부담스러울 수 있으니까!

원리를 요약하자면!

크리스탈은 일종의 주파수 필터야.

32.768khz 짜리 크리스탈은 32.768khz를 가장 잘 통과시키는 거지.

그리고 거기에 연결된 MCU 내부에는 증폭기가 있어.

즉 32.768khz 신호를 계속 증폭해서 그걸 RTC 클럭소스로 사용하는 거야.

크리스탈 신호는 요런 느낌으로 증폭됨.

그러니까 이 클럭 신호가 잘 증폭될 수 있도록 크리스탈을 선정해야 한다는 거지.

이를 위한 증폭률 "gain margin"이 5가 넘어야 한다고 위 문서에 나와 있는데 그 공식이

👉 gain margin = Gm / Gmcrit

 

여기서 Gm은 stm32f407 데이터 시트에 나와 있고,

min 2.8uA/V, max 0.56uA/V

stm32f407 datasheet - LSE

Gmcrit는 아래 공식으로부터 구할 수 있어.👇👇

이 공식에 필요한 것들(ESR, C0, CL)은

전부 크리스탈 데이터시트에서 구할 수 있으니까 너무 걱정마 ㅋㅋ

내가 사용하고 있는 크리스탈인 CM315DZFT를 살펴보면

CL = 12.5pf, C0 = 0.95pf, ESR = 70Kohm 이야.

CM315DZFT Datasheet

자! 계산해보면 Gmcrit는 2.147uA/V 이고 MCU Gm은 0.56uA이니까

Gain margin = 0.56 / 2.147 = 0.26( < 5 )

망했네 ㅋㅋㅋㅋ

Gm max 값으로 계산해도 1 겨우 넘는구만.

Gain margin = 2.8/2.147 = 1.3 ( < 5 )

이러니 크리스탈이 돌다 말다 했겠지...

한숨 나오네...

암튼 이 크리스탈은 stm32f407용 RTC에 사용 못한다는 결론!

내일 교체해야지 ㅠㅠ

못쓰는 크리스탈이긴하지만 그래도 로드캡 용량이나 구해보자구.

공식은 아래 👇👇

정리하면

(CL - CS)*2 = CL1 = CL2,

여기서 CL = 12.5pf이고,

Cs는 stray cap이라고 해서

pcb line, osc pad 등 케페시턴스를 이야기 하는 건데

AN2867 문서에서 예제로 5pf를 잡았네?

나도 똑같이 5pf 잡으면 

(12.5pf-5pf) * 2 = 15pf

CM315DZFT라는 크리스탈이 잘 동작했다면

15pf를 로드캡으로 사용하면 되겠네.


이것 저것 복잡한 게 싫다!

이러면 AN2867에 나와 있는 문서 30페이지부터 추천하는 crystal 목록이 나열되어 있어.

👇👇

AN2867 문서 - 추천 크리스탈!

이 중에서 자신의 MCU 시리즈에 맞는 제품을 사용하도록하자.

특히 stm32f40x 시리즈는 gmcrit가 굉장히 작아야 하네;;;;;

gmcrit이 0.5 이하!

AN2867 문서에는 이거 말고도 PCB layout 가이드 같은 것들도 나와 있고

stm 외 다른 IC의 크리스탈 선택에도 큰 도움이 되니까

하드웨어 엔지니어들은 어렵더라도 꼭 한번 읽어보자 ㅋㅋ

공부 안하면 밑천 금방 들어나 ㅋㅋ

그럼 다들 화이팅해! 안녕!


ㅎㅎㅎ 이대로 멈출순 없지!

진짜 저 아래 👇👇 크리스탈 사서 테스트해봤어!

ABS07-LR-32.768kHz-6!

추천 크리스탈로 테스트 해봄

gmcrit도 0.4517! 우수! -> 납땜! 뙇! -> 동작 뙇! ㅎㅎㅎㅎ

그런데... 한 두시간 돌다가 멈추네;;;;

진짜 환장하겠어!!

이제 남은 방법이 몇 개 없어 ㅋㅋ 우선!

Eratta sheet!

그냥 쉽게 말하면 제품 하자 리스트야 ㅋㅋ

세상에 완벽한 건 없다네~

stm32f407 errata sheet LSE

여기에 보면 PC13번이 LSE(32.768khz)를 방해한다는 내용이 있어.

그래서 LSE를 사용하면 PC13은 못쓴다 하네.

그리고 work around로 LSE를 bypass mode로 설정하라고도 되어 있구만!!

bypass 모드로 설정해도 크리스탈이 동작하나보네?

bypass mode로 설정하란다.
PC13을 Output low로 설정해버림다!

그리고 아래는 stm32f1 시리즈 errata sheet인데 이놈도 LSE가 지랄맞;;;;

errata sheet가 대놓고 가혹한 환경에서 LSE가 잘 동작안한데;;;

암튼 work around로 소개한 방법이 16M ~ 22M짜리 피드백 저항을 추가로 다는 거야. ㅠㅠ

저렇게 큰 저항 어디 있을까?;;;

피드백 저항을 추가로 달으란다!
요렇게 말이지 ㅋ(녹색이가 피드백 저항)

자! 우선 크리스탈은 추천 제품으로 변경했고! 이제

1. LSE bypass mode 설정!

2. PC13 GND로 박아버리고!

3. 16 ~ 22M옴 짜리 피드백 저항 달엇!

이렇게 해도 안되면... 남은건 PCB랑 내 납땜 실력이지! ㅋㅋ

지금은 너무 늦어서 못해보고 ㅋ

내일 테스트 해서 알려줌 ㅋㅋ~안녕!


ㅇㅇ ABS07-LR-32.768kHz-6! 이걸로 양산 치니까 잘됨 ㅇㅇ

내 납땜실력 개판인걸로..

쥬루룩

반응형

'임베디드 하드웨어 > 기타 회로 설계' 카테고리의 다른 글

[회로 설계] ARTIX 7 회로 설계  (0) 2023.10.25
TVS  (1) 2023.03.07
220V AC 장비 파워 제어  (2) 2022.06.05
고온 측정 회로 / 열전대 회로  (0) 2022.06.02
AC-DC 컨버터  (0) 2022.05.19