Giao tiếp RS232, RS485

Một phần của tài liệu ĐỒ ÁN TN - XÂY DỰNG HỆ THỐNG THU THẬP DỮ LIỆU QUA GIAO DIỆN RS485 VÀ GSM (Trang 51 - 56)

1. Nội dung thiết kế tốt nghiệp:

4.3.1Giao tiếp RS232, RS485

Giao tiếp kết nối bên ngoài với một thiết bị khác bằng ba chân. Bất kỳ giao tiếp USART hai chiều đòi hỏi phải có tối thiểu hai chân: Nhận dữ liệu vào (RX) và Truyền dữ liệu ra (TX):

Đồ Án Tốt Nghiệp

Trang 49

RX: Tiếp nhận dữ liệu ngõ vào là dữ liệu nối tiếp. Kỹ thuật lấy mẫu được sử dụng cho dữ liệu thu hồi để chọn lọc giữa các dữ liệu đến hợp lệ đến và nhiễu.

TX: Truyền dữ liệu ngõ ra. Khi bộ phát bị vô hiệu hóa, các chân ngõ ra trở về cấu hình cổng I/O. Khi bộ phát được kích hoạt và không có gì được truyền đi, các TX pin ở mức cao. Trong chế độ single-wire và Smartcard, các I/O này được sử dụng để truyền và nhận được dữ liệu (tại USART, dữ liệu này sau đó nhận được trên SW_RX).

Mô tả ký tự USART:

Chiều dài Word có thể được lựa chọn là 8 hoặc 9 bit bằng cách lập trình các bit M trong thanh ghi USART_CR1.Các chân TX ở trạng thái thấp trong khi bit Start. Nó ở trạng thái cao trong khi bit Stop.

Một Ký tự rỗi được hiểu như là một bộ khung toàn các sô "1" tiếp theo sau bit Start – tiếp theo bit Start là khung dữ liệu - (Các số "1" sẽ bao gồm cả bit Stop).

Một Ký tự ngừng được hiểu về việc tiếp nhận các số "0 " trong một thời gian của khung dữ liệu. Vào cuối khung ngừng được truyền chèn 1 hoặc 2 bit Stop (bit "1") để xác nhận bit Start. Truyền và nhận được điều khiển bởi một bộ phát tốc độ baud, xung clock cho mỗi ký tự được tạo ra khi bit cho phép được thiết lập tương ứng cho truyền phát và nhận.

Hình 4. 5 Độ dài Word lập trình[17] Transmitter:

Bộ phát có thể gửi word dữ liệu 8 hay 9 bit tùy thuộc vào trạng thái bit M. Khi truyền tải bit cho phép (TE) được thiết lập, các dữ liệu trong các thanh ghi dịch truyền tải đưa ra trên chân TX và xung đồng hồ tương ứng được đưa ra trên chân SCLK.

Ký tự truyền:

Trong một bộ truyền USART, dữ liệu dịch ra ít nhất là bit có ý nghĩa đầu tiên trên chân TX. Trong chế độ này, các thanh ghi USART_DR bao gồm một bộ đệm (TDR) giữa bus nội bộ và thanh ghi truyền.

Mỗi ký tự được ưu tiên bởi một bit Start có mức logic thấp trong chu kỳ bit. Các ký tự được kết thúc bằng cấu hình của các bit Stop.

Trang 50

Lưu ý:

 Các bit TE không nên được reset trong quá trình truyền dữ liệu. Reset các bit TE trong khi truyền dẫn sẽ bị hỏng dữ liệu trên các chân TX cũng như các như bộ đếm tốc độ baud. Các dữ liệu hiện tại đang được truyền đi sẽ bị mất.

 Một khung rỗi sẽ được gửi sau khi bit TE được kích hoạt.

Cấu hình bit Stop: Số bit Stop được truyền đi với mỗi ký tự có thể được lập trình trong thanh ghi điều khiển 2, bit 13,12.

 1 bit Stop: Đây là giá trị mặc định của số bit Stop.

 2 bit Stop: Hỗ trợ cho USART thông thường, chế độ single-wire và modem.

 0.5 bit Stop: Được sử dụng khi nhận được dữ liệu trong chế độ SmartCard.

 1.5 bit Stop: Được sử dụng khi truyền dữ liệu trong chế độ SmartCard.

Hình 4. 6 Cấu hình các bit Stop [17]

Các thủ tục phát của USART:

 Bật USART bằng cách ghi bit UE trong thanh ghi USART_CR1 lên “1”.

 Lập trình bit M trong USART_CR1 để xác định độ dài từ.

 Lập trình số bit Stop ở thanh ghi USART_CR2.

 Chọn DMA cho phép (DMAT) trong USART_CR3 nếu bộ đệm đa

truyền thông còn trống. Cấu hình thanh ghi DMA như được giải thích trong giao tiếp multibuffer.

 Thiết lập các bit TE ở USART_CR1 để gửi một khung rỗi với lần truyền đầu tiên. (adsbygoogle = window.adsbygoogle || []).push({});

 Chọn tốc độ truyền mong muốn bằng cách sử dụng thanh ghi USART_BRR.

Đồ Án Tốt Nghiệp

Trang 51

 Ghi dữ liệu để gửi vào thanh ghi USART_DR (điều này sẽ xóa sạch các bit TXE). Lặp lại cho mỗi dữ liệu được truyền đi trong trường hợp có một bộ đệm duy nhất.

Receiver:

Các USART có thể nhận được word dữ liệu 8 hay 9 bit tùy thuộc vào các bit M trong thanh ghi USART_CR1.

Phát hiện bit Start:

Trong USART, các bit Start được phát hiện khi một trình tự cụ thể của mẫu được công nhận.

Trình tự này là: 1 1 1 0 X 0 X 0X 0X 0 X 0X 0

Hình 4. 7 Phát hiện bit Start [17] Lưu ý:

Nếu trình tự này không hoàn chỉnh, các bit Start phát hiện hủy bỏ và bộ nhận trả về trạng thái rỗi (cờ không được set) chờ cạnh xuống.

Nếu chỉ có 2 trong 3 bit ở mức 0 (lấy mẫu bit thứ 3, 5 và 7 hoặc lấy mẫu vào bit thứ 8, 9 và 10), các bit Start được xác nhận nhưng bit cờ nhiễu NE được set. Các bit Start được xác nhận nếu 3 mẫu cuối cùng là ở mức 0 (lấy mẫu bit thứ 8, 9, và 10 bit).

Ký tự tiếp nhận:

Trong một bộ nhận USART, dữ liệu dịch ít nhất là bit đầu tiên có nghĩa qua chân RX. Trong chế độ này, thanh ghi USART_DR bao gồm một bộ đệm (RDR) giữa bus nội bộ và thanh ghi dịch nhận.

Các thủ tục nhận của USART:

Trang 52

 Lập trình bit M trong USART_CR1 để xác định độ dài từ.

 Lập trình số bit Stop ở USART_CR2.

 Chọn DMA cho phép (DMAR) trong USART_CR3 nếu bộ đệm đa

truyền thông còn trống. Cấu hình thanh ghi DMA như được giải thích trong giao tiếp multibuffer.

 Chọn tốc độ truyền mong muốn bằng cách sử dụng thanh ghi tốc độ baud USART_BRR.

 Thiết lập bit RE trong thanh ghi USART_CR1. Cho phép bộ nhận bắt đầu tìm kiếm một bit Start.

Chương trình test USART1:

int main(void) {

USART_Configuration();

printf("**************************************************************\r\n"); printf("* *\r\n"); printf("* TEST USART1 *\r\n"); printf("* *\r\n"); printf("**************************************************************\r\n"); printf("Cau Hinh Cau Lenh Gui Xuong Tram Xang:\r\n");

/* Infinite loop */ while (1){

while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET){;} /* Store the received byte in RxBuffer */

RxBuffer[RxCounter] = (USART_ReceiveData(USART1) & 0x7F); if(RxBuffer[RxCounter]==0x0A)

{ (adsbygoogle = window.adsbygoogle || []).push({});

printf("Cau Lenh la: "); temp=RxCounter;

for(RxCounter=1;RxCounter<temp;RxCounter++) {

USART_SendData(USART1,RxBuffer[RxCounter]);

Đồ Án Tốt Nghiệp

Trang 53

}

printf("\r\n");

printf("Cau Lenh Khac:\r\n"); RxCounter=0;

}

RxCounter++; }

}

Một phần của tài liệu ĐỒ ÁN TN - XÂY DỰNG HỆ THỐNG THU THẬP DỮ LIỆU QUA GIAO DIỆN RS485 VÀ GSM (Trang 51 - 56)