Tải bản đầy đủ (.pptx) (23 trang)

Báo cáo bài tập lớn giao tiếp máy tính giao tiếp rs232 – i2c can

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.79 MB, 23 trang )

Báo cáo bài tập lớn giao tiếp máy tính
GIAO TIẾP RS232 – I2C - CAN

Danh sách thành viên:
Trịnh Hoài Nam
Lê Mộng Hải Hoàng
Nguyễn Hoàng Huân


I) Giao tiếp RS232
1) Giới thiệu
)Là chuẩn giao tiếp giữa vi điều khiển và máy tính rất phổ thông hiện nay do đơn giản, sễ lập trình đồng thời có thể tương thích tốt với các ngoại vi.
)Các dòng vi điều khiển hiện nay hầu hết đều được trang bị các chân giao tiếp RS232 là TX và RX.
)Những dòng MCU tầm thấp và trung (89c51 hay PIC12F/16F hay Atmega 328) thì có 1 cổng. Những dòng MCU cấp cao (ARM hay PIC24F hay Atmega 2560) thì có
thể lên đến 4 cổng


 Các MCU tầm trung và tầm thấp cùng các chân giao tiếp RS232

 Atmega 89C51

 ATmega328

 PIC16F887


 Các MCU tầm cao cùng các chân giao tiếp RS232

 Texas Instruments LM4F120H5QR
 ATMEL Atmega 2560



2) Các câu lệnh lập trình trên Arduino
 Serial.begin(speed, config): khởi tạo





Speed: tốc độ Baud
Config: cài đặt số data, parity, stop bit
Vd: Serial2.begin(115200, SERIAL_7N1): tốc độ Baud 115200, 7 bit data

 Serial.println(value, format): gửi data





Value: giá trị cần gửi, có thể là kiểu string, int,….
Format: định dạng, như HEX, DEC, BIN, OCT
Vd: Serial.println(“CMNR”); Serial3.println(giatri_ADC, BIN)

 Serial.read(): đọc byte đầu tiên từ máy tính gửi xuống



Vd: dieu_khien = Serial.read()

 Serial.readBytes(): đọc nhiều byte kí tự trong bộ đệm



3) Các câu lệnh lập trình trên CCS

 #use rs232 (options): khởi tạo chuẩn truyền RS232 cho MCU như baud rate, start bit, stop bit, số bit truyền, chân MCU truyền/nhận data và parity



Vd: #use rs232(baud=9600,Parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

 getc(): nhận về được kí tự truyền qua RS232



Vd: ki_tu = getc();

 putc(): gửi đi chuỗi kí tự qua RS232



Vd: for ( i = 0; i<= 10; i++)
{ putc(mang[i]) };

 printf(value, option), printf(“…..”, value,option): gửi một chuỗi, giá trị của biến lên máy tính với các định dạng trong option.



Vd: printf(“Pro VL"); printf(“Gia tri cam bien: %2u \n\r “, ADC )


II) Giao tiếp I2C


1)

Giới thiệu

)Là chuẩn giao tiếp giữa các vi điều khiển với nhau hay giữa vi điều khiển với các chip ngoại vi như EEPROM, IC thời gian thực DS1307…
)Chỉ có ở các MCU tầm trung theo cấu trúc Havard
)Gồm 1 chân xung clock (SCL) và 1 chân truyền dữ liệu SDA
)Tốc độ truyền: từ 10Kbit/s đến 3.4Mbit/s, tốc độ thường dùng (standard mode): 100Kbit/s
)Khoảng cách truyền: ngắn, trong phạm vi 1 board mạch.


 Các MCU tầm trung cùng các chân giao tiếp I2C

 PIC18f4620

 Atmega 32u4


 Các MCU tầm cao cùng các chân giao tiếp I2C

 PIC24FJ64

 Texas Instruments LM4F120H5QR


2) Các câu lệnh lập trình trên Arduino

 Wire.begin(): khởi tạo I2C bus là master
 Wire.beginTransmission(address): truyền lệnh cho slave có địa chỉ address.




Vd: Wire.beginTransmission(1): truyền lệnh cho slave có địa chỉ trên bus là 1.

 Wire.write(value) : truyền giá trị value cho slave có địa chỉ đã định



Vd: Wire.write(dieukhien_LED)

 Wire.read(): nhận giá trị được truyền trên bus



Vd: x = Wire.read()

 Wire.endTransmission(): dừng truyền, restart bus.
 Wire.requestFrom(address, quantity, stop): yêu cầu slave
có address gửi data có số bit là quantity; nếu stop = true thì
stop truyền, trả lại bus trống, nếu stop = false
thì restart quá trình truyền nhận data.



Vd: Wire.requestFrom(1, 8)


3) Các câu lệnh lập trình trên CCS


 #use i2c(option): khởi tạo chuẩn truyền i2c cho MCU như là master/slave, địa chỉ của slave, các chân kết nối…



Vd: #use i2c(master, sda=PIN_C4, scl=PIN_C3, force_hw)

 i2c_start(): khởi tạo, chuẩn bị truyền dử liệu lên bus i2c
 i2c_stop(): dừng truyền/nhận dữ liệu, cho bus i2c rảnh
 i2c_write(address), i2c_write(data): gửi lệnh đến slave có địa chỉ trên bus là address hay có thể là 1 byte data



Vd: i2c_write(0xA0); i2C_write(LED);

 i2C_read(): nhận về data được gửi trên bus



Vd: giatri = i2c_read();


III) Giao tiếp CAN
1) Giới thiệu:

 Là chuẩn truyền có khoảng cách truyền là xa nhất và ổn định nhất hiện nay
 Tốc độ truyền: I2C < CAN < SPI
 Cơ chế kiểm tra lỗi phức tạp nhờ vậy dữ liệu truyền/nhận rất chính xác.
 Chỉ có trên các MCU tầm cao hay các MCU có modun chuyên biệt (PIC18Fxx80), các MCU khác muốn giao tiếp CAN phải dùng MCP2515



 Các MCU cùng các chân giao tiếp CAN

 Dòng PIC18F có 1 modun CAN

 Dòng ARM M4 có 3 modun CAN


2) Mạch CAN 2 node


IV) Demo ứng dụng
1) Giao tiếp giữa RS232 giữa máy tính và Arduino

)Nhập số thứ tự nào trên máy tính thông qua giao diện COM thì con LED ứng với số thứ tự đó sáng.


2) Giao tiếp I2C giữa Arduino và DS1307

 Nạp thời gian trong máy tính vào DS1307 sau đó đọc thời gian do DS1307 đếm rồi hiển thị lên máy tinh thông qua giao diện COM


3) Giao tiếp Arduino và EEPROM

 Nạp giá trị vào eeprom sau đó ngắt điện. Cấp điện lại cho eeprom rồi đọc giá trị trong eeprom và hiển thị lên máy tính thông qua giao diện COM


4) Giao tiếp i2c giữa 2 board Arduino

 Nhận lệnh từ máy tính, master truyền dữ liệu cho slave làm sáng LED ứng với số được nhập từ máy tính.
 Nút nhấn được nối với 1 chân của slave, khi nhấn nút, slave truyền tín hiệu cho master rồi hiển thị lên máy tính thông qua giao diện COM



5) Giao tiếp i2c giữa PIC điều khiển LED

 Nhập số thứ tự trên máy tính thông qua giao diện COM thì master sẽ cho LED sáng theo số thứ tự nhập xuống.
 Master gửi lệnh cho slave sáng LED


6) Giao tiếp i2C giữa PIC và EEPROM

 PIC đọc giá trị AD, ta có thể chọn ô nhớ eeprom để ghi vào. Có thể chọn chế độ đọc hay ghi. Kết quả sẽ hiển thị lên LCD


5) Giao tiếp i2c giữa PIC điều khiển động cơ RC servo

 Điều khiển góc mà động cơ muốn quay từ máy tính thông qua giao diện COM, nhận lệnh từ máy tính, master truyền lệnh qua slave, slave điều khiển động cơ.


7) Giao tiếp CAN 2 node

 Node 1 cứ mỗi 1s thì lại gửi request. Node 2 đọc giá trị AD rồi gửi tín hiệu lại cho Node 1. Node 1 nhận giá trị AD do node 2 gửi về rồi hiển thị lên máy tính


Cảm ơn các bạn đã chú ý lắng nghe

 Copyright 2013
 Protected by law
 Unauthorized copy is restricted




×