Đề tài Truyền thông UART giữa 2 MCU

Tốc độ baud: như trong ví dụ trên về việc truyền 1 bit trong 1ms, bạn thấy rằng để việc truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham gia phải “thống nhất” nhau về khoảng thời dành cho 1 bit truyền, hay nói cách khác tốc độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud. Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây. Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~ 52.083us.

Frame (khung truyền): do truyền thông nối tiếp mà nhất là nối tiếp không đồng bộ rất dễ mất hoặc sai lệch dữ liệu, quá trình truyền thông theo kiểu này phải tuân theo một số quy cách nhất định. Bên cạnh tốc độ baud, khung truyền là một yếu tốc quan trọng tạo nên sự thành công khi truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền. Hình 1 là một ví dụ của một khung truyền theo UART, khung truyền này được bắt đầu bằng một start bit, tiếp theo là 8 bit data, sau đó là 1 bit parity dùng kiểm tra dữ liệu và cuối cùng là 2 bits stop

 

docx13 trang | Chuyên mục: Truyền Tải Điện | Chia sẻ: tuando | Lượt xem: 742 | Lượt tải: 1download
Tóm tắt nội dung Đề tài Truyền thông UART giữa 2 MCU, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Trường: Đại Học Bách Khoa Tp Hồ Chí Minh
Khoa: Điện - Điện Tử
Bộ môn: Viễn Thông
Giáo viên hướng dẫn: Đinh Quốc Hùng
BÁO CÁO BÀI TẬP LỚN 
TRUYỀN SỐ LIỆU VÀ MẠNG
ĐỀ TÀI: TRUYỀN THÔNG UART GIỮA 2 MCU
Thực hiện: 
Nhóm 15: Bao gồm các thành viên:
Lê Quang Sơn 41102924
Nguyễn Phạm Hồng Phúc 41102617
Nguyễn Thanh Bình 41100306
Phân công nhiệm vụ:
Nguyễn Phạm Hồng Phúc: chuẩn bị phần lý thuyết giới thiệu về UART, làm silde.
Lê Quang Sơn: chuẩn bị phần giới thiệu KIT Launchpad với MSP430G2553 và chức năng UART của nó, code chương trình.
Nguyễn Thanh Bình: chuẩn bị phần cứng (MCU, Module LCD), tổng hợp slide.
MỤC LỤC
GIỚI THIỆU VỀ UART
MSP430G2553 VÀ CHỨC NĂNG UART CỦA NÓ
GIỚI THIỆU KIT LAUNCHPAD
KHAI THÁC SỬ DỤNG UART TỪ KIT LAUNCHPAD VỚI MSP430G2553
CODE CHƯƠNG TRÌNH
1/ GIỚI THIỆU VỀ UART
UART hay Universal Asynchronous Receiver Transmitter là bộ truyền nhận nối tiếp bất đồng bộ.
Bit number
1
2
3
4
5
6
7
8
9
10
11
Start bit
5–8 data bits
Stop bit(s)
Start
Data 0
Data 1
Data 2
Data 3
Data 4
Data 5
Data 6
Data 7
Stop
Thiết bị UART cần kết hợp 1 thiết bị chuyển mức điện áp mới có thể tạo ra 1 chuẩn giao tiếp.
Ưu thế của truyền nối tiếp so với truyền song song: tốn ít port hơn.
Nhược điểm: cần có chuẩn thỏa hiệp giữa 2 bên, tốc độ chậm, dễ lỗi.
Các khái niệm trong truyền nối tiếp:
Tốc độ baud: như trong ví dụ trên về việc truyền 1 bit trong 1ms, bạn thấy rằng để việc truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham gia phải “thống nhất” nhau về khoảng thời dành cho 1 bit truyền, hay nói cách khác tốc độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud. Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây. Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~ 52.083us.
Frame (khung truyền): do truyền thông nối tiếp mà nhất là nối tiếp không đồng bộ rất dễ mất hoặc sai lệch dữ liệu, quá trình truyền thông theo kiểu này phải tuân theo một số quy cách nhất định. Bên cạnh tốc độ baud, khung truyền là một yếu tốc quan trọng tạo nên sự thành công khi truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data  cũng được quy định bởi khung truyền. Hình 1 là một ví dụ của một khung truyền theo UART, khung truyền này được bắt đầu bằng một start bit,  tiếp theo là 8 bit data, sau đó là 1 bit parity dùng kiểm tra dữ liệu và cuối cùng là 2 bits stop. 
Start bit: start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Ở module USART trong AVR, đường truyền luôn ở trạng thái cao khi nghỉ (Idle), nếu một chip AVR muốn thực hiện việc truyền dữ liệu nó sẽ gởi một bit start bằng cách “kéo” đường truyền xuống mức 0. Như vậy, với AVR bit start là mang giá trị 0 và có giá trị điện áp 0V (với chuẩn RS232 giá trị điện áp của bit start là ngược lại). start là bit bắt buộc phải có trong khung truyền.
Data: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận. Data không nhất thiết phải là gói 8 bit, với AVR bạn có thể quy định số lượng bit của data là 5, 6, 7, 8 hoặc 9 (tương tự cho hầu hết các thiết bị hỗ trợ UART khác). Trong truyền thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có ảnh hưởng lớn nhất (MSB – Most Significant Bit, bit bên trái). 
Parity bit: parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương đối). Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn  nghĩa là số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại tổng số lượng các số 1 trong parity lẻ luôn là số lẻ. Ví dụ, nếu dữ liệu của bạn là 10111011 nhị phân, có tất cả 6 số 1 trong dữ liệu này, nếu parity chẵn được dùng, bit parity sẽ mang giá trị 0 để đảm bảo tổng các số 1 là số chẵn (6 số 1). Nếu parity lẻ được yêu cầu thì giá trị của parity bit là 1. Hình 1 mô tả ví dụ này với parity chẵn được sử dụng. Parity bit không phải là bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền (các ví dụ trong bài này tôi không dùng bit parity).
Stop bits: stop bits là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu đã được gởi xong. Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bits bắt buộc xuất hiện trong khung truyền, trong AVR USART có thể là 1 hoặc 2 bits (Trong các thiết bị khác Stop bits có thể là 2.5 bits).  Trong ví dụ ở hình 1, có 2 stop bits được dùng cho khung truyền.Giá trị của stop bit luôn là giá trị nghỉ (Idle) và là ngược với giá trị của start bit, giá trị stop bit trong AVR luôn là mức cao (5V).  
2/ MSP430G2553 VÀ CHỨC NĂNG UART CỦA NÓ
Vi điều khiển( Micro controller unit – MCU ) là đơn vị xử lý nhỏ, nó được tích hợp toàn bộ các bộ nhớ như ROM , RAM , các port truy xuất , giao tiếp ngoại vi trực tiếp trên 1 con chip hết sức nhỏ gọn. Được thiết kế dựa trên cấu trúc VON-NEUMAN , đặc điểm của cấu trúc này là chỉ có duy nhất 1 bus giữa CPU và bộ nhớ (data và chương trình) , do đó mà chúng phải có độ rộng bit tương tự nhau.
MCU MSP430G2553 là sản phẩm của TI thuộc họ MSP430x2xx.
Chip MSP430 có kích thước nhỏ gọn , chỉ với 20 chân đối với kiểu chân DIP. 
3/ GIỚI THIỆU KIT LAUNCHPAD
Kit có thể hỗ trợ:
-1 mạch nạp code có cả debug
-1 dây cáp USB tốt để kết nối kit với máy tính.
-1 chip thạch anh 32,768kHz
-1 chip MSP430G2553 
-1 chip MSP430G2453
-1 header female.
Tất cả chỉ có 9,8 USD
4/ KHAI THÁC SỬ DỤNG UART TỪ KIT LAUNCHPAD VỚI MSP430G2553
Với kit Lauchpad : Hai Jumpers 4 và 5 kết nối giao diên UART của bộ chuyển đổi tới cổng đích P1.1 và P1.2. Hướng của đường tín hiệu UART được chọn bời định hướng của các jumper đính kèm. Trong định hướng theo chiều ngang, các jumpers kết nối TXD tới P1.1 và RXD tới P1.2, khi nó được sử dung cho các phần mềm giao tiếp UART trên các ứng dụng demo. Trong định hướng theo chiều thẳng đứng , các jumpers kết nối TXD tới P1.2 và RXD tới P1.1, theo yêu cầu của MSP430G2553 USCI.
Đặt cấu hình UART cho MSP430G2553
Cờ ngắt cho bộ truyền:Cớ ngắt UTXIFGx được đặt bởi transmitter để chỉ rằng thanh ghi UxTXBUF đã sẵn sàng nhận một ký tự mới. Một yêu cầu ngắt được hình thành nếu UTXIEx và GIE đều dược đặt lên. UTXIFGx sẽ tự đông bị xóa nếu yêu cầu ngắt đã được phục vụ hoặc nếu ký tự đã được ghi vào UxTXBUF.
Cờ ngắt cho bộ nhận: Cờ ngắt URXIFGx được đạt mỗi khi một ký tự được nhận và chép vào UxRXBUF. Một yêu cầu ngắt được hình thành nếu URXIEx và GIE đều được đặt lên. 
5/ CODE CHƯƠNG TRÌNH
#include "msp430g2553.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_2; // chọn xung clock SMCLK
UCA0BR0 = 104; 
UCA0BR1 = 0;
UCA0MCTL = UCBRS0; no modulation
UCA0CTL1 &= ~UCSWRST;giữ uart ở trạng thái hold xó nó về 0
IE2 |= UCA0RXIE;
__bis_SR_register(LPM0_bits + GIE);
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
while (!(IFG2&UCA0TXIFG));
UCA0TXBUF = UCA0RXBUF;
}
6/ Tài liệu tham khảo

File đính kèm:

  • docxde_tai_truyen_thong_uart_giua_2_mcu.docx
Tài liệu liên quan