Professional Documents
Culture Documents
0
1
0 010..1
DEVICE1 . DEVICE2 DEVICE1 DEVICE2
.
.
1
Clock Clock
ĐỒNG BỘ: Giữa 2 thiết bị Phát/Thu phải được đồng bộ bởi tín hiệu xung
Clock. Dữ liệu truyền theo 1 khối và tốc độ truyền không đổi.
BẤT ĐỒNG BỘ: Dữ liệu truyền theo từng byte với định dạng khung(frame).
Xung clock sử dụng để định dạng khung truyền.
Vì các tín hiệu ở ngõ ra của MCU theo chuẩn TTL nên khi giao tiếp giữa MCU
với máy tính qua cổng COM phải sử dụng bộ chuyển đổi mức điện áp(MAX232)
để tương thích với mức logic theo chuẩn RS232.
XCK0
USART SPI
/SS
MOSI
MISO
SCK
USART
RXD0
TXD0
RXD1
USART TXD1
XCK1 SDA
SCL
TWI(I2C)
Bài giảng môn Vi xử lý 6
GV: Lê Thị Kim Anh
Chương 8
MỘT SỐ VD GIAO TIẾP NỐI TIẾP VỚI MCU324P
SYSTEM CLOCK
1 0
Receive Shift REG Transmit Shift REG
RXD TXD
UCSRnA (Addr_MEM)
RXCn TXCn UDREn FEn DORn UPEn U2Xn MPCMn
Các cờ báo trạng thái truyền, nhân dôi tốc độ truyền hoặc chọn chế độ truyền
thông đa xử lý.
UCSRnB(Addr_MEM)
RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n
Cho phép giao tiếp UART,…
UCSRnC(Addr_MEM)
UMSELn1 UMSELn0 UPMn1 UPMn0 USBSn UCSZn1 UCSZn0 UCPOLn
Chọn MODE hoạt động, kiểm tra PARITY, số STOP bit, KHUNG truyền,..
UCSRnB
RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n
UCSRnC
UMSELn1 UMSELn0 UPMn1 UPMn0 USBSn UCSZn1 UCSZn0 UCPOLn
UCSRnC
UMSELn1 UMSELn0 UPMn1 UPMn0 USBSn UCSZn1 UCSZn0 UCPOLn
UBRRnH - - - - UBRR[11:8]
UBRRnL UBRR[7:0]
CHỌN TỐC ĐỘ TRUYỀN – BAUD RATE
𝟐𝐔𝟐𝐗 . 𝐅𝐎𝐒𝐂
BAUD RATE =
𝟏𝟔(𝐔𝐁𝐑𝐑+𝟏)
UDRn(Addr_MEM)
D7 D6 D5 D4 D3 D2 D1 D0
Lưu ý:
Phần cứng tự động đặt cờ UDREn=1 khi bộ đệm phát UDRn trống và xóa cờ
UDREn=0 khi ghi dữ liệu cần phát vào thanh ghi này.
Bài giảng môn Vi xử lý 21
GV: Lê Thị Kim Anh
Chương 8
NGUYÊN TẮC PHÁT 1 KHUNG DỮ LIỆU TỪ 5 ĐẾN 8BIT
VD1:Viết chương trình phát liên tục DATA=$F0 ra cổng nối tiếp USART0. Sử
dụng khung truyền 8 bit dữ liệu, 1 STOP bit, tốc độ baud 9600, tần số
fosc=8MHz, CKDIV8 = 1. Lần lượt thay đổi các điều kiện về PARITY: không có,
có parity chẳn hoặc lẻ và quan sát kết quả khung truyền trên đường truyền
TXD0.
GIẢI THUẬT:
- Gọi CTC khởi động USART0 theo yêu cầu.
- Xác định DATA cần truyền, nạp vào thanh ghi phù hợp và sử dụng CTC phát
DATA 8BIT để thực hiện việc truyền dữ liệu bằng cổng nối tiếp qua chân
TXD0.
LSB MSB
- PARITY CHẲN
- PARITY LẺ
UCSRnB
RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n
UDRn(Addr_MEM)
D7 D6 D5 D4 D3 D2 D1 D0
VD2:Viết chương trình phát liên tục khung 9 bit dữ liệu gồm: DATA=‘A’, BIT8=1
ra cổng nối tiếp USART0. Với 1 STOP bit, tốc độ baud 9600, tần số fosc =8MHz,
CKDIV8 = 1. Lần lượt thay đổi các điều kiện về PARITY:không có, có parity
chẳn hoặc lẻ và quan sát kết quả khung truyền trên đường truyền TXD0.
GIẢI THUẬT:
- Gọi CTC khởi động USART0 theo yêu cầu.
- Xác định DATA cần truyền, nạp vào thanh ghi phù hợp và sử dụng CTC phát
DATA 9BIT để thực hiện việc truyền dữ liệu bằng cổng nối tiếp qua chân
TXD0.
- PARITY CHẲN
- PARITY LẺ
UDRn(Addr_MEM)
D7 D6 D5 D4 D3 D2 D1 D0
- Chờ việc THU được hoàn thành bằng cách kiểm tra
N
cờ RCXn. RXCn=1
Y
- Đọc các cờ trạng thái để kiểm tra và báo lỗi nếu cần.
DATA =UDRn
- Đọc DATA thu được từ thanh ghi UDRn.
Lưu ý:
Cờ RXCn=1 báo bộ đệm thu UDRn thu đủ số bit dữ liệu và chờ đọc. Khi đọc bộ
đệm thu UDRn, phần cứng tự động xóa cờ XCn=0.
Bài giảng môn Vi xử lý 28
GV: Lê Thị Kim Anh
Chương 8
CÁC TRẠNG THÁI BÁO LỖI
UCSRnA
RXCn TXCn UDREn FEn DORn UPEn U2Xn MPCMn
Các cờ báo trạng thái được đặt lên 1 khi có lỗi xảy ra.
- Bit FEn: báo khi có lỗi khung truyền xảy ra. Tương ứng với trạng thái STOP
BIT đầu tiên nhận được trong khung truyền là 0.
- Bit DORn: báo lỗi bộ đệm thu đầy(nhận 2 ký tự). Tương ứng với trạng thái 1
ký tự mới đang chờ trong thanh ghi dịch thu (Receive Shift Register) và xuất
hiện START BIT của ký tự mới .
- Bit UPEn = 1: khi có lỗi PARITY xảy ra trong trường hợp có sử dụng chức
năng kiểm tra chẵn lẻ
UCSRnB
RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n
LƢU Ý: N RXCn=1
Cách THU cũng tương tự việc PHÁT khung dữ liệu 9 Y
TT=FEn,DORn,UPEn
bit. Nhưng việc đọc dữ liệu thu phải theo đúng thứ tự
sau: BIT8= RXB8n
1. TK mạch liên tục kiểm tra trạng thái của SW, nếu có tác động NHẤN/NHẢ của
SW thì đọc dữ liệu là mã nhị phân 8bit từ các DIPSW, sau đó chuyển sang mã
Gray và gửi ra UART.
2. TK mạch liên tục kiểm tra trạng thái của SW, nếu có tác động NHẤN/NHẢ của
SW thì đọc dữ liệu 8bit từ 8 DIP_SW và kiểm tra dữ liệu nhận được, chỉ khi dữ
liệu này là một số dương thì mới gửi ra cổng UART.
3. TK mạch nhận dữ liệu từ UART, kiểm tra dữ liệu nhận được nếu là các ký tự
số từ 0 – 9 thì xuất ra led 7 đoạn, ngược lại xuất ra barled. với các yêu cầu cho
led 7 đoạn trong 2 trường hợp như sau:
- Led 7 đoạn là loại anode chung, giải mã bằng phần cứng.
- Led 7 đoạn là loại cathode chung, giải mã bằng phần mềm.
Bài giảng môn Vi xử lý 32
GV: Lê Thị Kim Anh
BÀI TẬP:
Trong các BT sau sử dụng các USART hoạt động ở chế độ BẤT ĐỒNG BỘ, hệ
thống có FOSC=8MHz, CKDI8=1, VU2X=0.
4. TK hệ thống VXL sử dụng vi điều khiển MCU324P hoạt động như sau:
- Khi có tác động NHẤN/NHẢ của 1 SW_ĐK thì xuất chuỗi “DATA IN:” lên
LCD.
- Sau đó đọc dữ liệu từ PORTA và đồng thời hiển thị lên LCD
- Thực hiện kiểm tra dữ liệu này nếu là ký tự chữ hay số thì xuất ra UART,
ngược lại xuất chuỗi “ERROR” lên LCD và quay về kiểm tra trạng thái của
SW_ĐK từ đầu.
5. TK mạch nhận dữ liệu là 1 số không dấu từ UART, kiểm tra dữ liệu nhận được
nếu là 1 số lẻ thì xuất ra PortC, ngược lại đổi sang số thập phân và hiển thị giá
trị lên led 7 đoạn.