나는 항상 8MHz보다 높은 주파수에서 무언가를 실행할 필요가 없었기 때문에 사진이 가지고있는 내부 발진기를 사용합니다 (이는 사용하는 사진이 갈 수있는 가장 빠른 속도입니다). 8MHz 이상으로 외부 오실레이터를 사용해야하는 이유가 있습니까? 나에게 잘못되는 것이 하나 더있는 것처럼 보이지만 다른 사람들이하는 일에 관심이 있습니다.
나는 항상 8MHz보다 높은 주파수에서 무언가를 실행할 필요가 없었기 때문에 사진이 가지고있는 내부 발진기를 사용합니다 (이는 사용하는 사진이 갈 수있는 가장 빠른 속도입니다). 8MHz 이상으로 외부 오실레이터를 사용해야하는 이유가 있습니까? 나에게 잘못되는 것이 하나 더있는 것처럼 보이지만 다른 사람들이하는 일에 관심이 있습니다.
답변:
다른 사람들이 말했듯이, 정확한 주파수 및 주파수 안정성은 외부 세라믹 공진기 또는 수정을 사용하는 이유입니다. 공진기는 내부 RC 발진기보다 몇 배 더 정확하며 UART 통신에 충분합니다. CAN, USB 또는 이더넷과 같은 다른 유형의 통신을 수행하는 경우 크리스탈이 훨씬 정확하고 필요합니다.
외부 결정의 또 다른 이유는 주파수 선택입니다. 크리스털은 넓은 주파수 범위에 있지만 내부 발진기는 일반적으로 4x PLL을 선택할 수있는 하나의 주파수입니다. 일부 최신 24 비트 코어 PIC는 클럭 체인에 승수와 분배기가 모두 있으므로 단일 내부 발진기 주파수에서 다양한 주파수를 선택할 수 있습니다.
물론 통신 이외의 정확한 주파수 또는 타이밍을 본질적으로 요구하는 다양한 애플리케이션이 있습니다. 시간은 전자 장치에서 가장 저렴하게 가장 정확하게 측정 할 수있는 속성이므로 문제는 때때로 시간을 측정하거나 정확한 타이밍으로 펄스를 생성하는 것으로 변환됩니다.
그런 다음 다른 블록과 장기적으로 동기화해야하는 응용 프로그램이 있습니다. 실시간 클록의 기초로 사용되는 경우 1 % 발진기가 하루 14 분 이상 꺼집니다. 실시간을 알 필요없이 정확한 장기 시간이 필요할 수도 있습니다. 예를 들어, 몇 초 동안 데이터를 교환하기 위해 한 시간에 한 번씩 많은 저전력 장치를 깨운 다음 다시 절전 모드로 전환하려고한다고 가정하십시오. 50ppm 크리스털 (매우 손쉬운)은 1 시간에 180ms를 넘지 않습니다. 그래도 1 % RC 발진기는 36 초간 꺼져있을 수 있습니다. 이는 시간당 2 초 동안 통신하는 데 필요한 장치에 상당한 시간과 전력 요구 사항을 추가합니다.
정도. 내부 시계는 정확하지 않으며 노이즈의 영향을받을 수 있습니다.
온도 독립적 인 정밀도. 일반적인 오실레이터는 크게 다를 수 있습니다. 저온 또는 고온 환경에서 또는 온도가 크게 변하는 경우 특수 온도 보상 발진기가 필요할 수 있습니다.
속도. 내부 발진기가 IC의 최고 속도에 도달하지 못할 수 있습니다. 이를 위해서는 외부 것들이 필요할 수 있습니다.
전압. 내부 타이머의 속도는 작동중인 전압에 따라 달라질 수 있습니다.
여러 개의 시계가 필요합니다. 일부 애플리케이션은 오실레이터를 공유하려고합니다.
내부 시계를 쉽게 사용할 수없는 특수 용도. 내부 클럭을 나누는 것은 시간을 절약 할 수있는 저렴한 31kHz 워치 크리스털을 던지는 것보다 어려울 수 있습니다.
아두 이노가 사용하는 ATMEGA 328은 내 머리 꼭대기에서 최대 속도를 위해 5V의 외부 크리스털이 필요합니다. 릴리 패드 버전은 3.3V에서 제한되기 때문에 내부 발진기에서 8MHz로 실행됩니다. MSP430 Value Line 런치 패드는 3V에서 10MHZ, 2.5V에서 8로 제한됩니다.
외부 안정성으로 주파수 안정성이 높아집니다. 따라서 mcu 주파수에 실제로 의존하는 응용 프로그램이 있으면 외부 응용 프로그램을 사용해야 할 수도 있습니다.
그러나 가장 현대적인 mcu : s는 상당히 안정적인 내부 OSC를 가지고 있기 때문에 2 년 전에는 이것이 더 큰 문제라고 생각합니다. 또한 내부를 트리밍하고 온도 드리프트 등을 보상하는 방법이 점점 더 많이 있습니다.
다른 한편으로, 당신이 동기화되도록 다른 방법이 있습니다, 일부 국가에서는 전력망의 주파수 안정성이 50Hz ± 0.01Hz이고 스웨덴과 같은 다른 장소에는 실제로 ± 0.001Hz가 있으며 이것을 사용하여 프로젝트를 보았습니다. 동기화 된 것들. 그리고 당신은 더 이상 MCU 주파수에 의존하지 않으며 내부를 사용할 수 있습니다. 그러나 이것은 약간의 주제입니다 :)
실제로 1 %가 UART에 충분 하지 않은 시나리오 를 보았습니다.
Teensy ++ v1.0 마이크로 컨트롤러 개발 보드에 대해 들어 본 사람이 있다면 매우 민감한 UART가 있습니다. 호스트 보드를 115200으로 설정했으며 115200으로 설정했으며 오랫동안 데이터를 올바르게 읽지 못한 이유를 알 수 없었습니다. 내 호스트가 114300 보드에 가깝게 전송하고 있음이 밝혀졌습니다. (115200-114300) / 115200 = ~ 0.9 % 오류. 두 개의 다른 MCU로 시도했지만 정상적으로 작동했습니다.
요점은 애플리케이션에 관계없이 클럭 주파수의 정확도가 더 높은 이점이 있다면 칩에 필요한 구동 회로가없는 경우 외부 공진기, 크리스털 또는 발진기를 사용해야합니다.
추신 : 나는 누군가가 UART 하드웨어에서 어떤 저수준 디자인을 선택했는지에 대한 통찰력을 가지고 있는지 궁금합니다.
외부 수정 크리스털 발진기는 내부 클럭보다 정확하며 정확한 타이밍이 필요할 때 사용해야합니다. 때때로 디자이너들은 돈을 절약하기 위해 내부 돈을 사용합니다.