내부 또는 외부 발진기


22

나는 항상 8MHz보다 높은 주파수에서 무언가를 실행할 필요가 없었기 때문에 사진이 가지고있는 내부 발진기를 사용합니다 (이는 사용하는 사진이 갈 수있는 가장 빠른 속도입니다). 8MHz 이상으로 외부 오실레이터를 사용해야하는 이유가 있습니까? 나에게 잘못되는 것이 하나 더있는 것처럼 보이지만 다른 사람들이하는 일에 관심이 있습니다.


" MCU에 내부 CPU가 있어도 때때로 외부 크리스털이 필요한 이유는 무엇입니까? "MCU에 내부 CPU가 있다는 사실은 내부 또는 외부 클록이 사용되는 이유와 거의 관련이 없습니다. 두 가지 다른 문제를 혼란 시키거나 혼동하고 있습니까?
gbulmer

그것은 완전히 이해하는 데 도움이 될 수 있습니다 microcontrollerslab.com/oscillator-types-microcontrollers을
빌랄 말리크에게

답변:


33

다른 사람들이 말했듯이, 정확한 주파수 및 주파수 안정성은 외부 세라믹 공진기 또는 수정을 사용하는 이유입니다. 공진기는 내부 RC 발진기보다 몇 배 더 정확하며 UART 통신에 충분합니다. CAN, USB 또는 이더넷과 같은 다른 유형의 통신을 수행하는 경우 크리스탈이 훨씬 정확하고 필요합니다.

외부 결정의 또 다른 이유는 주파수 선택입니다. 크리스털은 넓은 주파수 범위에 있지만 내부 발진기는 일반적으로 4x PLL을 선택할 수있는 하나의 주파수입니다. 일부 최신 24 비트 코어 PIC는 클럭 체인에 승수와 분배기가 모두 있으므로 단일 내부 발진기 주파수에서 다양한 주파수를 선택할 수 있습니다.

물론 통신 이외의 정확한 주파수 또는 타이밍을 본질적으로 요구하는 다양한 애플리케이션이 있습니다. 시간은 전자 장치에서 가장 저렴하게 가장 정확하게 측정 할 수있는 속성이므로 문제는 때때로 시간을 측정하거나 정확한 타이밍으로 펄스를 생성하는 것으로 변환됩니다.

그런 다음 다른 블록과 장기적으로 동기화해야하는 응용 프로그램이 있습니다. 실시간 클록의 기초로 사용되는 경우 1 % 발진기가 하루 14 분 이상 꺼집니다. 실시간을 알 필요없이 정확한 장기 시간이 필요할 수도 있습니다. 예를 들어, 몇 초 동안 데이터를 교환하기 위해 한 시간에 한 번씩 많은 저전력 장치를 깨운 다음 ​​다시 절전 모드로 전환하려고한다고 가정하십시오. 50ppm 크리스털 (매우 손쉬운)은 1 시간에 180ms를 넘지 않습니다. 그래도 1 % RC 발진기는 36 초간 꺼져있을 수 있습니다. 이는 시간당 2 초 동안 통신하는 데 필요한 장치에 상당한 시간과 전력 요구 사항을 추가합니다.


1
주제를 벗어난 것이지만, CANbus는 노드 간 클럭 주파수 변화를 처리 할 수있을 정도로 견고하게 설계되었다고 생각했습니다. 내가 오해하고 있습니까?
Stephen Collings

1
@Remiel : CAN은 약간의 클록 주파수 차이에도 불구하고 노드가 동기화 상태를 유지하도록 규정합니다. 노드는 여전히 합리적으로 가까이 있어야합니다. 대부분의 경우 기본적으로 각 노드에 적어도 세라믹 공진기가 필요합니다.
Olin Lathrop

24
  1. 정도. 내부 시계는 정확하지 않으며 노이즈의 영향을받을 수 있습니다.

  2. 온도 독립적 인 정밀도. 일반적인 오실레이터는 크게 다를 수 있습니다. 저온 또는 고온 환경에서 또는 온도가 크게 변하는 경우 특수 온도 보상 발진기가 필요할 수 있습니다.

  3. 속도. 내부 발진기가 IC의 최고 속도에 도달하지 못할 수 있습니다. 이를 위해서는 외부 것들이 필요할 수 있습니다.

  4. 전압. 내부 타이머의 속도는 작동중인 전압에 따라 달라질 수 있습니다.

  5. 여러 개의 시계가 필요합니다. 일부 애플리케이션은 오실레이터를 공유하려고합니다.

  6. 내부 시계를 쉽게 사용할 수없는 특수 용도. 내부 클럭을 나누는 것은 시간을 절약 할 수있는 저렴한 31kHz 워치 크리스털을 던지는 것보다 어려울 수 있습니다.

아두 이노가 사용하는 ATMEGA 328은 내 머리 꼭대기에서 최대 속도를 위해 5V의 외부 크리스털이 필요합니다. 릴리 패드 버전은 3.3V에서 제한되기 때문에 내부 발진기에서 8MHz로 실행됩니다. MSP430 Value Line 런치 패드는 3V에서 10MHZ, 2.5V에서 8로 제한됩니다.


10
정밀함의 예 : USB에는 정확한 클럭이 필요합니다. Microchips PIC18F2550은 내부적으로 모든 클럭 속도를 생성 할 수 있지만 USB의 정밀도는 너무 나쁩니다. 내가 시도했을 때 10-20 초마다 연결이 끊어졌습니다. 이것은 외부 오실레이터에서는 발생하지 않았습니다. 한편 PIC18F25k50은 클록을 USB 신호와 동기화 할 수 있으며 USB를 위해 외부 발진기가 더 이상 필요하지 않다.
sweber

1
내부적으로 만 8MHz 클록은 수정이 아니라 RC 발진기이므로 정확도가 떨어집니다.
Austin

@ 오스틴 고정 의견.
Passerby

13

외부 안정성으로 주파수 안정성이 높아집니다. 따라서 mcu 주파수에 실제로 의존하는 응용 프로그램이 있으면 외부 응용 프로그램을 사용해야 할 수도 있습니다.

그러나 가장 현대적인 mcu : s는 상당히 안정적인 내부 OSC를 가지고 있기 때문에 2 년 전에는 이것이 더 큰 문제라고 생각합니다. 또한 내부를 트리밍하고 온도 드리프트 등을 보상하는 방법이 점점 더 많이 있습니다.

다른 한편으로, 당신이 동기화되도록 다른 방법이 있습니다, 일부 국가에서는 전력망의 주파수 안정성이 50Hz ± 0.01Hz이고 스웨덴과 같은 다른 장소에는 실제로 ± 0.001Hz가 있으며 이것을 사용하여 프로젝트를 보았습니다. 동기화 된 것들. 그리고 당신은 더 이상 MCU 주파수에 의존하지 않으며 내부를 사용할 수 있습니다. 그러나 이것은 약간의 주제입니다 :)


3
이러한 주요 주파수 수치는 장기 안정성입니다. 몇 주 또는 몇 달에 걸쳐 시간을 정확하게 유지하는 것이 좋지만 짧은 시간 (시간)에 걸쳐 심각한 편차가 발생할 수 있습니다. 그러나 싼 디지털 시계로 시간을 조정할 필요는 거의 없습니다.
stevenvh 2016 년

@stevenvh 좋은 점은 장기적인 안정성을 확인하는 데 사용할 수있는 다른 출처가 있다는 점도 참고하십시오. gps와 gsm 시스템은 모두 매우 멋진 시계를 가지고 있지만 사용하기가 더 복잡합니다.
Johan

3
필요한 다른 많은 응용 프로그램이 있지만 정확한 시간 기반 직렬 통신없이 많은 문제를 발생시키는 응용 프로그램이 있습니다.
JustJeff

외부 석영 크리스털로 더 높지 않은 주파수 안정성을 알지 못합니다 . 실리콘 발진기로 0.1 % 미만의 정확도를 얻지 못할 것입니다.
Jason S

1
@Johan - DCF77 / WWVB은 GPS 또는 GSM 및 (1Hz의 하트 비트)와 작업에보다 쉽게 많은 정확한 같다
stevenvh

2

주파수 안정성은 특히 고속 직렬 통신의 경우 가장 중요합니다. 그러나 클럭 디바이더가 제공하는 옵션이 제한되어 있기 때문에 정확한 보오율을 얻기 위해 이상한 주파수에서 수정이 필요할 때가 있습니다.


1

실제로 1 %가 UART에 충분 하지 않은 시나리오 를 보았습니다.

Teensy ++ v1.0 마이크로 컨트롤러 개발 보드에 대해 들어 본 사람이 있다면 매우 민감한 UART가 있습니다. 호스트 보드를 115200으로 설정했으며 115200으로 설정했으며 오랫동안 데이터를 올바르게 읽지 못한 이유를 알 수 없었습니다. 내 호스트가 114300 보드에 가깝게 전송하고 있음이 밝혀졌습니다. (115200-114300) / 115200 = ~ 0.9 % 오류. 두 개의 다른 MCU로 시도했지만 정상적으로 작동했습니다.

요점은 애플리케이션에 관계없이 클럭 주파수의 정확도가 더 높은 이점이 있다면 칩에 필요한 구동 회로가없는 경우 외부 공진기, 크리스털 또는 발진기를 사용해야합니다.

추신 : 나는 누군가가 UART 하드웨어에서 어떤 저수준 디자인을 선택했는지에 대한 통찰력을 가지고 있는지 궁금합니다.


UART의 기본 요구 사항은 수신기가 유효 할 때마다 각 비트를 샘플링하는 것입니다. 이상적으로, 수신기는 시작 비트가 도달 한 정확한 순간을 알아 차리고 1.5 비트 후 1.5 비트, 이후 8.5, 3.5 비트 후까지 2.5, 3.5 등의 데이터를 정확하게 샘플링합니다. 실제로, 수신기가 시작 펄스를 감지하면 일반적으로 약간의 기울기가 있으며 그 후에 더 많은 기울기가있을 수 있습니다. 예를 들어, 초당 8,192 개의 명령을 실행하는 프로세서를 사용하여 2400 보드를 수신하려고 시도 할 수 있습니다.
supercat

전송 타이밍이 완벽하게 깨끗하다면 샘플링이 정확히 417usec 간격으로 발생하지 않습니다. 대신 366us 간격과 488us 간격으로 발생합니다. 수신기가 "피키 (picky)"한 경우, 그 의미는 종종 데이터를 예상보다 훨씬 더 일찍 또는 나중에 샘플링하지만 이상적인 송신기가 예상 데이터 비트를 출력 할 때입니다.
supercat

@supercat 왜 이후에 샘플을 샘플링하도록 설계했을까요? 설명 한 것처럼 0.5에서 샘플링하는 것이 항상 가장 좋은 것처럼 보입니다. 몇 년 전에 UART 소프트웨어를 구현 한 방법입니다. 다른 방법으로는 그렇게하지 않았습니다. 그것은 단순히 송신기에서 가장 큰 오차 한계를 허용합니다.
NickHalden

@ JGord : 보드 속도보다 훨씬 빠른 클럭으로 샘플링을 제어하는 ​​경우 상황은 훌륭하지만 항상 그런 것은 아닙니다. 예를 들어 1.0MHz에서 실행되고 UART가없는 6502를 사용하여 115,200 보드를 수신하려고한다고 가정하십시오. 시작 비트를 기다리는 루프는 7us가 걸리고 폴링 기회는 1us 간격으로 예약됩니다. 6502가 비트를 폴링 할 때 8us의 불확실성이 있지만 비트가 8.6us이므로 데이터를 성공적으로 수신 할 수 있습니다.
supercat

전송 속도는 정확하고 상승 및 하강 시간은 균일하고 대칭 적이며 다른 지터는 없었습니다. Teensy 보드에 대해서는 잘 모르겠지만 소프트웨어 UART를 사용하여 컨트롤러를 정상적인 능력 이상으로 밀어 넣는 경우 놀라지 않을 것입니다.
supercat

1

외부 수정 크리스털 발진기는 내부 클럭보다 정확하며 정확한 타이밍이 필요할 때 사용해야합니다. 때때로 디자이너들은 돈을 절약하기 위해 내부 돈을 사용합니다.


2
이것은 기존 답변에 아무것도 추가하지 않는 것 같습니다.
Adam Haun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.