Professional Documents
Culture Documents
KHOA CƠ KHÍ
Mục tiêu môn học
o Trang bị cho sinh viên các kiến thức cơ bản về vi xử lý, vi điều
khiển bao gồm: định nghĩa, cấu trúc, các thành phần quan
trọng, cách xử lý và biểu diễn thông tin trong hệ vi xử lý – vi
điều khiển.
o Trang bị các kiến thức cơ bản về board mạch phát triển Arduino
bao gồm: cấu hình phần cứng, cách lập trình nhập xuất tín hiệu
số, tương tự, xử lý ngắt, các truyền thông cơ bản UART, I2C,
SPI, các ứng dụng phổ biến như điều khiển động cơ Servo,
động cơ DC, …
o Sau khi học xong kiến thức lý thuyết, sinh viên có khả năng lập
trình xử lý các bài toán cơ bản sử dụng vi điều khiển, tạo tiền
đề cho việc tiếp cận bài toán phức tạp hơn.
Bộ môn Kỹ thuật Cơ điện tử
Nội dung môn học
o Vi xử lý không có khả năng giao tiếp trực tiếp với các thiết bị ngoại vi,
nó chỉ có khả năng nhận và xử lý dữ liệu.
o Vi xử lý kết hợp với các thiết bị khác được sử trong các hệ thống lớn,
phức tạp đòi hỏi phải xử lý một lượng lớn các phép tính phức tạp, có
tốc độ nhanh: các hệ thống sản xuất tự động trong công nghiệp, các
tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức
tạp v.v...
o Hãng Apple đã công bố chip A12 Bionic 7nm chứa đến 6.9 tỷ
bóng bán dẫn.
o Intel 8051
o Atmel AVR (8 bit), AVR32 (32 bit), AT91SAM (32 bit)
o PIC (8 bit PIC16, PIC18, 16-bit dsPIC/ PIC24)
o STMicroelectronics STM8S (8 bit), ST10 (16 bit), STM32 (32 bit)
o Texas Instruments Microcontrollers MSP430 (16 bit), C2000 (32 bit)
Bộ môn Kỹ thuật Cơ điện tử 1.1. Giới thiệu chung về vi xử lý – vi điều khiển
Một số loại vi điều khiển phổ biến
Bộ môn Kỹ thuật Cơ điện tử 1.2. Cấu trúc chung của hệ vi xử lý – vi điều khiển
1.2.1. Sơ đồ khối hệ vi xử lý
Data Bus
Control Bus
Input
Memory Devices
I/O
CPU ROM
Interfacing Output
RAM
Devices
Address Bus
Sơ đồ khối hệ vi xử lý
Bộ môn Kỹ thuật Cơ điện tử 1.2. Cấu trúc chung của hệ vi xử lý – vi điều khiển
1.2.2. Sơ đồ khối vi điều khiển
Interrupt Timers
Control
Registers RAM ROM Counter
CPU
Bus Serial
Oscillator
Control I/O Port
Port
Đơn vị số
Các
học và Bus
thanh
logic nội
ghi nội
ALU
Bộ môn Kỹ thuật Cơ điện tử 1.2. Cấu trúc chung của hệ vi xử lý – vi điều khiển
So sánh Vi xử lý và Vi điều khiển
Câu hỏi 1: Tìm hiểu cấu trúc CISC, Von – Neumann, RISC,
Harvard
Câu hỏi 2: Sự khác biệt giữa Vi xử lý và vi điều khiển?
Bộ môn Kỹ thuật Cơ điện tử 1.2. Cấu trúc chung của hệ vi xử lý – vi điều khiển
1.3. Giới thiệu về Arduino
và vi điều khiển ATmega328p
1.3.1. Giới thiệu Arduino
o Giá rẻ: các bo mạch Arduino khá rẻ so với các nền tảng vi điều
khiển khác.
o Đa nền tảng: phần mềm Arduino IDE có thể chạy trên các hệ điều
hành Windows, Macintosh OSX và Linux.
o Môi trường lập trình đơn giản: phần mềm Arduino IDE khá dễ tiếp
cận cho người mới bắt đầu cũng như các người dùng nâng cao.
Bộ môn Kỹ thuật Cơ điện tử 1.3. Giới thiệu về Arduino và vi điều khiển ATmega328P
1.3. Giới thiệu về Arduino
và vi điều khiển ATmega328p
1.3.1. Giới thiệu Arduino
Bộ môn Kỹ thuật Cơ điện tử 1.4. Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển
1.4. Định dạng dữ liệu và biểu diễn
thông tin trong hệ vi xử lý – vi điều khiển
1.4.2. Hệ đếm
Hệ thập phân
o Là hệ đếm dùng số 10 làm hệ số
o Đây là hệ đếm được sử dụng rộng rãi nhất trong cuộc sống
ngày nay
o Hệ sử dụng các chữ số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 để biểu diễn
giá trị của số.
o Ngoài ra còn sử dụng với dấu “+” và “−” để biểu đạt giá trị
dương hoặc âm.
Bộ môn Kỹ thuật Cơ điện tử 1.4. Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển
1.4. Định dạng dữ liệu và biểu diễn
thông tin trong hệ vi xử lý – vi điều khiển
1.4.2. Hệ đếm
Hệ nhị phân
o Là hệ đếm dùng số 2 làm hệ số
o Hệ đếm được sử dụng rộng rãi trong máy tính, các bộ xử lý.
o Hệ sử dụng hai chữ số 0 và 1 để biểu diễn giá trị của số,
o Các giá trị 0 và 1 còn mang ý nghĩa về mặt logic điện áp:
điện áp mức cao (3.3𝑉, 5𝑉, 24𝑉) ~ mức logic 1
điện áp mức thấp (0𝑉) ~ mức logic 0.
o Khi biểu diễn trong C/C++, các biểu diễn nhị phân sẽ được thêm
tiền tố “0𝑏” để được nhận dạng. Ví dụ: 0𝑏1010, 0𝑏1111.
Bộ môn Kỹ thuật Cơ điện tử 1.4. Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển
1.4. Định dạng dữ liệu và biểu diễn
thông tin trong hệ vi xử lý – vi điều khiển
1.4.2. Hệ đếm
Hệ bát phân
o Là hệ đếm dùng số 8 làm hệ số
o Hệ sử dụng các chữ số 0, 1, 2, 3, 4, 5, 6, 7 để biểu diễn giá
trị của số,
o Khi biểu diễn trong C/ C++, các biểu diện bát phân sẽ được
thêm tiền tố “0” để được nhận dạng.
Ví dụ: 045, 076, 06210.
Bộ môn Kỹ thuật Cơ điện tử 1.4. Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển
1.4. Định dạng dữ liệu và biểu diễn
thông tin trong hệ vi xử lý – vi điều khiển
1.4.2. Hệ đếm
o Với các chỉ số lớn 10, hệ sử dụng các chữ cái để thay thế:
𝐴 ↔ 10, 𝐵 ↔ 11, 𝐶 ↔ 12, 𝐷 ↔ 13, 𝐸 ↔ 14, 𝐹 ↔ 15.
o Khi biểu diễn trong C/ C++, các biểu diễn thập lục phân sẽ
được thêm tiền tố “0𝑥” để được nhận dạng.
Toán tử | thực hiện phép toán OR giữa các bit của hai giá trị
Toán tử ~ thực hiện phép đảo giá trị logic các bit của giá trị.
Toán tử ^ thực hiện phép toán XOR giữa các bit của hai giá trị.
Bộ môn Kỹ thuật Cơ điện tử 1.4. Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển
1.4. Định dạng dữ liệu và biểu diễn
thông tin trong hệ vi xử lý – vi điều khiển
Bài tập
1) Chuyển các số sau sang hệ nhị phân: 10D, 105D, 213D,
1234D, 16H
2) Chuyển các số sau sang hệ thập phân: 111011B, 15H, 120H.
3) Tính giá trị c, d, e, f, g, h trong đoạn code sau, giải thích:
int a, b, c, d, e, f, g;
a = 0x7B; b = 255;
c = a & b; d = a | b; e = a ^ b;
f = a << 2; g = b >> 2; h = ~a;
Bộ môn Kỹ thuật Cơ điện tử 1.4. Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển
Chương 2: Arduino Uno
và Arduino IDE
Thanh công cụ
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.1. Biến, hằng số, kiểu dữ liệu
Các giá trị hằng số hay gặp:
Giá trị điện áp: HIGH / LOW: giá trị điện áp mức cao và mức thấp,
phụ thuộc vào board được sử dụng. Ví dụ, ở trên Arduino Uno, HIGH
≈ 5𝑉, LOW ≈ 0𝑉.
Cấu hình chân cho lệnh pinMode():
o INPUT: cấu hình chân đang sử dụng là đầu vào
o OUTPUT: cấu hình chân đang sử dụng là đầu ra
o INPUT_PULLUP: cấu hình chân đang sử dụng là đầu vào có điện
trở kéo lên.
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.1. Biến, hằng số, kiểu dữ liệu
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.1. Biến, hằng số, kiểu dữ liệu
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.2. Cấu trúc
Các cấu trúc điều khiển thường gặp trong lập trình cho Arduino IDE
if
if...else
switch / case
for
while
break
continue
return
goto
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.2. Cấu trúc
Các cú pháp mở rộng thường gặp trong lập trình cho Arduino IDE
; (dấu chấm phẩy): kết thúc một dòng lệnh
{} (dấu ngoặc nhọn): giới hạn một nhóm lệnh
//: tạo dòng chú thích
/* */: tạo nhiều dòng chú thích
#define: khai báo macro, gần giống với việc khai báo hằng
#include: khai báo thư viện có sẵn
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.2. Cấu trúc
Các toán tử thường gặp trong lập trình cho Arduino IDE
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.2. Cấu trúc
Các phép toán hợp nhất thường gặp trong lập trình cho Arduino IDE
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.3. Hàm và thủ tục
Một số hàm được sử dụng phổ biến trong Arduino IDE
o pinMode(pin, mode)
o digitalWrite(pin, value)
o digitalRead(pin)
o analogReference(type)
o analogRead(pin)
o analogWrite(pin, value)
o millis()
o delay(x)
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.4.3. Hàm và thủ tục
Một số hàm được sử dụng phổ biến trong Arduino IDE
o Serial.begin(speed, config)
o Serial.print(val, format)
o Serial.read()
o exp(x)
o log(x)
o ceil(x)
o floor(x)
o sin(x)
o cos(x)
Bộ môn Kỹ thuật Cơ điện tử 2.4. Ngôn ngữ lập trình trên Arduino IDE
2.5. Mô phỏng Arduino trên Proteus
2.5.1. Phần mềm Proteus
Proteus là một phần mềm được sử dụng
để mô phỏng hoạt động của các mạch
điện tử bao gồm phần thiết kế mạch và
viết chương trình điều khiển cho các họ vi
điều khiển như MCS-51, PIC, AVR, …
Phần mềm bao gồm 2 chương trình: ISIS
(Intelligent Schematic Input System) cho
phép mô phỏng mạch và ARES
(Advanced Routing and Editing Software)
dùng để vẽ mạch in.
Bộ môn Kỹ thuật Cơ điện tử 2.5. Mô phỏng Arduino
2.5. Mô phỏng Arduino trên Proteus
2.5.1. Phần mềm Proteus
Hướng dẫn
o Các linh kiện phần cứng: 02 LED (đỏ và xanh), 02 điện trở 220 Ω, bo
mạch test board, board Arduino Uno R3, dây nối.
o Sơ đồ mạch:
LED màu đỏ gắn vào chân số 13.
LED màu xanh được gắn vào chân số 12.
Hai LED này sẽ được gắn thêm điện trở để hạn chế dòng điện
qua LED.
o Gợi ý: sử dụng lệnh digitalWrite() và delay().
o Sơ đồ mạch:
LED 7 thanh được sử dụng là loại cathode chung.
Các chân của LED 7 thanh: a, b, c, d, e, f, g, h sẽ nối vào
các chân từ chân 2 đến chân 9 của Arduino.
Các chân này sẽ được gắn thêm điện trở hạn dòng 220 Ω để
hạn dòng điện qua LED.
Yêu cầu: Hai LED được nối chung các chân điều khiển vào
Arduino, sử dụng phương pháp quét LED để lập trình.
5V
T on T off
0V
T period
o PWM (Pulse Width Modulation) hay còn gọi là phương pháp điều chế
độ rộng xung là một kỹ thuật thường được dùng để điều chế điệp áp
với một mức xác định.
o Chúng thường được dùng trong các bộ điều khiển tốc độ đông cơ,
điều áp, cách mạch boost, buck, nghịch lưu, điều khiển công suất, …
void loop() đến câu lệnh cuối cùng ra được lặp lại.
{ o Phương pháp này gọi là phương pháp
Task_1();
Task_2(); thăm dò – hỏi vòng (Polling)
… Ưu điểm: đơn giản, dễ thực hiện
Task_N();
} Nhược điểm: tốn thời gian, gây ra chậm
trễ trong xử lý công việc.
trong đó:
o interrupt, digitalPinToInterrupt(pin) -> số thứ tự của ngắt
tương ứng với chân sử dụng.
Với Arduino Uno, chân số 2 giá trị này là INT0, chân số 3 là
INT1.
Để tránh nhầm lẫn khi sử dụng các Arduino có nhiều chân ngắt
hơn → sử dụng hàm: digitalPinToInterrupt(pin)
o ISR -> hàm được gọi khi có sự kiện ngắt
RC Servo
VS Servo System
/ Hobby Servo
Servo SG 90
o Điện áp hoạt động: 4.8 – 5 VDC
o Moment xoắn: 1.6 kgf.cm
o Kích thước: 21x12x22mm
o Trọng lượng: 9g.
Cánh tay
robot
Module L298
o Driver: L298N tích hợp hai mạch cầu H.
o Điện áp điều khiển: +5 V ~ +12 V
o Dòng tối đa cho mỗi cầu H là: 2A
o Điện áp của tín hiệu điều khiển: +5 V ~
+7 V
o Dòng của tín hiệu điều khiển: 0 ~ 36mA
o Công suất hao phí: 20W (khi nhiệt độ T
= 75 ℃)
Bài tập 2: Sử dụng biến trở để điều khiển tốc độ của động cơ,
nhấn nút bấm để đảo chiều động cơ.
Yêu cầu điều khiển:
o Xoay biến trở thì tốc độ của động cơ thay đổi theo, ví dụ xoay
ngược chiều kim đồng hồ thì tốc độ giảm dần, xoay theo chiều
kim đồng hồ thì tốc độ động cơ tăng dần.
o Nhấn nút thì chiều quay của động cơ bị đảo ngược lại.
D7 D7
D6 D6
D5 D5
D4 D4
SENDER D3 D3 RECEIVER
D2 D2
D1 D1
D0 D0
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.1. Giới thiệu về truyền thông dữ liệu
D7 D6 D5 D4 D3 D2 D1 D0
SENDER RECEIVER
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.1. Giới thiệu về truyền thông dữ liệu
o Truyền thông dữ liệu song song (Paralle Communication) tuy
nhanh nhưng tốn kém vì chúng cần nhiều phần cứng và dây dẫn
hơn.
o Truyền thông song song được sử dụng trong máy in kiểu cũ, giao
tiếp RAM, PCI, …
o Truyền thông dữ liệu nối tiếp (Serial Communication) tuy tốc độ
chậm hơn nhưng cần ít mạch và dây hơn dẫn đến chi phí ít hơn.
o Với sự phát triển của công nghiệp bán dẫn, các IC này ngày càng trở
nên nhanh hơn do đó truyền thông song song trở thành nút thắt cổ
chai trong quá trình giao tiếp giữa các thiết bị.
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.1. Giới thiệu về truyền thông nối tiếp
o Truyền dữ liệu nối tiếp có nhiều tiện ích trong vi điều khiển nên hầu
hết các loại vi điều khiển đều tích hợp.
o Có nhiều kiểu truyền dữ liệu phổ biến tích hợp trong các họ vi điều
khiển, bao gồm:
Truyền dữ liệu nối tiếp bất đồng bộ UART (Universal
Asynchronous Receiver Transmitter).
Truyền dữ liệu giữa các vi điều khiển với các thiết bị ngoại vi SPI
(Serial Peripheral Interface)
Truyền dữ liệu 2 dây I2C hoặc 𝐈 𝟐 𝐂 (Inter – Integrated Circuit).
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.2. Chuẩn giao tiếp UART
TX TX
RX RX
GND GND
UART UART
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.2. Chuẩn giao tiếp UART
Arduino UNO (chủ) gửi lệnh đến Arduino Nano (tớ) để điều khiển các đèn LED
(thiết bị ngoại vi).
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.2. Chuẩn giao tiếp UART
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.3. Các hàm xử lý truyền thông UART
Các hàm đọc dữ liệu:
o Serial.read() -> đọc dữ liệu truyền đến.
o Serial.readBytes() -> đọc dữ liệu từ cổng Serial vào trong một
bộ nhớ đệm.
o Serial.readBytesUntil() -> đọc dữ liệu từ bộ nhớ đệm vào một
mảng.
o Serial.readString() -> đọc dữ liệu từ bộ nhớ đệm vào đối tượng
String.
o Serial.readStringUntil() -> tương tự Serial.readString()
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
Bài tập 3: Xuất bảng mã ASCII đọc được, ví dụ Examples/
04.Communication/ ASCIITable
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
Bài tập 4: Vẽ đồ thị trên Serial Plotter
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
Bài tập về nhà: Vẽ nhiều đồ thị trên Serial Plotter
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
Bài tập 5: Bật tắt đèn theo lệnh gửi từ Serial Monitor
Yêu cầu điều khiển: Gửi lệnh đến Arduino bật tắt đèn theo cấu
trúc:
<kí tự 1> <dấu cách/dấu phẩy> <kí tự 2>
kí tự 1 -> thứ tự của đèn muốn tác động
kí tự 2 -> tác động lên đèn: 1 -> bật đèn, 0 -> tắt đèn
Nếu kí tự 1 là chữ ‘a’ thì tất cả các đèn đều có chung một
tác động từ lệnh gửi từ Serial Monitor
Gửi lại lên màn hình trạng thái đèn nào vừa được tác động.
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.4. Chuẩn giao tiếp I2C
VCC
Rp Rp
SDA
SCL
GND
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3. Truyền dữ liệu chuẩn
UART, I2C và SPI
4.3.4. Chuẩn giao tiếp I2C
o I2C (Inter – Integrated Circuit): là chuẩn giao tiếp truyền thông
dữ liệu nối tiếp đồng bộ, được phát triển bởi hãng điện tử
Philips Semiconductors cho phép giao tiếp một thiết bị chủ với
nhiều thiết bị tớ.
o Sử dụng rộng rãi cho giao tiếp giữa vi điều khiển và mảng cảm
biến, các thiết bị hiển thị, thiết bị IoT, EEPROMs, v.v …
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3.4 Chuẩn giao tiếp I2C
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3.4 Chuẩn giao tiếp I2C
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3.6 Chuẩn giao tiếp SPI
SCLK
MISO
MOSI
SCLK
SCLK
MISO
MISO
MOSI
MOSI
MOSI
MISO
SCLK
SS
SS1
SS2
SS3
SS
SS
Master Slave Slave Slave
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3.6 Chuẩn giao tiếp SPI
o SPI (Serial Peripheral Bus) là một chuẩn truyền thông nối tiếp tốc độ
cao do hãng Motorola đề xuất.
o Đây là kiểu truyền thông Master – Slave, trong đó có 1 chip Master
điều phối quá trình truyền thông và các chip Slave được điều khiển
bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave.
o Bus giao tiếp SPI thường được sử dụng để giao tiếp vi xử lý hoặc vi
điều khiển với bộ nhớ như EEPROM, RTC (Real–Time Clock), ADC,
DAC, màn hình LCD, IC âm thanh, các loại cảm biến như nhiệt độ và
áp suất, thẻ nhớ như MMC hoặc thẻ SD hoặc thậm chí các bộ vi điều
khiển khác.
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3.6 Chuẩn giao tiếp SPI
o SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một
thời điểm quá trình truyền và nhận có thể xảy ra đồng thời.
o SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường
giao tiếp trong chuẩn này đó:
SCK – Serial Clock
MISO – Master Input Slave Output
MOSI – Master Ouput Slave Input
SS – Slave Select.
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3.7 Các hàm xử lý
truyền thông SPI
o Có rất nhiều thư viện phục vụ cho việc truyền thông SPI, thông
thường các thư viên này được viết riêng cho các thiết bị Slave để
có thể giao tiếp hiệu quả hơn với Master (Arduino).
o Thư viên chuẩn giao tiếp SPI trong Arduino là “SPI.h”, đây là thư
viên built-in trong Arduino IDE. Cú pháp:
#include <SPI.h>
o Một số hàm hay được sử dụng trong thư viện:
SPI.beginTransaction()
SPI.endTransaction()
SPI.transfer() hoặc SPI.transfer16()
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI
4.3.7 Các hàm xử lý
truyền thông SPI
Bộ môn Kỹ thuật Cơ điện tử 4.3. Truyền thông dữ liệu chuẩn UART, I2C và SPI