Chức năng truyền thông nối tiếp USART

Một phần của tài liệu Nghiên cứu thiết kế mô hình nhà thông minh (Trang 53 - 57)

5. Phƣơng pháp nghiên cứu

2.6.4. Chức năng truyền thông nối tiếp USART

USART là một chuẩn truyền thông nối tiếp được tích hợp trong rất nhiều thiết bị, module, vi điều khiển, vi xử lý, cảm biến, các hệ thống tự động hóa... Chuẩn truyền thông USART sử dụng 2 mức logic theo chuẩn TTL tức thể hiện logic 0 (0V) và logic 1 (3-5V). Dữ liệu truyền đi có thể là đồng bộ hoặc không đồng bộ. Ở

vi điều khiển chúng ta chỉ sử dụng cách truyền là không đồng bộ tức dữ liệu sẽ được đóng gói thành các khung truyền và có tốc độ truyền (BAUD - bps) được chuẩn hóa và phải giống nhau tốc độ baud. Ví dụ: 2400, 4800, 9600, 14400, 19200, 28800,... Tốc độ truyền bây giờ có thể lên đến vài trăm kbps. Thông thường ta thường sử dụng 9600 đề truyền nhằm giảm nhiễu.

Họ vi điều khiển AVR được tích hợp sẵn một bộ truyền thông nối tiếp. TX là chân truyền dữ liệu đi và RX là chân nhận dữ liệu về. Khi ghép nối chuẩn giao tiếp ta phải đấu nó theo kiểu bắt chéo tức TX của con này với RX của con kia và TX của con kia với RX của con này, kiểu TX1-RX2 và RX1-TX2.

- Thanh ghi UDR (USART I/O Data Register): là 2 thanh ghi dữ liệu cùng một tên truyền và nhận, khi ghi vào 1 byte thì nó sẽ truyền đi byte đó, và khi nhận được một byte thì ta sẽ đọc dữ liệu từ thanh ghi này

Hình 2. 9. Thanh ghi UDR

- Thanh ghi UCSRA: là thanh ghi trạng thái của USART

Hình 2. 10. Thanh ghi UCSRA

Các bit trạng thái:

RXC là bit cờ ngắt nhận dữ liệu từ RX

TXC là bit cờ ngắt truyền đi một byte ra TX

UDRE là bit cờ ngắt thanh ghi UDR trống và sẵn sàng ghi dữ liệu mới vào

để truyền đi.

FE là bit báo khung truyền bị lỗi

DOR là bit báo tràn dữ liệu

U2X là bit set nhân đôi tốc độ truyền

MPCM là bit set chế độ truyền thông đa xử lý

- Thanh ghi UCSRB: là thanh ghi mặt nạ ngắt và điều khiển

Hình 2. 11. Thanh ghi UCSRB

Các bit trạng thái:

RXCIE là bit set cho phép ngắt nhận

TXCIE là bit set cho phép ngắt truyền

UDRIE là bit set cho phép ngắt thanh ghi UDR trống

RXEN là bit cho phép nhận dữ liệu trên chân RX

TXEN là bit cho phép truyền dữ liệu trên chân TX

UCSZ2 là bit chọn kích thước ký tự, kết hợp với 2 bit trong thanh ghi

UCSRC

RXB8 là bit truyền dữ liệu thứ 8 trong chế độ truyền 9bit

TXB8 là bit nhận dữ liệu thứ 8 trong chế độ truyền 9bit

Trong truyền dữ liệu không đồng bộ ta thường sử dụng ngắt để nhận dữ liệu do vậy ta chỉ cần set các bít sau lên 1: RXCIE=1, RXEN=1, TXEN=1 ta viết ngắn gọn UCSRB=0x98; tương đương UCSRB=0b 1001 1000

- Thanh ghi UCSRC: là thanh ghi quy định khung truyền và chế độ truyền

Hình 2. 12. Thanh ghi UCSRC

Bit UMSEL là bit chọn chế độ truyền thông đồng bộ hay không đồng bộ.

Khi UMSEL=1 là chế độ đồng bộ và UMSEL=0 là chế độ không đồng bộ, trong ứng dụng này ta đặt UMSEL=0 tức chế độ không đồng bộ.

UPM1 UPM0 Chức năng

0 0 Không sử dụng Parity

0 1 Dự trữ không dùng

1 0 Parity chẵn được chọn

1 1 Parity lẻ được chọn

Bảng 2. 4. Thiết lập bit chọn kiểu chẵn lẻ

Bit USBS là bit chọn sử dụng một hay 2 bit Stop. Nếu USBS=1 thì là 2 bit

Stop và khi USBS=0 là 1 bit Stop

Hai bit UCSZ1 và UCSZ0 kết hợp với bit UCSZ2 từ thanh ghi UCSRB ta

được 3bit chọn độ dài dữ liệu truyền:

UCSZ2 UCSZ1 UCSZ0 Kích thƣớc truyền

0 0 0 5 bit 0 0 1 6 bit 0 1 0 7 bit 0 1 1 8 bit 1 0 0 Dự trữ 1 0 1 Dự trữ 1 1 0 Dự trữ 1 1 1 9 bit

Bảng 2. 5. Thiết lập bit chọn độ dài dữ liệu truyền

Bit UCPOL là bit chỉ tích cực của xung clock trong chế độ truyền đồng bộ.

Kết luận lại ta sẽ cần có các bit sau được set (cho chế độ truyền không đồng bộ): URSEL=1, UCSZ1=1, UCSZ0=1 ta được UCSRC=0x86 tương đương UCSRC=0b 1000 0110 (8bit USART, 1 stop, no parity)

Phần cuối cùng là thiết lập tốc độ truyền BAUD được quy định bởi 2 thanh

ghi UBRRHUBRRL. Do dữ liệu cài đặt lớn hơn 255 lên nó được mở rộng

thêm 4bit trên thanh ghi UBRRH

Ta sẽ có các bit từ UBRR[11:0] để cài đặt tốc độ BAUD theo bảng sau, ở đây ta sử dụng thạch anh 11.0592MHz để tạo tốc độ BAUD với sai số 0%

UBRRH UBRRL Tốc độ BAUD Bit U2X (UCSRA)

0x01 0x1F 2400 0 0 143 4800 0 0 71 9600 0 0 47 14400 0 0 35 19200 0 0 23 28800 0 0 17 38400 0 Bảng 2. 6. Thiết lập tốc độ BAUD

Như bảng trên ta để UBRRH mặc định không cần khai báo, còn UBRRL

sẽ bằng các giá trị trên tương ứng với tốc độ BAUD đó. Trừ BAUD = 2400 phải nạp 2 giá trị trên vào 2 thanh ghi UBRRHUBRRL

Một phần của tài liệu Nghiên cứu thiết kế mô hình nhà thông minh (Trang 53 - 57)

Tải bản đầy đủ (PDF)

(92 trang)