Trích:
Nguyên văn bởi batbatdieu
Nhận tiện cho em hỏi về cái này luôn :
Code :
#include <uart.h> // Module function for uart
//#define Fcy 29491200 // 7.3728 Mhz Crystal XTLxPLL 16
//#define Fcy 14746000 // 7.3728 Mhz Crystal XTLxPLL 8
//#define Fcy 16000000 // 8 Mhz Crystal XTLxPLL 8
#define Fcy 20000000 // 10 Mhz Crystal XTLxPLL 8
#define BAUDRATE 115200 // UART2
.....
.....
OpenUART2(0x8000, 0x400,((Fcy/BAUDRATE)/16) - 1);
với cùng 1 phần cứng và chương trình như trên khi sử dụng TA ngoài 7.3728 và 8Mhz thì UART truyền nhận tốt ,nhưng khi dùng TA 10Mhz thì UART lại không chạy ???
|
Thạch anh 10 MHz không thích hợp để tạo ra baud rate 115200 bps. Công thức tổng quát trên sẽ cho ra giá trị đặt vào U2BRG là 9, trong khi giá trị cần thiết là 9.85. Do đó sẽ dẫn đến sai số khoảng 7.8%, dứt khoát không thể chấp nhận ngay cả cho trường hợp 7 bit dữ liệu.
Bạn chọn baud rate khác thấp hơn thì mới có thể dùng được thạch anh 10 MHz, chẳng hạn 19200 bps hay 38400 bps.
Thân,