Làm thế nào tôi nên chọn tần số tinh thể của tôi?


8

Tôi đã thấy những câu hỏi như thế này nói về việc chọn một tinh thể cho UART và tôi đã thấy những câu hỏi như thế này đề cập đến 32.768 kHz cho RTC. Nhưng làm thế nào để tôi quyết định đúng tinh thể cho ứng dụng của tôi.

Tại thời điểm này tôi không chắc chắn tôi sẽ sử dụng UART baud nào, nhưng nó sẽ là một trong những tiêu chuẩn. Sẽ thật tuyệt khi có thể có được thời gian bán chính xác tính bằng mili giây, nhưng không phải là một yêu cầu. Theo trực giác tôi nghĩ rằng việc đi với tinh thể nhanh nhất mà micro của tôi có thể sử dụng sẽ giúp tôi linh hoạt nhất, nhưng tôi có thiếu thứ gì không? Có tần suất "mục đích chung" mà mọi người sử dụng không?


hết sức cẩn thận ... :)
Abbeyatcu

Câu trả lời:


11

Thành thật tôi có thể dành hàng giờ để mô tả các tần số khác nhau và tại sao nên sử dụng chúng, nhưng ai đó đã có!

http://en.wikipedia.org/wiki/Cstall_oscillator_frequencies

Bảng này có một cột UART để cho bạn biết tần số UART mà nó chia cho tốt.

Nó cũng cho bạn biết khi tần số là một tinh thể tiêu chuẩn cho một hệ thống comm cụ thể.


Sẽ không tốt nếu có một số tần số pha lê đẹp mà mọi người đã sử dụng.
Kellenjb

1
Sẽ không tốt sao nếu mọi nơi trên thế giới đều có cùng một ổ cắm điện trong các tòa nhà, cuộc sống sẽ tiếp tục, trừ khi bạn trộn lẫn các ổ cắm.
Kortuk

2

Theo trực giác, tôi sẽ sử dụng tinh thể SLOWEST hoạt động cho ứng dụng của mình. Bạn sẽ nhận được ít trôi đồng hồ hơn và dấu vết mạch thường hoạt động tốt hơn ở tần số thấp hơn.

Bên cạnh đó, nếu bạn muốn làm mọi thứ cứ sau vài mili giây, bạn có thể làm điều gì đó theo các dòng sau:

Fosc = 25MHz. 
T=1/Fosc = 40ns; 
1ms/40ns = 25000 cycles/ms;
0xFFFF-25000=0x9E57;

on overflow TMR1:  //assuming TMR1 is 16 bit and counts every clock cycle
doEveryMillisecond;
incrementMillisecondTimer;
TMR1 = 0x9E57;

Không chắc chắn bạn đang sử dụng loại micro nào nhưng MPLAB có các tiện ích theo thời gian các sự kiện diễn ra trong bao lâu, vì vậy bạn có thể sử dụng điều đó để điều chỉnh giá trị đặt lại của TMR1 để xử lý bất kỳ chi phí nào và / hoặc đồng hồ không chính xác. Các tinh thể có thể thay đổi đủ để điều này là không khả thi trong môi trường sản xuất ... không chắc chắn.


Là một phần mở rộng cho điều này, nếu một người không biết sử dụng XTAL trong tiện ích của họ, thì đừng chọn một tiện ích nào cả. Chỉ cần để điểm PCB không phổ biến và chờ cho đến khi bạn cần sự ổn định (ví dụ hiệu chuẩn của bộ dao động RC bên trong không đủ tốt ở tốc độ truyền mong muốn) hoặc tốc độ. Đừng sửa những gì không bị hỏng!
tyblu

Đồng ý - nếu MCU của bạn có bộ dao động bên trong, hãy thử và sử dụng đầu tiên. Đảm bảo đặt từ / cấu hình chính xác. Ngoài ra, bạn nên cân nhắc sử dụng ổ cắm trên PCB để không phải đối phó với các tinh thể hàn / khử màu ... phần thưởng là bạn có thể trao đổi chúng dễ dàng.
Isaac

1
@isaac, một tinh thể là một trong những nguồn EMI lớn nhất trên bảng, nó phải càng gần mặt phẳng mặt đất càng tốt, không đi qua các đầu nối và có dấu vết che chắn xung quanh nó.
Kortuk

@isaac, ngoài ra, nếu bạn có đồng hồ trôi 10ppm, bạn sẽ không gặp vấn đề gì với tốc độ pha lê. Tất cả chúng sẽ phân chia cho cùng một lỗi tiềm năng, vì đồng hồ tốc độ cao hơn phải có sự phân chia lớn hơn. Một tinh thể chậm hơn có nghĩa là giải quyết tồi tệ hơn trên những thứ khác.
Kortuk

@isaac Tôi chưa bao giờ gặp vấn đề với tinh thể 40 MHz trước đây. Tôi chỉ cần gắn chúng gần với vi mô nhất có thể. và phản hồi @kortuk là cùng một lý do tại sao tôi không nghĩ trôi đồng hồ là một vấn đề. Tôi cho rằng tốc độ xung nhịp cao hơn sẽ cho phép tôi có thể tiến gần đến 1 ms chính xác.
Kellenjb
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.