1. Trang chủ
  2. » Giáo án - Bài giảng

Bài Giảng Hệ Thống Nhúng ( Combo Full Slides 5 Chương )

334 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Giảng Hệ Thống Nhúng ( Combo Full Slides 5 Chương )
Trường học Trường Đại Học
Chuyên ngành Hệ Nhúng
Thể loại bài giảng
Năm xuất bản 2025
Thành phố Thành Phố
Định dạng
Số trang 334
Dung lượng 8,59 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chng T˚ng quan v˚ h˚ nhúng (3T) 3. Vi (6T) Chng Thi˚tk˚ph˚nc˚ngh˚ 4. trình vi Chng i˚ukhi˚n nhúng Arm Linux (15T) Chng L˚p i˚ukhi˚n (12T) Chng H˚ B{i t˚p L˚p trình vi i˚u khi˚n mô ph˚ng Proteus Thí nghi˚m H˚ nhúng Arm Linux (03 b{i)

Trang 1

Môn học

HỆ NHÚNG

Trang 2

Giới thiệu môn học

 Hệ nhúng IT4210 (3-0-1-6)

 Thời lượng: 45 LT&BT + 15 TN

• Kiến trúc m|y tính

• Vi xử lý

• Lập trình C

Trang 3

Nội dung

Chương 1 Tổng quan về hệ nhúng (3T)

Chương 2 Thiết kế phần cứng hệ nhúng (6T)

Chương 3 Vi điều khiển (6T)

Chương 4 Lập trình vi điều khiển (12T)

Chương 5 Hệ nhúng Arm Linux (15T)

B{i tập: Lập trình vi điều khiển, mô phỏng Proteus Thí nghiệm: Hệ nhúng Arm Linux (03 b{i)

Trang 4

Mục tiêu môn học

 Nắm được kiến trúc tổng quan, đặc điểm v{ hoạt

động của một hệ nhúng

 Biết thiết kế hệ nhúng cơ bản (nguyên lý, mạch)

 Nắm được kiến trúc vi điều khiển

 Biết lập trình vi điều khiển từ cơ bản đến n}ng cao với c|c dòng vi điều khiển phổ biến

 Nghiên cứu ph|t triển hệ nhúng ARM Linux với c|c giao tiếp v{o ra cơ bản, n}ng cao, cơ chế x}y dựng device driver

 L{m quen với nền tảng lập trình Qt cho hệ nhúng ARM Linux

Trang 5

T{i liệu tham khảo

Books:

• Architecture and Programming of 8051 Microcontrollers, Milan Verle

• Embedded C, Micheal J.Pont, 2002

• Designing embedded hardware, John Catsoulis, 2005

• Introduction to Embedded Systems, Lee & Seshia, UC Berkeley, 2011

• Embedded Systems Architecture: A Comprehensive Guide for Engineers

and Programmers, Tammy Noergaard

• Linux Device Driver

• C++ GUI programming with QT

Trang 7

1.1 Giới thiệu về hệ nhúng

Hệ nhúng (Embedded System) ?

cơ khí và các thành phần khác để thực hiện một chức

(thường là vi điều khiển, vi xử lý, …) mà người sử dụng nhìn chung thường không nhận thức được đó là một hệ

thống dựa trên máy tính (Michael J Pont, Embedded

C)

Trang 8

Giới thiệu về hệ nhúng

 Embedded Systems (ES) = information processing systems embedded into a larger product

8

Trang 9

Giới thiệu về hệ nhúng

 Sơ đồ khái quát của một hệ nhúng

 C|c th{nh phần cơ bản tạo nên một hệ nhúng:

• Bộ vi xử lý

• Phần mềm trong bộ nhớ chính, có thể nằm trên cùng

một chip với bộ vi xử lý hoặc nằm ngo{i

• Tất cả c|c hệ nhúng đều chứa một v{i kiểu v{o ra

Trang 10

Lĩnh vực ứng dụng

 C|c ứng dụng hệ nhúng được sử dụng rất rộng r~i

trong thực tế:

• Mobile phones

• Automotive applications (in cars, aerospace, traffic…)

• Domestic appliances (including dishwashers,

televisions, washing machines, microwave ovens, video recorders, security systems, garage door controllers)

• Medical equipment (drug delivery systems, MRI

scanners)

• Industrial equipment

• v.v…

10

Trang 11

Ví dụ về hệ nhúng

 In Cars:

Trang 12

Ví dụ về hệ nhúng

 Consumer electronics, home electronics, …

12

Trang 14

Ví dụ về hệ nhúng

14

Chuột m|y tính được trang bị

bộ vi điều khiển 8 bit

Trang 15

Ví dụ về hệ nhúng

Sony Aibo ERS-7 Robotic Dog

- Vi điều khiển 64 bit MIPS R7000

- Hệ điều h{nh Aperios Sony’s Real Time

Trang 16

Ví dụ về hệ nhúng

 KIT FriendlyARM micro2440

16

Trang 17

Ví dụ về hệ nhúng (Việt Nam)

Bkav SmartHome

- Hạ tầng mạng không d}y chuẩn Zigbee

- Hệ thống điều khiển 3D

- Tiết kiệm điện năng

- Tự động ho{n to{n theo c|c kịch bản được thiết lập

Robot ToSy

-Vi xử lý hiệu năng cao -Trí tuệ nh}n tạo

Trang 19

• Năng lượng tiêu thụ

 (3) Giới hạn về tài nguyên:

• Hiệu năng bộ vi xử lý

• Dung lượng bộ nhớ

Trang 20

• Xử lý tính toán đ|p ứng thời gian thực (real time)

 (5) Thỏa mãn yêu cầu về:

Trang 22

1.3 Kiến trúc tổng quan hệ nhúng

 Sơ đồ ph}n lớp:

22

Trang 23

Kiến trúc tổng quan hệ nhúng

 Sơ đồ khối kiến trúc tổng quan hệ nhúng

Trang 24

Vi xử lý

 Processor:

• Một bộ xử lý độc lập không thể thực hiện được

nhiệm vụ gì

• Cần giao tiếp với bộ nhớ (chứa chương trình, dữ

liệu), v{ thiết bị v{o ra (giao tiếp với thế giới bên ngoài)

Trang 25

Vi điều khiển

 Microcontroller: (Bộ vi điều khiển)

• Chứa bộ vi xử lý, bộ nhớ, c|c cổng v{o ra trên một

chip đơn, mạch tích hợp

• Thường sử dụng trong c|c hệ nhúng

• Phạm vi rộng: AVRs, PICs, ARMs, …

• Kiến trúc: 8 bit, 16 bit, 32 bit, (64 bit)

• Bộ nhớ trong cùng chip hoặc phối ghép mở rộng

bên ngoài

 SoC (System-on-chip):

Trang 26

• ROM, EPROM, EEROM (EEPROM)

• Flash (newest ROM technology, dominant), sử dụng rộng r~i trong vi điều khiển, hệ nhúng

26

C|c loại bộ nhớ

Trang 27

Kiến trúc: Von Neumann, Havard

 Kiến trúc Von Neumann: Lệnh và dữ liệu chia sẻ trong

1 bộ nhớ

 Kiến trúc Havard: Lệnh v{ dữ liệu lưu trữ trên 2 bộ nhớ

ph}n biệt

 Đối với bộ nhớ, không có sự khác biệt dữ lệnh và dữ liệu

(mà do CPU quyết định đối xử khi nhận về)

Trang 28

Embedded System

HungPN-HUST

Không gian địa chỉ

 Không gian địa chỉ (address space):

• Không gian địa chỉ bộ nhớ

• Không gian địa chỉ cổng v{o ra

 2 kiểu không gian địa chỉ v{o ra:

28

Trang 30

Chương 3 Vi điều khiển

Chương 4 Lập trình vi điều khiển

Chương 5 Hệ nhúng Arm Linux

30

Trang 31

Chương 2 Thiết kế phần cứng hệ nhúng

 2.1 Thiết kế điện tử

 2.2 C|c mạch chức năng cơ bản

 2.3 C|c chuẩn giao tiếp, truyền thông

 2.4 Ghép nối v{ đo lường tín hiệu tương tự

Trang 33

2.1.1 Linh kiện điện tử

C|c linh kiện điện tử:

Trang 35

Resistors

 Đọc gi| trị Through hole resistors

Trang 36

Thay đổi độ s|ng

LED

Trang 37

Capacitors

Ký hiệu

C|c loại tụ

Tích (charging) và phóng (discharging)

Trang 39

Inductors

Ký hiệu

Surface mount Inductors

Trang 42

(bridge rectifier)

Diodes Zener và Schotky

Trang 43

Crystal

Ký hiệu

Trang 44

• M|y hiện sóng (Oscilloscope)

• M|y tạo tín hiệu (Function Generator)

• Bộ nguồn (Power Supply)

• Bộ h{n (Weller)

• C|c dụng cụ (Tools)

44

Trang 45

Multimeter

 Đo lường c|c đại lượng vật lý: điện |p, dòng điện, điện trở, điện dung, điện cảm, đặc biệt l{ kiểm tra kết nối đường mạch (đo thông)

Trang 46

Embedded System

HungPN-HUST

Oscilloscope

 Hiện thị dạng sóng tín hiệu (waveforms)

 Băng thông (bandwidth): 20Mhz, 100Mhz, …

Trang 47

Function Generator

 M|y tạo tín hiệu:

• Tùy chỉnh đại lượng tín hiệu: tần số, biên độ

• Dạng sóng tín hiệu: xung vuông, tam gi|c, sin

Trang 48

Nickel metal hydride (NiMH) Lead-based

Batteries & Acquy

Trang 49

Mỏ h{n (Weller)

 How to solder ?

Trang 51

2.1.3 Phần mềm thiết kế

 Phần mềm thiết kế, mô phỏng: Proteus

 Phần mềm thiết kế mạch nguyên lý, mạch in:

• Altium Designer/Protel DXP

• Orcad

Trang 52

Embedded System

HungPN-HUST

Phần mềm mô phỏng Proteus

 Khả năng:

• Thiết kế mô phỏng sơ đồ nguyên lý

• Thư viện linh kiện: microcontrollers, logic gates,

resistor, capacitor, button, led, 7 seg, LCD, v.v…

• Mô phỏng nạp chương trình

• Chạy mô phỏng

 How to use ? (Youtube: Proteus tutorials)

52

Trang 53

Phần mềm mô phỏng Proteus

Trang 55

Thiết kế mạch in

 How to use ?

Trang 57

Ví dụ thiết kế

 Schematics:

Trang 59

2.1.4 T{i liệu thiết kế

 Schematic, PCB

 Datasheet

 Application notes

Trang 60

Embedded System

HungPN-HUST

2.2 C|c mạch chức năng cơ bản

 2.2.1 Power Source (Mạch cấp nguồn)

 2.2.2 Clock Oscillator (Mạch dao động)

 2.2.3 Reset (Mạch khởi động lại)

 2.2.4 Programmers/Debugger (Mạch nạp)

 2.2.5 C|c ghép nối cơ bản

60

Trang 64

 Bộ dao động nội (Internal Osc.)

 Bộ dao động ngo{i (External Osc.): Thường dùng thạch anh để cung cấp tín hiệu clock v{ ổn định tần số

64

Trang 65

Clock Oscillator – Ví dụ

 Ví dụ mạch dao động ngo{i cho Vi điều khiển

ATmega8 sử dụng thạch anh tần số 8MHz

Trang 66

Reset when Power on

 Chân MCLR (Master clear

reset) cần ở mức cao khi hệ

thống hoạt động

 Khi power on, hệ thống cần

một khoảng thời gian trễ (T

reset) trước khi khởi động

hoạt động của c|c th{nh

phần

Trang 67

Reset

 Black-out reset: Xảy ra khi power off

bình thường (no danger)

 Brown-out reset: Xảy ra khi điện |p

nguồn cấp giảm từ từ (thường khi dùng

pin xạc) Một số mạch dùng điện |p mức

cao có thể thực thi c|c hoạt động sai

(unpredictably) g}y lỗi cho hệ thống

 Noise: Một loại brown-out reset đặc biệt

xảy ra trong môi trường công nghiệp

Black-out reset

Trang 69

2.2.4 Programmers/Debuggers

 Nhiều chuẩn nạp: JTAG, ISP, …

 Đi kèm công cụ (programmer, debugger) v{ phụ thuộc c|c dòng vi điều khiển

AVRISP

ARM JTAG

Trang 71

Ghép nối Switch, Button

 Hiện tượng nảy phím

 Chống nảy phím bằng mạch RC

Trang 73

Ghép nối Relay

 Điều khiển đóng cắt Rơ-le

Nguyên lý hoạt động Cấu tạo Rơ-le

Trang 75

VOLTAGE DROP UD (V)

Trang 76

Embedded System

HungPN-HUST

Ghép nối LED 7 thanh

 Led 7 thanh: nguyên lý gồm c|c thanh Led đơn

 Ghép nối điều khiển:

• Điều khiển trực tiếp m~

7 thanh

• Sử dụng bộ giải m~

BCD-7 thanh (BCD-7424BCD-7)

Trang 77

Ghép nối LED 7 thanh

 Điều khiển (trực tiếp) nhiều Led 7 segment

 Nguyên lý:

• Điều khiển chọn mở từng led

• Quét gi| trị hiện thị cho từng led được chọn

Trang 78

Embedded System

HungPN-HUST

 C|c ch}n điều khiển chọn 7 seg: C7_1, C7_3

 C|c ch}n điều khiển m~ quét (m~ chỉ thị 7

thanh trực tiếp): SEG_A, B, ….P

Led 7 thanh – Ví dụ Schematic

78

Trang 79

2.3 C|c chuẩn giao tiếp, truyền thông

 2.3.1 Giao tiếp RS232

 2.3.2 Giao tiếp SPI

 2.3.3 Giao tiếp I2C

 2.3.4 Giao tiếp USB

Trang 81

RS232 – Ví dụ Schematic

 Mức điện |p đường truyền (-12V, +12V)

 Mức điện |p của MCU l{ TTL (0V-5V)

 2 kiểu:

• Sử dụng IC chuyển đổi (Max232)

• Ghép nối trực tiếp mức TTL

Trang 82

Embedded System

HungPN-HUST

2.3.2 SPI

 SPI (Serial Peripheral Interface)

(synchronous and bidirectional)

 Sử dụng:

• Giao tiếp giữa MCU – MCUs (MCU=MicroController Unit)

• Giao tiếp giữa MCU – Devices (EEPROM, transceiver modules, …)

Trang 83

SPI

 Chuẩn giao thức như nhau nhưng đặc

tả có thể kh|c nhau tùy từng dòng

VĐK

 Ví dụ SPI trên PIC

 Mô hình 1 Master + multi Slaves

(PIC microcontroller) SDO = Serial Data Out SDI = Serial Data In SCK = Serial Clock

SS = Slave Select

Trang 85

2.3.3 I2C

 I2C (I 2 C) = Inter IC Bus

(~SPI, synchronous + bidirectional)

 Sử dụng: MCU-MCUs, smart peripheral

(temp sensor, real-time clock, …

Trang 86

Embedded System

HungPN-HUST

I2C

 Ví dụ giao tiếp I2C: VĐK PIC16F giao tiếp I2C với EEPROM

(LC256), temperature/humidity sensors (HIH6131)

86

Trang 87

2.3.4 USB

 USB=Universal Serial Bus

 Giao tiếp nối tiếp đa năng

 Đường truyền tín hiệu vi sai

 Nhiều kiểu connectors:

Trang 89

2.4 Ghép nối đo lường tín hiệu tương tự

 Đo lường tín hiệu tương tự bằng ADC

 Sử dụng: giao tiếp với c|c cảm biến (sensors), biến trở (potentiometer), …

 2 kiểu:

• Dùng module ADC có sẵn của VĐK

• Ghép nối qua chip ADC ngo{i

Trang 91

Ví dụ ghép nối ADC

Ví dụ ghép nối với chip ADC ngo{i MCP3204 đo lường 4 kênh ADC

Trang 92

Chương 3 Vi điều khiển

Chương 4 Lập trình vi điều khiển

Chương 5 Hệ nhúng Arm Linux

92

Trang 93

Chương 3 Vi điều khiển

3.1 Tổng quan vi điều khiển

3.2 Kiến trúc vi điều khiển 8051

3.3 Vi điều khiển ARM

3.4 Vi điều khiển AVR

3.5 Vi điều khiển PIC

Trang 94

Embedded System

HungPN-HUST

 Vi điều khiển (Microcontroller):

• Bao gồm cả CPU, bộ nhớ (ROM/EEROM, RAM), cổng vào ra

 Phân biệt với bộ vi xử lý (Microprocessor)

3.1 Tổng quan Vi điều khiển

94

Trang 96

 Mỗi vi điều khiển có một

hoặc nhiều thanh ghi

Trang 97

Các thành phần vi điều khiển (3)

Bộ tạo dao động (Oscillator)

 Cung cấp xung nhịp cho

được chia thành các bước,

tốn một hoặc vài chu kỳ

xung nhịp (khác nhau phụ

thuộc vào kiến trúc vi điều

khiển)

Trang 98

tăng mỗi khi có 1

xung vào Khi tràn

gi| trị, một ngắt

được ph|t sinh

Trang 99

Các thành phần vi điều khiển (5)

Mạch điều khiển nguồn cấp (Power Supply Circuit)

• Một vi điều khiển có thể chứa nhiều mạch hoạt động ở c|c

mức điện |p kh|c nhau

• Khi điện |p nguồn cấp hạ thấp dưới ngưỡng tối thiểu

(thường do nhiễu điện) có thể g}y mất ổn định hoạt động

• Vi điều khiển thường có mạch điều khiển khởi động nóng lại

(Brown out reset)

Reset pin

• Trong trường hợp không

sử dụng mạch brown out reset bên trong VĐK

thường dùng một mạch Reset ngo{i kết nối đến

Trang 100

Embedded System

HungPN-HUST

Các thành phần vi điều khiển (6)

Giao tiếp nối tiếp (Serial Communication)

 Hầu hết c|c VĐK được thiết kế có 1 hoặc v{i chuẩn giao tiếp nối tiếp được x}y dựng sẵn C|c yếu tố quan trọng:

• Số lượng thiết bị có thể trao đổi dữ liệu (1-1, 1-n)

Trang 101

C|c dòng vi điều khiển phổ biến

 Một số dòng vi điều khiển phổ biến hiện nay

• 8051 (AT89C51, AT89S51, AT89S52) (Intel)

• AVR (ATMEGA8, ATMEGA16…) (Atmel)

• PIC (PIC16F877A, PIC18F4550, PIC18F2550…)

(Microchip)

• ARM (ARM7, LPC, TMS, ARM9, ARM Cortex-M, ARM Cortex-A)

• …

Trang 103

3.2.1 Giới thiệu 8051

 Các hãng sản xuất vi điều khiển đ~ có thời gian dài cạnh tranh Rất nhiều chip mới xuất hiện trên thị trường với tần số hoạt

động cao hơn, nhiều bộ nhớ hơn, nâng cấp nhiều chức năng…

 Tuy nhiên, hầu hết các vi điều khiển có kiến trúc tương tự với

8051 (“8051 compatible”) Vì sao ?

 1980s, Intel giới thiệu dòng vi điều khiển đầu tiên MCS 051

Nhanh chóng chinh phục thế giới, trở thành một chuẩn cho vi

điều khiển ngày nay

 Lý do thành công của Intel 8051:

• Cấu hình phù hợp nhiều nhu cầu khác nhau của một số

lượng lớn người dùng

• Lõi cơ bản phù hợp cho nhiều phần mềm đ~ phát triển

• Một số lượng lớn các vi điều khiển đ~ được phát triển nhờ

Trang 105

Tập lệnh 8051

 Mỗi lệnh l{ một chuỗi bit nhị ph}n bộ xử lý hiểu để thực hiện

 C|c lệnh được mô tả bằng ký hiệu gợi nhớ  c|c lệnh hợp ngữ (gắn với kiến trúc vi xử lý cụ thể)

 Ví dụ: Lệnh ADD A, #3Ah

 Khuôn dạng lệnh gồm: M~ thao t|c + Tham chiếu to|n hạng

• M~ thao t|c (OpCode): M~ hóa cho thao t|c lệnh t|c động (WHAT ?)

• Tham chiếu to|n hạng: X|c định nơi chứa to|n hạng m{ lệnh t|c động (HOW ?)

0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0

3Ah

Mã thao tác Tham chiếu to|n hạng

Trang 107

Tập lệnh 8051

Lệnh số học

ADD đích, nguồn Đích = đích + nguồn

ADDC đích, nguồn Đích = đích + nguồn + cờ nhớ

SUBB đích, nguồn Đích = đích – nguồn

INC nguồn Đích = đích + 1

DEC nguồn Đích = đích - 1

Trang 108

MOV đích, nguồn Đích = nguồn (Bộ nhớ trong)

MOVX đích, nguồn Đích = nguồn (Thao tác bộ nhớ

ngoài) PUSH Đẩy dữ liệu vào đỉnh ngăn xếp

POP Lấy dữ liệu từ đỉnh ngăn xếp

XCHD Tráo đổi dữ liệu ( 4 bit thấp)

108

Trang 110

JMP Lệnh nhảy không điều kiện

JZ, JNZ, JB, JNB… Lệnh nhảy có điều kiện (kiểm tra

bit)

110

Trang 112

I/O Pin (a)

FE transistor Cực G (Gain)

= 1 đóng

= 0 mở

Trang 113

3.2.3 Tổ chức bộ nhớ

 ROM/EEPROM: Bộ nhớ chương trình, chứa chương trình điều khiển hoạt động (nạp firmware) (8051 4K ROM)

 RAM: Bộ nhớ dữ liệu, chứa dữ liệu v{ c|c thanh ghi SFRs phục

vụ hoạt động của CPU (8051 128B RAM)

 16 bit địa chỉ (space

Trang 115

3.2.4 Các thanh ghi

 Thanh ghi: Lưu trữ địa chỉ hoặc dữ liệu phục vụ cho hoạt động của CPU

 Thanh ghi 8051: chủ yếu thanh ghi 8 bit

 C|c thanh ghi chức năng đặc biệt (Special Function Registers – SFR):

• Thanh ghi A (Accumulator): Thanh chứa

• Thanh ghi B

• Các thanh ghi R (R0-R7): C|c thanh ghi mục đích chung

• Thanh ghi từ trạng th|i chương trình (Program Status

Word - PSW)

• Thanh ghi con trỏ dữ liệu (Data Pointer Register - DPTR)

• Thanh ghi con trỏ ngăn xếp (Stack Pointer - SP)

• Thanh ghi cổng v{o ra: P0, P1, P2, P3

Trang 117

3.2.5 Counter/Timer

• Timer/Counter 0 (T0) và Timer/Counter 1 (T1)

• Bộ định thời (Timer): Tạo ra c|c sự kiện định thời

sau khoảng thời gian thực chính x|c, có thể dùng để tạo trễ

• Bộ đếm (Counter): đếm xung

Trang 118

Embedded System

HungPN-HUST

Các thanh ghi Counter/Timer

 Thanh ghi TCON

• TR1/TR0: bit khởi động/tắt bộ đếm/định thời

• TF1/TF0: cờ b|o tr{n bộ đếm/định thời

• IE1, IT1, IE0, IT0: liên quan tới ngắt phần cứng

ngoài

118

Trang 119

Các thanh ghi Counter/Timer

 Thanh ghi TMOD

Trang 120

Embedded System

HungPN-HUST

Các thanh ghi Counter/Timer

 Thanh ghi gi| trị Timer (Timer T0) 16 bit

 Gồm 2 thanh ghi 8 bit: TH0, TL0

120

Công thức: TH0 × 256 + TL0 = T0

• Ví dụ: 3 × 256 + 232 = 1000

Trang 121

Counter/Timer

 Timer 0 Mode 1 (16 bit):

• Start from 0 to 65535 -> Timer Interrupt

• Clear to 0

Trang 123

3.2.6 Truyền thông nối tiếp UART

UART (Universal Asynchronous Receiver and Transmitter)

(Serial Port)

 Full duplex: Cho phép truyền (transmit) v{ nhận

(receive) dữ liệu đồng thời với tốc độ kh|c nhau

(Baudrates)

 Giao thức đóng gói dữ liệu, truyền nhận được điều

khiển bởi vi điều khiển

 Lập trình: Cấu hình chọn chế độ, tốc độ truyền

 Thanh ghi bộ đệm dữ liệu gửi/nhận:

Ngày đăng: 05/11/2023, 10:53

🧩 Sản phẩm bạn có thể quan tâm