Dao động bên trong hoặc bên ngoài


22

Tôi luôn sử dụng bộ tạo dao động bên trong mà các bức ảnh có vì tôi chưa bao giờ thấy cần phải chạy bất cứ thứ gì ở tần số cao hơn 8 MHz (đây là bức ảnh nhanh nhất tôi sử dụng có xu hướng có thể đi được). Có bất kỳ lý do nào, ngoài việc vượt quá 8 MHz, điều đó có nghĩa là tôi nên sử dụng bộ tạo dao động ngoài? Nó chỉ có vẻ như là một điều sai trái với tôi nhưng tôi muốn nghe những gì người khác làm.


" Tại sao đôi khi cần một tinh thể bên ngoài, mặc dù MCU có CPU bên trong? " Thực tế là MCU có CPU bên trong hầu như không liên quan gì đến lý do tại sao đồng hồ bên trong hoặc bên ngoài được sử dụng. Bạn đang nhầm lẫn / nhầm lẫn hai vấn đề khác nhau?
xe cứu thương

Nó có thể giúp bạn hiểu hoàn toàn vi điều
khiểnlab.com/oscillator-types-

Câu trả lời:


33

Như những người khác đã nói, tần số chính xác và tần số ổn định là lý do để sử dụng bộ cộng hưởng gốm bên ngoài hoặc tinh thể. Bộ cộng hưởng chính xác hơn nhiều lần so với bộ tạo dao động RC bên trong và đủ tốt để giao tiếp UART. Một tinh thể chính xác hơn nhiều và cần thiết nếu bạn đang thực hiện một số loại giao tiếp khác như CAN, USB hoặc ethernet.

Một lý do khác cho một tinh thể bên ngoài là sự lựa chọn tần số. Các tinh thể có nhiều dải tần số trong khi bộ tạo dao động bên trong thường là một tần số với khả năng lựa chọn 4x PLL được kích hoạt. Một số PIC lõi 24 bit mới hơn có cả số nhân và bộ chia trong chuỗi đồng hồ để bạn có thể đạt được nhiều lựa chọn tần số từ tần số dao động bên trong.

Tất nhiên có nhiều ứng dụng khác nhau vốn yêu cầu tần số chính xác hoặc thời gian khác với truyền thông. Thời gian là tài sản trong thiết bị điện tử mà chúng ta có thể đo chính xác nhất với giá rẻ, vì vậy đôi khi vấn đề được chuyển thành một trong những thời gian đo hoặc tạo ra các xung với thời gian chính xác.

Sau đó, có những ứng dụng yêu cầu một số đồng bộ hóa dài hạn với các khối khác. Một bộ dao động 1% sẽ tắt hơn 14 phút mỗi ngày nếu được sử dụng làm cơ sở cho đồng hồ thời gian thực. Thời gian dài chính xác cũng có thể cần thiết mà không cần phải biết thời gian thực. Ví dụ: giả sử bạn muốn một loạt các thiết bị năng lượng thấp thức dậy mỗi giờ một lần để trao đổi dữ liệu trong vài giây và sau đó quay trở lại giấc ngủ. Một tinh thể 50ppm (rất dễ lấy) sẽ tắt không quá 180ms trong một giờ. Một bộ dao động RC 1% có thể tắt trong 36 giây. Điều đó sẽ thêm các yêu cầu về thời gian và do đó đáng kể cho các thiết bị chỉ cần liên lạc trong vài giây mỗi giờ.


1
Không có chủ đề, nhưng tôi nghĩ CANbus được thiết kế đủ mạnh để xử lý các biến thể về tần số xung nhịp giữa các nút. Tôi có hiểu lầm không?
Stephen Collings

1
@Remiel: CAN có các quy định cho các nút đồng bộ mặc dù có một số khác biệt về tần số xung nhịp. Các nút vẫn cần phải được đóng hợp lý. Trong hầu hết các trường hợp, về cơ bản bạn cần ít nhất một bộ cộng hưởng gốm trong mỗi nút.
Olin Lathrop

24
  1. Độ chính xác. Đồng hồ bên trong không chính xác, có thể bị ảnh hưởng bởi tiếng ồn.

  2. Nhiệt độ chính xác độc lập. Dao động điển hình có thể thay đổi dữ dội. Bộ tạo dao động bù nhiệt độ đặc biệt có thể cần thiết trong các ứng dụng nhiệt độ thấp hoặc cao, hoặc nếu nhiệt độ thay đổi đột ngột.

  3. Tốc độ. Bộ tạo dao động bên trong có thể không đạt tốc độ cao nhất của IC. Những cái bên ngoài có thể cần thiết cho điều đó.

  4. Vôn. Tốc độ của bộ hẹn giờ bên trong có thể phụ thuộc vào điện áp mà nó đang được chạy.

  5. Nhiều đồng hồ là cần thiết. Một số ứng dụng muốn chia sẻ một bộ dao động.

  6. Các ứng dụng đặc biệt trong đó đồng hồ bên trong có thể không dễ sử dụng. Chia đồng hồ bên trong có thể khó hơn ném một chiếc đồng hồ 31 kHz giá rẻ vào nó, để giữ thời gian cho các ứng dụng.

Ngoài đỉnh đầu của tôi, ATMEGA 328 mà arduino sử dụng đòi hỏi một tinh thể bên ngoài ở mức 5V cho tốc độ tối đa của nó. Phiên bản pad lily chạy ở 8 MHz, trên bộ tạo dao động bên trong vì nó bị giới hạn ở mức 3,3v. Bảng khởi chạy Dòng giá trị MSP430 được giới hạn ở 10 MHZ ở 3V, 8 ở 2.5V.


10
Một ví dụ cho độ chính xác: USB cần một đồng hồ chính xác. Microchips PIC18F2550 có thể tạo ra bất kỳ tốc độ xung nhịp nào bên trong, nhưng độ chính xác của nó quá tệ cho USB. Khi tôi thử nó, cứ sau 10-20 giây lại có một ngắt kết nối. Điều này đã không xảy ra với một bộ dao động bên ngoài. Trong khi đó, họ có PIC18F25k50, có thể đồng bộ hóa đồng hồ của nó với tín hiệu USB và không yêu cầu bộ tạo dao động ngoài cho USB nữa.
sweber

1
Chỉ cần là pedantic, đồng hồ 8 MHz bên trong là một bộ dao động RC, không phải là một tinh thể, do đó độ chính xác kém.
Austin

@austin bình luận cố định.
Người qua đường

13

Độ ổn định tần số sẽ cao hơn với một bên ngoài. Vì vậy, nếu bạn có một ứng dụng thực sự phụ thuộc vào freq mcu, thì bạn có thể cần phải sử dụng một ứng dụng bên ngoài.

Nhưng hầu hết các mcu hiện đại: s có một osc nội bộ khá ổn định, do đó tôi nghĩ đây từng là một câu hỏi lớn hơn vài năm trước. Ngoài ra, ngày càng có nhiều cách để cắt bớt phần bên trong và bù cho sự trôi dạt nhiệt độ (v.v.).

Mặt khác, có một số cách khác để đảm bảo rằng bạn đã đồng bộ hóa, ở một số quốc gia, độ ổn định freq trong mạng điện là 50Hz ± 0,01Hz và những nơi khác như Thụy Điển thực sự có ± 0,001Hz và tôi đã thấy các dự án sử dụng điều này để giữ mọi thứ đồng bộ. Và sau đó bạn không còn phụ thuộc vào freq mcu và bạn có thể sử dụng nội bộ. Nhưng đây là một chút chủ đề :)


3
Lưu ý rằng các số liệu tần số chính là ổn định lâu dài . Bạn có thể giữ thời gian chính xác trong nhiều tuần hoặc nhiều tháng, nhưng trong một khoảng thời gian ngắn (vài giờ) bạn có thể gặp phải những sai lệch nghiêm trọng. Tuy nhiên, bạn sẽ hầu như không phải điều chỉnh thời gian trên đồng hồ kỹ thuật số el cheapo.
stevenvh

@stevenvh điểm tốt, cũng lưu ý rằng có những nguồn khác có thể được sử dụng để xác minh sự ổn định lâu dài là tốt. Cả hai hệ thống gps và GSM có đồng hồ rất đẹp nhưng sử dụng chúng phức tạp hơn.
Johan

3
mặc dù có nhiều ứng dụng khác sẽ yêu cầu nó, nhưng có một ứng dụng đặc biệt gây ra nhiều vấn đề với cơ sở thời gian chính xác - truyền thông nối tiếp.
JustJeff

Tôi không biết bất kỳ sự ổn định tần số nào sẽ không cao hơn với tinh thể thạch anh bên ngoài. Bạn sẽ không nhận được độ chính xác dưới 0,1% với bộ tạo dao động silicon.
Jason S

1
@Johan - DCF77 / WWVB chính xác như GPS hoặc GSM, và dễ dàng hơn để làm việc với (nhịp tim 1Hz)
stevenvh

2

Độ ổn định tần số là yếu tố chính, đặc biệt đối với comms nối tiếp ở tốc độ cao. Nhưng điều đó cũng mang đến nhu cầu thỉnh thoảng cho một tinh thể ở tần số dường như kỳ lạ để có được tốc độ truyền chính xác, bởi vì các tùy chọn hạn chế mà các bộ chia đồng hồ cung cấp cho bạn.


1

Tôi thực sự đã bắt gặp một kịch bản trong đó 1% không đủ tốt cho UART.

Nếu bất kỳ ai trong số các bạn đã nghe nói về bảng điều khiển vi điều khiển Teensy ++ v1.0, thì nó có UART cực kỳ nhạy cảm. Tôi đã đặt máy chủ lưu trữ của mình ở mức 115200 và nó được đặt ở mức 115200 và trong thời gian dài nhất không thể hiểu tại sao nó không đọc chính xác dữ liệu. Hóa ra máy chủ của tôi đã gửi gần hơn tới 114300 baud. (115200 - 114300) / 115200 = ~ 0,9% lỗi. Tôi đã thử nó với hai MCU khác nhau và chúng hoạt động tốt.

Điểm chính là: bất kể ứng dụng của bạn là gì, nếu độ chính xác cao hơn của tần số xung nhịp là lợi ích, bạn nên sử dụng bộ cộng hưởng ngoài, tinh thể hoặc thậm chí bộ dao động nếu chip của bạn không có mạch lái xe cần thiết.

Tái bút: Tôi tự hỏi liệu có ai có bất kỳ hiểu biết nào về sự lựa chọn thiết kế cấp thấp nào mà họ đã thực hiện trên phần cứng UART khiến nó trở nên nhạy cảm không?


Yêu cầu cơ bản cho UART là mẫu máy thu từng bit trong khi nó hợp lệ. Lý tưởng nhất là người nhận sẽ nhận thấy thời điểm chính xác bit start bắt đầu và lấy mẫu dữ liệu chính xác 1,5 lần một bit sau đó, sau đó 2,5, 3,5, v.v. lên đến 8,5 bit lần sau. Trong thực tế, thường có một số trượt khi máy thu phát hiện xung bắt đầu và có thể có nhiều độ dốc hơn sau đó. Ví dụ: người ta có thể cố gắng nhận 2400 baud bằng bộ xử lý chạy 8.192 hướng dẫn mỗi giây ....
supercat

Điều này có thể được thực hiện nếu thời gian truyền hoàn toàn sạch, nhưng việc lấy mẫu sẽ không xảy ra ở các khoảng thời gian chính xác là 417usec. Thay vào đó, nó sẽ xảy ra ở một số khoảng thời gian là 366us và một số 488us. Khi máy thu "kén chọn", điều thường có nghĩa là nó lấy mẫu dữ liệu sớm hơn hoặc muộn hơn so với khi cần, nhưng tại thời điểm mà một máy phát lý tưởng sẽ xuất ra bit dữ liệu dự kiến.
supercat

@supercat Tại sao họ lại thiết kế nó để lấy mẫu sớm hơn sau này? Có vẻ như việc lấy mẫu ở 0,5 như bạn mô tả sẽ luôn tốt nhất. Đó là cách tôi triển khai phần mềm UART của mình vài năm trước ... thậm chí không xảy ra với tôi để làm điều đó theo bất kỳ cách nào khác. Điều đó chỉ đơn giản là cho phép hầu hết các lỗi trên máy phát.
NickHalden

@JGord: Nếu việc lấy mẫu được kiểm soát bởi đồng hồ nhanh hơn nhiều so với tốc độ truyền, mọi thứ thật tuyệt vời, nhưng không phải lúc nào cũng như vậy. Giả sử, ví dụ, một người đang cố gắng nhận 115.200 baud bằng cách sử dụng 6502 chạy ở tốc độ 1.0 MHz và không có UART. Một vòng lặp chờ bit bắt đầu sẽ mất 7us và các cơ hội bỏ phiếu được lên lịch tại các khoảng thời gian 1us. Có sự không chắc chắn 8us khi 6502 sẽ thăm dò ý kiến ​​một chút, nhưng vì các bit dài 8,6us, người ta có thể nhận dữ liệu thành công nếu ...
supercat

... tốc độ truyền là chính xác, thời gian tăng và giảm là đồng đều và đối xứng, và không có sự dao động nào khác. Tôi không biết về bảng Teensy, nhưng tôi sẽ không ngạc nhiên nếu nó sử dụng UART phần mềm để đẩy bộ điều khiển vượt quá khả năng thông thường của nó.
supercat

1

Bộ tạo dao động tinh thể bên ngoài chính xác hơn so với đồng hồ bên trong, và chúng nên được sử dụng khi cần thời gian chính xác. Đôi khi để tiết kiệm tiền, các nhà thiết kế sử dụng nội bộ.


2
Điều này dường như không thêm bất cứ điều gì vào câu trả lời hiện có.
Adam Haun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.