Cấu hình USART của Vi điều khiển AVR (Atmel 8) Giao tiếp nối tiếp

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Vi điều khiển là một thiết bị điều khiển có chứa một số thiết bị ngoại vi như RAM, ROM TIMERS, giao tiếp dữ liệu nối tiếp , v.v., được yêu cầu để thực hiện một số tác vụ được xác định trước. Ngày nay, loại vi điều khiển tiên tiến được sử dụng trong nhiều ứng dụng tùy theo khả năng và tính khả thi của chúng để thực hiện một số tác vụ mong muốn và các bộ điều khiển này bao gồm 8051, AVR và vi điều khiển PIC . Trong bài này, chúng ta sẽ tìm hiểu về vi điều khiển họ AVR nâng cao và cách lập trình của nó .

Bộ vi điều khiển AVR

AVR là một loại thiết bị điều khiển do Atmel Corporation sản xuất vào năm 1996. AVR không có nghĩa là gì, nó chỉ là một cái tên. AVR vi điều khiển bao gồm kiến ​​trúc Harvard và do đó, thiết bị chạy rất nhanh với số lượng lệnh cấp máy (RISC) giảm. Bộ vi điều khiển AVR bao gồm các tính năng đặc biệt so với các bộ vi điều khiển khác như chế độ ngủ 6, ADC có sẵn, bộ dao động bên trong và giao tiếp dữ liệu nối tiếp, v.v. Bộ vi điều khiển AVR có sẵn trong các cấu hình khác nhau của 8-bit, 16-bit và 32-bit để thực hiện các hoạt động khác nhau.




Bộ vi điều khiển AVR

Bộ vi điều khiển AVR

Giao tiếp dữ liệu nối tiếp USART trong Vi điều khiển AVR

USART là viết tắt của máy thu và máy phát đồng bộ và không đồng bộ phổ quát. Nó là một giao tiếp nối tiếp của hai giao thức. Giao thức này được sử dụng để truyền và nhận dữ liệu từng bit liên quan đến xung đồng hồ trên một dây đơn. Các Bộ vi điều khiển AVR có hai chân: TXD và RXD, được sử dụng đặc biệt để truyền và nhận dữ liệu nối tiếp. Bất kỳ vi điều khiển AVR nào cũng bao gồm giao thức USART với các tính năng riêng của nó.



Giao tiếp USART trong Vi điều khiển AVR

Giao tiếp USART trong Vi điều khiển AVR

Các tính năng chính của AVR USART

  • Giao thức USART hỗ trợ giao thức song công.
  • Nó tạo ra tốc độ truyền có độ phân giải cao.
  • Nó hỗ trợ truyền các bit dữ liệu nối tiếp từ 5 đến 9 và nó bao gồm hai bit dừng.

Cấu hình mã pin USART

USART của AVR bao gồm ba Ghim:


  • RXD: Chân nhận USART (Mã PIN ATMega8 2 ATMega16 / 32 Chân 14)
  • TXD: Chân máy phát USART (PIN ATMega8 3 ATMega16 / 32 Chân 15)
  • XCK: Chân đồng hồ USART (Mã PIN ATMega8 6 ATMega16 / 32 Chân 1)

Phương thức hoạt đông

Bộ vi điều khiển AVR của giao thức USART hoạt động ở ba chế độ:

  • Chế độ bình thường không đồng bộ
  • Chế độ tốc độ kép không đồng bộ
  • Chế độ đồng bộ
Phương thức hoạt đông

Phương thức hoạt đông

Chế độ bình thường không đồng bộ

Trong phương thức giao tiếp này, dữ liệu được truyền và nhận từng bit mà không có xung đồng hồ bởi tốc độ truyền được xác định trước do thanh ghi UBBR thiết lập.

Chế độ tốc độ kép không đồng bộ

Trong phương thức giao tiếp này, dữ liệu được truyền với tốc độ truyền gấp đôi được thiết lập bởi thanh ghi UBBR và đặt các bit U2X trong thanh ghi UCSRA. Đây là chế độ tốc độ cao để truyền thông tin đồng bộ để truyền và nhận dữ liệu một cách nhanh chóng. Hệ thống này được sử dụng khi yêu cầu cài đặt tốc độ truyền chính xác và đồng hồ hệ thống.

Chế độ đồng bộ

Trong hệ thống này, truyền và nhận dữ liệu liên quan đến xung đồng hồ được đặt UMSEL = 1 trong thanh ghi UCSRC.

Cấu hình USART trong vi điều khiển AVR

USART có thể được cấu hình bằng năm thanh ghi như ba thanh ghi điều khiển , một thanh ghi dữ liệu và thanh ghi lựa chọn tốc độ truyền, chẳng hạn như UDR, UCSRA, UCSRB, UCSRC và UBRR.

7 bước để soạn chương trình

Bước 1: Tính toán và đặt tốc độ truyền

Tốc độ truyền của USART / UART do công ty đăng ký UBRR đặt. Thanh ghi này được sử dụng để tạo ra việc truyền dữ liệu với tốc độ cụ thể. UBRR là một thanh ghi 16 bit. Vì AVR là vi điều khiển 8 bit và kích thước thanh ghi bất kỳ của nó là 8 bit. Do đó, ở đây thanh ghi UBRR 16-bit bao gồm hai thanh ghi 8-bit như UBRR (H), UBRR (L).

Công thức của tốc độ baud là

BAUD = Tối / (16 * (UBBR + 1))

Công thức của thanh ghi UBRR là

UBRR = Tối / (16 * (BAUD-1))

Tần số của vi điều khiển AVR là 16MHz = 16000000 Hãy giả sử tốc độ truyền là 19200Bps, sau đó

UBRR = 16000000 / (16 * (19200-1))

UBRR = 16000000 / (16 * (19200-1))

UBRR = 51.099

Cuối cùng tìm thấy tốc độ truyền

BAUD = 16000000 / (16 * (51 + 1))
UBRR = 19230b / giây

Bước 2: Lựa chọn chế độ dữ liệu

Chế độ truyền dữ liệu, bit bắt đầu và bit dừng và kích thước ký tự được thiết lập bởi bộ điều khiển và thanh ghi trạng thái UCSRC.

Lựa chọn chế độ dữ liệu

Lựa chọn chế độ dữ liệu

Bước 3: Lựa chọn chế độ truyền dữ liệu

Chế độ đồng bộ và không đồng bộ được chọn bởi bit UMSEL của thanh ghi trạng thái điều khiển. Nếu chúng ta cho UMSEL = 0 thì USART hoạt động ở chế độ không đồng bộ, ngược lại thì hoạt động ở chế độ đồng bộ.

Lựa chọn chế độ truyền dữ liệu

Lựa chọn chế độ truyền dữ liệu

Bước 4: Bit bắt đầu và Bit dừng

Bit bắt đầu và bit dừng là một cách để gửi và nhận dữ liệu theo thứ tự. Nói chung, bất kỳ danh tiếng dữ liệu nào cũng bao gồm một bit stat và một bit dừng, nhưng bộ vi điều khiển AVR có một bit bắt đầu và hai bit dừng để xử lý dữ liệu. Bit dừng bổ sung có thể hữu ích để tăng thêm một chút thời gian xử lý nhận. Nó đặc biệt hữu ích cho tốc độ truyền dữ liệu cao, trong khi tốc độ truyền dữ liệu rất cao, vì vậy chúng tôi không nhận được dữ liệu thích hợp. Do đó, chúng ta có thể tăng thời gian xử lý bằng cách sử dụng hai bit dừng để có được dữ liệu thích hợp.

Bit bắt đầu và Bit dừng

Bit bắt đầu và Bit dừng

Số lượng bit dừng được chọn bởi bit USBS của UCSRC - thanh ghi trạng thái điều khiển. USBS = 0, cho một bit dừng và USBS = 1, cho hai bit dừng.

Bước 5: Đặt kích thước ký tự

Như trong trường hợp với vi điều khiển cơ bản gửi và nhận byte dữ liệu (8-bit) tại một thời điểm, cho dù trong vi điều khiển AVR, chúng ta có thể chọn định dạng khung dữ liệu trong mỗi khung bằng bit UCSZ của thanh ghi UCSRC.

Định dạng khung dữ liệu

Định dạng khung dữ liệu

Bước 6: Lưu trữ dữ liệu đã nhận

Bộ vi điều khiển AVR bao gồm một thanh ghi bộ đệm UDR để truyền và nhận dữ liệu. UDR là một thanh ghi bộ đệm 16 bit, trong đó 8 bit được sử dụng để nhận (RXB) dữ liệu và các bit khác được sử dụng để truyền dữ liệu (TXB). Thanh ghi bộ đệm dữ liệu truyền sẽ là đích đến thanh ghi UDR cho dữ liệu được ghi trên vị trí của nó. Nhận thanh ghi bộ đệm dữ liệu sẽ trả về nội dung của thanh ghi UDR.

Bước 7: Máy phát và Máy thu kích hoạt

Dữ liệu được truyền và nhận sẽ được cho phép bởi các chân RXC và TXC của vi điều khiển được thiết lập bởi thanh ghi UCSRA của vi điều khiển. Bit cờ này được đặt bởi vi điều khiển cho dữ liệu được hoàn thành bằng cách nhận và truyền (TXC = RXC = 1).

Nhân đôi tốc độ truyền

Chúng tôi có thể tăng gấp đôi tốc độ truyền của giao tiếp USART của AVR vi điều khiển từ 16 bit đến 8 bit hiệu quả bởi U2X –bit trong thanh ghi UCSRA. Bit này chỉ ảnh hưởng đến hoạt động không đồng bộ. Nếu chúng ta có thể thiết lập bit này (U2X = 1), nó sẽ giảm tốc độ truyền từ 16-bit xuống 8-bit, tăng gấp đôi tốc độ truyền cho giao tiếp đồng bộ.

Đây là một tính năng nâng cao của bộ vi điều khiển AVR để xử lý dữ liệu nhanh chóng.

Chương trình USART

Mọi bộ vi điều khiển đều được xác định trước với một IDE cụ thể và dựa trên IDE này, bộ vi điều khiển được lập trình với C nhúng hoặc hợp ngữ. Chương trình vi điều khiển AVR được phát triển bởi studio AVR. Hơn nữa, nếu bạn muốn biết thêm thông tin về các bước để xây dựng các dự án dựa trên vi điều khiển , hoặc thông tin chi tiết về chủ đề này, bạn có thể liên hệ với chúng tôi bằng cách bình luận bên dưới.