Tải bản đầy đủ (.pdf) (57 trang)

Thiết kế máy in hóa đơn sử dụng giao thức USART

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 (6.04 MB, 57 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

QUÁCH VĂN PHI

THIẾT KẾ MÁY IN HÓA ĐƠN SỬ DỤNG GIAO THỨC USART

Chuyên ngành: KỸ THUẬT VIỄN THÔNG
Mã số: 60.52.02.08

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)

NGƯỜI HƯỚNG DẪN KHOA HỌC : TS. NGUYỄN NGỌC MINH

HÀ NỘI - 2016


i

LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi. Các kết quả nghiên
cứu cũng như ý tưởng của các tác giả khác đều được trích dẫn cụ thể.
Đề tài luận văn của tôi chưa từng được bảo vệ tại bất kỳ một hội đồng bảo vệ
luận văn thạc sĩ nào. Đồng thời cho đến nay chưa được công bố trên bất kỳ phương
tiện thông tin truyền thông nào.
Hà Nội, Ngày….. tháng….. năm…….
Học viên thực hiện

QUÁCH VĂN PHI



ii

LỜI CẢM ƠN
Tôi xin được bày tỏ lòng biết ơn sâu sắc nhất đến người hướng dẫn của tôi
là: TS. Nguyễn Ngọc Minh. Người đã đã hướng dẫn, giúp đỡ tạo mọi điều kiện để
tôi nghiên cứu và hoàn thành luận văn thạc sĩ.
Tôi xin chân thành cảm ơn Ban giám đốc Học viện Công nghệ Bưu chính
Viễn thông đã giúp tôi hoàn thành khóa học trong một năm rưỡi qua.
Tôi xin chân thành cảm ơn các thầy cô trong khoa Quốc tế và Đào tạo sau
đại học đã truyền đạt những kiến thức, tạo điều kiện thuận lợi để tôi được học tập,
rèn luyện tốt.
Tôi xin cảm ơn tập thể lớp cao học kỹ thuật viễn thông, những người thường
xuyên động viên, đóng góp trao đổi ý kiến và kiến thức trong suốt thời gian học tập
và hoàn thành luận văn.
Hà Nội, Ngày….. tháng….. năm…….
Học viên thực hiện

QUÁCH VĂN PHI


iii

MỤC LỤC
LỜI CAM ĐOAN..................................................................................................... i
LỜI CẢM ƠN ......................................................................................................... ii
MỤC LỤC .............................................................................................................iii
DANH MỤC CHỮ VIẾT TẮT ............................................................................... v
DANH MỤC BẢNG BIỂU .................................................................................... vi
DANH MỤC HÌNH VẼ ........................................................................................ vii

LỜI MỞ ĐẦU ......................................................................................................... 1
CHƯƠNG 1: GIỚI THIỆU CHUNG ....................................................................... 2
1.1. Máy in hóa đơn ............................................................................................. 2
1.2. Giao tiếp truyền nhận nối tiếp USART ......................................................... 4
1.2.1. Giới thiệu về giao tiếp truyền nhận nối tiếp USART .............................. 4
1.2.2. Giao tiếp USART chế độ bất đồng bộ .................................................... 7
1.3. Giao tiếp truyền nhận nối tiếp SPI ................................................................ 8
1.3.1. Giới thiệu về giao tiếp SPI ..................................................................... 8
1.3.2. Chuẩn truyền thông SPI ......................................................................... 9
1.3.3. Các kiểu kết nối SPI ............................................................................. 15
1.4. Kết luận chương ......................................................................................... 18
CHƯƠNG 2: THIẾT KẾ VÀ THỰC THI PHẦN CỨNG ...................................... 19
2.1. Vi điều khiển .............................................................................................. 20
2.2. Module đầu in ............................................................................................. 21
2.3. Bộ nhớ ........................................................................................................ 24
2.4. Mạch nguồn ................................................................................................ 25
2.5. Sơ đồ nguyên lý của các khối phần cứng..................................................... 27
2.6. Kết luận chương ......................................................................................... 30
CHƯƠNG 3: THIẾT KẾ VÀ THỰC THI PHẦN MỀM ........................................ 31
3.1. Yêu cầu thiết kế .......................................................................................... 31
3.2. Phần mềm cho thiết bị................................................................................. 31
3.3. Các lệnh cấu hình máy in và điều khiển quá trình in ................................... 34


iv

3.4. Giải thuật in dữ liệu văn bản và ảnh lô gô ................................................... 35
3.5. Thiết kế giao thức truyền nhận dữ liệu ảnh lô gô giữa phần mềm nạp ảnh và
máy in ............................................................................................................... 37
3.5.1. Bản tin truyền từ máy tính .................................................................... 38

3.5.2. Bản tin truyền từ máy in ....................................................................... 40
3.6. Thiết kế phần mềm nạp ảnh cho máy in ...................................................... 41
3.7. Kết luận chương ......................................................................................... 43
CHƯƠNG 4: KẾT QUẢ VÀ THẢO LUẬN ......................................................... 44
4.1. Các kết quả đã đạt được .............................................................................. 44
4.1.2. Phần cứng ............................................................................................ 44
4.1.3. Phần mềm ............................................................................................ 44
4.2. Các vấn đề cần cải tiến của máy in .............................................................. 44
4.3. Hình ảnh sản phẩm ..................................................................................... 45
KẾT LUẬN VÀ KIẾN NGHỊ ............................................................................... 47
TÀI LIỆU THAM KHẢO ..................................................................................... 48


v

DANH MỤC CHỮ VIẾT TẮT
Chữ viết tắt

Tiếng Anh

Tiếng Việt

CPOL

Clock Polarity

Cực của xung nhịp

CPHS


Clock Phase

Pha của xung nhịp

IC

Integrated Circuit

Mạch tích hợp

LED

Light Emitting Diode

Đi ốt phát quang

MISO

Master Input Slave Output

MOSI

Master Output Slave Input

SCK

Serial Clock

Xung nhịp nối tiếp


SPI

Serial Peripheral Interface

Giao diện ngoại vi nối tiếp

SS

Slave Select

Lựa chọn chíp thụ động

Universal
USART

Synchronous/Asynchronous
Receiver/Transmitter

Đầu vào chíp chủ động đầu ra chíp
thụ động
Đầu ra chíp chủ động đầu vào chíp
thụ động

Bộ truyền nhận nối tiếp đồng bộ và
bất đồng bộ


vi

DANH MỤC BẢNG BIỂU

Bảng 1.1: Các tín hiệu của giao tiếp SPI ................................................................ 11
Bảng 1.2: Các chế độ truyền thông trong giao tiếp SPI .......................................... 13
Bảng 2.1: Một số đặc tính của module đầu in ........................................................ 22
Bảng 2.2: Bảng trạng thái của IC BA6845FS......................................................... 23
Bảng 2.3: Bảng trạng thái điều khiển động cơ bước............................................... 24
Bảng 2.4: Lệnh điều khiển chíp nhớ S25FL216K .................................................. 25
Bảng 3.1: Trạng thái bật tắt đèn LED của máy in .................................................. 34
Bảng 3.2: Các lệnh cấu hình và kiểm tra hoạt động của máy in.............................. 34
Bảng 3.3: Các lệnh điều khiển quá trình in ............................................................ 35
Bảng 3.4: Bản tin tổng quát ................................................................................... 37
Bảng 3.5: Mã bản tin truyền từ máy tính ................................................................ 38
Bảng 3.6: Nội dung bản tin yêu cầu nạp ảnh .......................................................... 38
Bảng 3.7: Nội dung bản tin dữ liệu ảnh.................................................................. 39
Bảng 3.8: Mã bản tin truyền từ máy in ................................................................... 40
Bảng 3.9: Nội dung bản tin phản hồi dữ liệu ảnh ................................................... 40


vii

DANH MỤC HÌNH VẼ
Hình 1.1: Truyền 8 bit theo phương pháp song song và nối tiếp .............................. 5
Hình 1.2: Giao tiếp USART chế độ đồng bộ ............................................................ 6
Hình 1.3: Giao tiếp USART chế độ bất đồng bộ ...................................................... 6
Hình 1.4: Khung truyền dữ liệu trong chế độ bất đồng bộ ........................................ 7
Hình 1.5: Ví dụ một khung truyền dữ liệu trong chế độ bất đồng bộ ........................ 8
Hình 1.6: Giao tiếp SPI.......................................................................................... 10
Hình 1.7: Truyền dữ liệu SPI ................................................................................. 11
Hình 1.8: Giản đồ thời gian của giao tiếp SPI ........................................................ 12
Hình 1.9: Giản đồ thời gian của SPI ở chế độ 0 ..................................................... 14
Hình 1.10: Giản đồ thời gian của SPI ở chế độ 1 ................................................... 14

Hình 1.11: Giản đồ thời gian của SPI ở chế độ 2 ................................................... 14
Hình 1.12: Giản đồ thời gian của SPI ở chế độ 3 ................................................... 15
Hình 1.13: Kết nối điểm - điểm một Master nối với một Slave .............................. 15
Hình 1.14: Kết nối nhiều Slave song song ............................................................. 16
Hình 1.15: Kết nối nối tiếp .................................................................................. 17
Hình 1.16: Kết nối hai Master song song đến một Slave ........................................ 17
Hình 1.17: Kết nối hai Master với nhau ................................................................. 18
Hình 2.1: Sơ đồ khối phần cứng ............................................................................ 19
Hình 2.2: Vi điều khiển STM32F303CBT6 ........................................................... 20
Hình 2.3: Sơ đồ khối dòng vi điều khiển STM32F3 ............................................... 20
Hình 2.4: Module đầu in ........................................................................................ 21
Hình 2.5: Sơ đồ chân kết nối module đầu in .......................................................... 22
Hình 2.6: Sơ chân kết nối BA6845FS .................................................................... 23
Hình 2.7: Sơ đồ chân kết nối chíp nhớ S25FL216K ............................................... 25
Hình 2.8: Sơ đồ mạch cấp nguồn cho đầu in .......................................................... 26
Hình 2.9: Sơ đồ mạch cấp nguồn cho vi điều khiển và chíp nhớ ............................ 26
Hình 2.10: Sơ đồ nguyên lý khối vi điều khiển ...................................................... 27
Hình 2.11: Sơ đồ nguyên lý khối đầu in ................................................................. 28


viii

Hình 2.12: Sơ đồ nguyên lý khối điều khiển động cơ của đầu in ............................ 28
Hình 2.13: Sơ đồ nguyên lý khối bộ nhớ................................................................ 29
Hình 2.14: Sơ đồ nguyên lý khối nút bấm và đèn LED .......................................... 29
Hình 2.15: Sơ đồ nguyên lý khối nguồn ................................................................. 29
Hình 3.1: Hoạt động của phần mềm máy in ........................................................... 32
Hình 3.2: Quá trình khởi động máy in ................................................................... 32
Hình 3.3: Các tác vụ thực hiện theo chu kỳ và theo sự kiện ................................... 33
Hình 3.4: Quá trình nạp ảnh từ máy tính ................................................................ 33

Hình 3.5: Quá trình in dữ liệu lên giấy in ............................................................... 35
Hình 3.6: Chuyển đổi ký tự thành ma trận các bit 0 và 1 ........................................ 36
Hình 3.7: Chuyển đổi ma trận điểm ảnh thành mảng các số 8 bit ........................... 36
Hình 3.8: Mô tả hoạt động của phần mềm nạp ảnh cho máy in .............................. 41
Hình 3.9: Quá trình nạp ảnh cho máy in từ phần mềm nạp ảnh .............................. 42
Hình 4.1: Phần cứng máy in hóa đơn ..................................................................... 45
Hình 4.2: In hóa đơn thanh toán............................................................................. 45
Hình 4.3: Giao diện phần mềm nạp ảnh cho máy in ............................................... 46


1

LỜI MỞ ĐẦU
Hiện nay các hình thức thanh toán ngày càng phong phú, các thiết bị tính tiền
cũng rất đa dạng và phổ biến trong mọi lĩnh vực, ngành nghề kinh doanh. Kéo theo
đó là nhu cầu xuất hóa đơn thanh toán cho khách hàng cần phải nhanh chóng và tiện
lợi hơn nhằm tiết kiệm thời gian cho người kinh doanh và khách hàng.
Trước đây với các hoạt động kinh doanh như bán hàng trong siêu thị, thanh
toán tiền cho khách hàng đi taxi,… hóa đơn thường do người bán hàng hay lái xe
ghi ra giấy rất nên rất mất thời gian cho cả hai bên, công việc đó hoàn toàn có thể
thực hiện tự động bằng cách truyền nội dung thanh toán từ thiết bị tính tiền sang
máy in để in ra hóa đơn cho khách hàng. Hiện nay các loại máy in hóa đơn trên thị
trường đã đáp ứng được một phần nhu cầu của người dùng, tuy nhiên giá thành của
máy in hóa đơn khá đắt, nguồn gốc xuất xứ và chất lượng thì chưa thực sự đảm bảo.
Trong những năm gần đây ngành điện tử ở nước ta đang phát triển rất nhanh.
Việc tiếp cận với những kiến thức, công nghệ hiện đại rất dễ dàng cho mọi người
học tập và nghiên cứu. Trong lĩnh vực điện tử có nhiều giao thức được phát triển và
ứng dụng trong truyền nhận dữ liệu giữa các module, giữa IC và vi điều khiển, giữa
thiết bị điện tử và máy tính,…như USART, SPI, I2C,… Trong đó USART được
ứng dụng nhiều trong giao tiếp giữa các thiết bị điện tử với nhau, giao tiếp giữa

thiết bị điện tử với máy tính, với những ưu điểm như thiết lập kết nối đơn giản, sử
dụng ít đường kết nối vật lý.
Từ các vấn đề trên em lựa chọn đề tài nghiên cứu “Thiết kế máy in hóa đơn
sử dụng giao thức USART” nhằm thiết kế một máy in hóa đơn sử dụng giao tiếp
USART với những tính năng cơ bản và chất lượng tốt.
Trong luận văn này sẽ nghiên cứu và thiết kế máy in hóa đơn sử dụng giao
tiếp USART với 4 chương như sau:
Chương 1: Giới thiệu chung.
Chương 2: Thiết kế và thực thi phần cứng.
Chương 3: Thiết kế và thực thi phần mềm.
Chương 4: Kết quả và thảo luận.


2

CHƯƠNG 1: GIỚI THIỆU CHUNG
1.1. Máy in hóa đơn
Máy in hoá đơn là thiết bị có chức năng in hoá đơn ra giấy, để in ra danh
sách hàng hóa, giá cả, nội dung cần thanh toán. Có thể in và cắt giấy một cách
nhanh chóng để giao cho khách hàng. Chính vì thế máy in hóa đơn đã trở thành một
thiết bị không thể thiếu trong các đại lý, nhà phân phối, các siêu thị, kho hàng, các
cửa hàng bán lẻ.
Dựa vào công nghệ in, máy in hóa đơn được chia làm hai loại là máy in kim
và máy in nhiệt.
Máy in kim sử dụng ma trận kim in khắc chữ viết, hình ảnh lên giấy thông
qua một băng mực. Ưu điểm của máy in kim là hóa đơn in ra sẽ đảm bảo chất
lượng, khó bị hư hỏng và không bị bay mực nên có thể lưu giữ lâu dài. Nhược
điểm của công nghệ này là dùng mực in nên tốc độ in chậm và thường xuyên phải
thao tác thay mực, thay giấy cho máy in.
Máy in nhiệt sử dụng đầu in nhiệt tác dụng lên giấy in nhiệt, khi đầu in nhiệt

của máy in nhiệt nóng lên sẽ làm nóng lớp hóa chất trên giấy in nhiệt và hiển thị
những chữ viết, hình ảnh. Máy in nhiệt không dùng mực in bởi trong giấy in nhiệt
đã có thành phần hợp chất để khi đầu in tác động nhiệt sẽ in ra chữ. Ưu điểm của
máy in nhiệt là tốc độ in nhanh, chính xác, không cần thay băng mực cho máy in.
Nhược điểm của máy in nhiệt là hóa đơn in ra dễ bị xước, bị hỏng vì lớp hóa chất
trên giấy rất dễ bắt nhiệt nên khó lưu giữ lâu dài.
Trong lĩnh vực điện tử hiện nay có nhiều chuẩn giao tiếp được phát triển và
ứng dụng trong truyền nhận dữ liệu giữa các module, giữa IC và vi điều khiển, giữa
thiết bị điện tử và máy tính,… Có nhiều chuẩn giao tiếp như USART, SPI, I2C,
USB,… Trong đó USART được ứng dụng nhiều trong giao tiếp giữa các thiết bị
điện tử với nhau, giao tiếp giữa thiết bị điện tử với máy tính, với những ưu điểm
như thiết lập kết nối đơn giản, sử dụng ít đường kết nối vật lý, tốc độ truyền dữ liệu
ở mức trung bình. Chuẩn giao tiếp SPI được ứng dụng nhiều trong giao tiếp giữa


3

các vi điều khiển, giữa vi điều khiển với IC hoặc với các module, chuẩn giao tiếp
SPI có tốc độ khá cao.
Chức năng chính của máy in hóa đơn là giao tiếp với thiết bị tính tiền để
nhận dữ liệu cần in và điều khiển đầu in để xuất dữ liệu đó ra giấy. Vì vậy để thiết
kế được máy in hóa đơn thì cần phải lựa chọn loại đầu in và chuẩn giao tiếp để
truyền nhận dữ liệu giữa máy in và thiết bị tính tiền.
 Các phương án lựa chọn module đầu in
Để thiết kế máy in hóa đơn ta có thể lựa chọn sử dụng module đầu in nhiệt
hoặc module đầu in kim. Sử dụng module đầu in kim thì chất lượng hóa đơn in ra sẽ
tốt hơn, lưu giữ được lâu hơn tuy nhiên kích thước đầu in lớn, giá thành cao, tốc độ
in chậm, phải thay mực và thay giấy thường xuyên. Sử dụng module đầu in nhiệt thì
chất lượng hóa đơn kém hơn, dễ bị tác động bởi nhiệt nhưng kích thước nhỏ gọn,
giá thành thấp hơn module đầu in kim, tốc độ in nhanh hơn, chỉ cần thay giấy in khi

hết. Hiện nay trên thị trường có nhiều hãng cung cấp module đầu in như hãng Seiko
cũng cấp một số loại module như LTP01-245, LTP02-245, LTPJ245D, LTP04.
Hãng Fujitsu cũng cấp một số loại module như FTP-627USL401, FTP-627USL431,
FTP-627USL432. Các loại module này sử dụng chuẩn giao tiếp SPI.
Từ những ưu điểm của loại module đầu in nhiệt, trong đề tài này tác giả lựa
chọn sử dụng module đầu in nhiệt để thiết kế máy in hóa đơn.
 Các phương án lựa chọn chuẩn giao tiếp giữa máy in và thiết bị tính tiền
Hiện nay có nhiều chuẩn giao tiếp có thể ứng dụng để truyền nhận giữa máy
in và thiết bị tính tiền như USB, USART, SPI,... Ngoài ra cũng có thể truyền nhận
dữ liệu giữa máy in và thiết bị tính tiền thông qua bluetooth, qua mạng lan, qua
mạng wifi,… Ngoài việc truyền nhận dữ liệu giữa máy in và thiết bị tính tiền, máy
in cần phải dễ dàng kết nối với máy vi tính để thực hiện cấu hình và nạp ảnh lô gô
và thiết bị tính tiền ở đây cũng có thể là máy tính. Giao tiếp SPI khó kết nối với
máy tính. Giao tiếp USB có tốc độ khá cao nhưng khó kết nối với nhiều loại thiết bị
tính tiền sử dụng vi điều khiển đời cũ không hỗ trợ kết nối USB. Truyền nhận thông
qua bluetooth, mạng lan, wifi có ưu điểm về khoảng cách kết nối xa nhưng không


4

phù hợp với những thiết bị tính tiền ở những nơi không có mạng lan, wifi, bluetooth
như đồng hồ tính cước trên xe taxi, xe bus,… Chuẩn giao tiếp USART kết nối đơn
giản, có thể kết nối chỉ với hai đường dây, dễ dàng kết nối với nhiều loại thiết bị
tính tiền và máy tính. Được tích hợp trên nhiều dòng vi điều khiển, vi xử lý đời cũ
và đời mới dó đó những thiết bị tính tiền chưa hỗ trợ cũng có thể dễ dàng bổ sung
kết nối. Trong luận văn này tác giả sẽ sử dụng giao tiếp USART để kết nối giữa
máy in và thiết bị tính tiền, kết nối giữa máy in và máy tính.
Với những ưu điểm của loại máy in hóa đơn nhiệt và chuẩn giao tiếp
USART, trong đề tài này tác giả lựa chọn thiết kế một máy in hóa đơn nhiệt với các
tính năng cơ bản sau:

- In dữ liệu hóa đơn nhận được thông qua giao tiếp USART từ thiết bị tính
tiền.
- Lưu 3 ảnh lô gô trong bộ nhớ flash phục vụ quá trình in.
- In ảnh lô gô của đơn vị kinh doanh trên hóa đơn.
- Nạp ảnh lô gô vào IC nhớ thông qua phần mềm trên máy tính.
- Thông báo trạng thái hoạt động của máy in thông qua đèn LED.
- Đẩy giấy và in lại hóa đơn đã in trước đó thông qua nút bấm.
- Lưu trữ các tham số cấu hình hoạt động của máy in vào bộ nhớ, có thể cấu
hình các tham số hoạt động từ phần mềm trên máy tính.
Để đáp ứng được các tính năng truyền nhận dữ liệu qua giao tiếp USART và
điều khiển đầu in sử dụng giao tiếp SPI cần hiểu và nắm rõ hai giao tiếp này để sử
dụng trong quá trình thiết kế và lập trình điều khiển máy in. Phần tiếp theo sẽ trình
bày rõ hơn về hai loại giao tiếp này.

1.2. Giao tiếp truyền nhận nối tiếp USART
1.2.1. Giới thiệu về giao tiếp truyền nhận nối tiếp USART
Thuật ngữ USART trong tiếng anh là viết tắt của cụm từ: Universal
Synchronous/Asynchronous Reveiver/Transmitter, nghĩa là truyền nhận đồng bộ và
bất đồng bộ. USART là một giao diện truyền thông nối tiếp được tích hợp trong


5

máy tính và nhiều dòng vi điều khiển hỗ trợ giao tiếp nối tiếp đồng bộ và bất đồng
bộ.
Truyền thông nối tiếp: Giả sử ta đang xây dựng một ứng dụng phức tạp cần
sử dụng nhiều vi điều khiển kết nối với nhau. Trong quá trình làm việc các vi điều
khiển cần trao đổi dữ liệu cho nhau, ví dụ tình huống vi điều khiển 1 truyền/nhận dữ
liệu với vi điều khiển 2. Giả sử dữ liệu cần trao đổi là các mã có chiều dài 8 bit, ta
có thể sẽ nghĩ đến cách kết nối đơn giản nhất là kết nối 1 cổng (8 bit) của mỗi vi

điều khiển với nhau, mỗi đường kết nối trên cổng sẽ chịu trách nhiệm truyền/nhận 1
bit dữ liệu. Đây gọi là cách giao tiếp song song, cách này là cách đơn giản nhất vì
dữ liệu được xuất và nhận trực tiếp không thông qua bất kỳ một giải thuật biến đổi
nào và vì thế tốc độ truyền cũng rất nhanh. Tuy nhiên có thể thấy nhược điểm của
cách truyền này là số đường truyền quá nhiều, ta hãy tưởng tượng nếu dữ liệu có giá
trị càng lớn thì số đường truyền cũng sẽ nhiều thêm. Hệ thống truyền thông song
song thường rất cồng kềnh và vì thế kém hiệu quả. Truyền thông nối tiếp sẽ giải
quyết vần đề này. Trong tuyền thông nối tiếp dữ liệu được truyền từng bit trên một
(hoặc một vài) đường truyền. Vì lý do này cho dù dữ liệu có lớn đến đâu cũng chỉ
dùng rất ít đường truyền. Hình 1.1 mô tả sự so sánh giữa 2 cách truyền song song và
nối tiếp trong việc truyền con số 187 thập phân (tức 10111011 nhị phân).

Hình 1.1: Truyền 8 bit theo phương pháp song song và nối tiếp

Một hạn chế rất dễ nhận thấy khi truyền nối tiếp so với song song là tốc độ
truyền và độ chính xác của dữ liệu khi truyền và nhận. Vì dữ liệu cần được chia nhỏ
thành từng bit khi truyền/nhận, tốc độ truyền sẽ bị giảm. Mặt khác, để đảm bảo tính
chính xác của dữ liệu, bộ truyền và bộ nhận cần có những thỏa hiệp hay những tiêu
chuẩn nhất định.


6

Khái niệm đồng bộ để chỉ sự báo trước trong quá trình truyền. Hai thiết bị
kết nối với nhau bởi 2 đường, một đường dữ liệu và 1 đường xung nhịp. Đường
xung nhịp được kiểm soát bởi một thiết bị, tất cả các bit được truyền đồng bộ với
xung nhịp đó [2]. Cứ mỗi lần thiết bị 1 muốn gửi 1 bit dữ liệu, thiết bị 1 điều khiển
đường xung nhịp chuyển từ mức thấp lên mức cao báo cho thiết bị 2 sẵn sàng nhận
một bit. Bằng cách báo trước này tất cả các bit dữ liệu có thể truyền/nhận dễ dàng
với ít rủi ro trong quá trình truyền. Tuy nhiên cách truyền này đòi hỏi ít nhất 2

đường truyền cho 1 quá trình (gửi dữ liệu hoặc nhận dữ liệu).

Hình 1.2: Giao tiếp USART chế độ đồng bộ

Khác với cách truyền đồng bộ, truyền thông bất đồng bộ chỉ cần một đường
truyền cho một quá trình (gửi dữ liệu hoặc nhận dữ liệu). Các tham số truyền nhận,
khung dữ liệu đã được chuẩn hóa bởi các thiết bị nên không cần đường xung nhịp
báo trước dữ liệu đến [2]. Ví dụ 2 thiết bị đang giao tiếp với nhau theo phương pháp
này, chúng đã được thỏa thuận với nhau rằng cứ 1ms thì sẽ có 1 bit dữ liệu truyền
đến, như thế thiết bị nhận chỉ cần kiểm tra và đọc đường truyền mỗi mili giây để
đọc các bit dữ liệu và sau đó kết hợp chúng lại thành dữ liệu có ý nghĩa. Truyền
thông nối tiếp bất đồng bộ vì thế hiệu quả hơn truyền thông đồng bộ (không cần
nhiều đường truyền).

Hình 1.3: Giao tiếp USART chế độ bất đồng bộ

Từ những ưu điểm truyền nhận đơn giản, sử dụng ít đường kết nối của truyền
thông bất đồng bộ, trong luận văn này tác giả lựa chọn và ứng dụng chế độ truyền


7

thông bất đồng bộ để truyền nhận dữ liệu giữa máy in hóa đơn và các thiết bị tính
tiền. Trong phần tiếp theo tác giả sẽ trình bày chi tiết hơn về chế độ truyền nhận bất
đồng bộ.

1.2.2. Giao tiếp USART chế độ bất đồng bộ
Trong chế độ truyền nhận nối tiếp bất đồng bộ này chỉ sử dụng một dây kết
nối cho mỗi chiều truyền dữ liệu do đó để quá trình truyền nhận dữ liệu thành công
thì việc tuân thủ các tiêu chuẩn truyền là hết sức quan trọng. Sau đây là các khái

niệm quan trọng trong chế độ truyền thông này.
Baud rate (tốc độ Baud): Để việc truyền và nhận bất đồng bộ xảy ra thành
công thì các thiết bị tham gia phải thống nhất với nhau về khoảng thời gian 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
khi truyền nhận, tốc độ này gọi là tốc độ Baud. Tốc độ Baud là số bit truyền trong
một giây. Ví dụ nếu tốc độ Baud được đặt là 19200 bit/giây thì thời gian dành cho
một 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 bất đồ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ố
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 hiệu như bit Start và bit Stop,
các bit kiểm tra như Parity, ngoài ra số lượng các bit dữ liệu trong mỗi lần truyền
cũng được quy định bởi khung truyền.

Hình 1.4: Khung truyền dữ liệu trong chế độ bất đồng bộ

Start bit: Là bit đầu tiên được truyền trong một khung 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. Start bit
là bit bắt buộc phải có trong khung truyền.


8

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. Dữ liệu cần truyền không nhất thiết phải là gói 8 bit, có thể quy định số lượng
bit của dữ liệu là 5, 6, 7, 8 hoặc 9. Trong truyền thông nối tiếp USART, bit có ảnh
hưởng nhỏ nhất của dữ liệu sẽ được truyền trước và cuối cùng là bit có ảnh hưởng
lớn nhất.
Parity bit: 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 và parity lẻ. Parity chẵn nghĩa là số lượng bit 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 bit 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 bit 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 bit 1 là số chẵn (6 bit 1). Nếu parity lẻ được yêu cầu thì giá trị
của parity bit là 1. 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.
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 bit bắt buộc
xuất hiện trong khung truyền.

Hình 1.5: Ví dụ một khung truyền dữ liệu trong chế độ bất đồng bộ

Hình 1.5 là một ví dụ của một khung truyền theo USART chế độ bất đồng
bộ, khung truyền này được bắt đầu bằng một start bit, tiếp theo là 8 bit dữ liệu cuối
cùng là 1 bit stop.

1.3. Giao tiếp truyền nhận nối tiếp SPI
1.3.1. Giới thiệu về giao tiếp SPI
SPI (Serial Peripheral Interface – Giao diện ngoại vi nối tiếp) là một chuẩn
đồng bộ nối tiếp để truyền dữ liệu ở chế độ song công toàn phần (Full-duplex), do


9

công ty Motorola thiết kế nhắm đảm bảo sự liên hợp giữa các vi điều khiền và thiết
bị ngoại vi một cách đơn giản. SPI là giao diện đồng bộ, trong đó bất cứ quá trình
truyền nào cũng được đồng bộ hóa với tín hiệu xung nhịp chung, tín hiệu này sinh
ra bởi thiết bị chủ động (Master). Thiết bị ngoại vi bên phía nhận (Slave) đồng bộ

quá trình nhận chuỗi bit với tín hiệu xung nhịp [11].
Đây là kiểu truyền thông 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.
SPI cung cấp một giao diện nối tiếp đơn giản giữa vi xử lý và thiết bị ngoại
vi. Chuẩn giao tiếp SPI ngày càng được sử dụng rộng rãi trong lĩnh vực điện tử, đặc
biệt là trong giao tiếp trao đổi dữ liệu với các thiết bị ngoại vi.
Giao diện SPI được sử dụng tích hợp trong một số loại thiết bị như:
- Các bộ chuyển đổi tương tự sang số, số sang tương tự.
- Các loại bộ nhớ (EEPROM và FLASH).
- Các loại IC thời gian thực.
- Các loại cảm biến (nhiệt độ, áp suất...).

1.3.2. Chuẩn truyền thông SPI
1.3.2.1. Cấu trúc SPI
Giao diện SPI được thực hiện thông qua Bus 4 dây MISO, MOSI, SCK và
SS nên đôi khi SPI còn được gọi là giao diện 4 dây.
MISO – Master Input Slave Output
Chân MISO dùng để truyền dữ liệu đi khi đặt cấu hình là Slave và nhận dữ
liệu về khi đặt cấu hình là Master. MISO của Master và các Slave được nối trực tiếp
với nhau.
MOSI – Master Output Slave Input
Chân MOSI dùng để truyền dữ liệu đi khi đặt cấu hình là Master và nhận dữ
liệu về khi đặt cấu hình là Slave. MISO của Master và các Slave được nối trực tiếp
với nhau.


10

SCK – Serial Clock
Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền thông đồng bộ nên

cần một đường giữ nhịp, mỗi nhịp trên chân SCK báo hiệu một bit dữ liệu đến hoặc
đi. Sự tồn tại của chân SCK giúp quá trình truyền ít bị lỗi và vì thế tốc độ truyền của
SPI có thể đạt hiệu quả cao. Xung nhịp chỉ được tạo ra bởi chip Master.
SS – Slave Select
SS là đường chọn Slave cần giao tiếp, trên các chip Slave đường SS sẽ ở
mức cao khi không làm việc. Nếu chip Master kéo đường SS của một Slave nào đó
xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó.
Chỉ có một đường SS trên mỗi Slave nhưng có thể có nhiều đường điều
khiển trên Master tùy thuộc vào thiết kế của người dùng.

Hình 1.6: Giao tiếp SPI


11

Có thể mô tả tóm tắt các tín hiệu của giao tiếp SPI bằng bảng sau:
Bảng 1.1: Các tín hiệu của giao tiếp SPI

Tên tín hiệu
SCK

Chiều
Master: Đầu ra

Mô tả
Xung nhịp đồng bộ truyền/nhận dữ

Slave: Đầu vào

liệu luôn được cung cấp bởi Master


Master: Đầu ra

SS

Slave: Đầu vào

Master: MOSI
Slave: SDO hoặc SO
Master: MISO
Slave: SDI hoặc SI

Đầu ra

Đầu vào

Tín hiệu kết nối với Slave. Master
kích hoạt tín hiệu này nếu muốn
truyền/nhận dữ liệu với Slave
Đầu ra dữ liệu nối tiếp

Đầu vào dữ liệu nối tiếp

1.3.2.2. Truyền thông SPI
 Mô tả cơ chế
Hình dưới đây mô tả quá trình truyền một gói dữ liệu thực hiện bởi module
SPI, bên trái là chip Master và bên phải là Slave.

Hình 1.7: Truyền dữ liệu SPI


 Giản đồ thời gian của giao tiếp SPI
Khi Master muốn truyền/nhận dữ liệu, nó kéo tín hiệu chọn chip SS xuống
mức thấp. Sau đó Master cung cấp xung nhịp đồng bộ việc truyền/nhận dữ liệu trên
đường SCK.
Vị trí lấy mẫu dữ liệu và dịch dữ liệu theo xung SCK phụ thuộc vào hai


12

thông số cấu hình được quy định bởi chuẩn SPI là pha của xung nhịp (CPHS –
Clock Phase) và cực của xung nhịp (CPOL – Clock Polarity)

Hình 1.8: Giản đồ thời gian của giao tiếp SPI

Cực của xung nhịp quyết định trạng thái rảnh của tín hiệu SCK. Nếu CPOL
= 0 thì mức logic khi ở trạng thái rảnh của SCK là mức thấp. Nếu CPOL = 1 thì
ngược lại.
Dựa vào pha của xung nhịp chúng ta sẽ biết lấy điểm mẫu ở đâu:
- Nếu pha của xung nhịp bằng 0 thì dữ liệu được lấy mẫu khi SCK chuyển từ
trạng thái rảnh sang trạng thái hoạt động, có thể là cạnh lên hoặc cạnh xuống tùy
vào giá trị CPOL.
- Nếu pha của xung nhịp bằng 1 thì dữ liệu được lấy mẫu khi SCK chuyển từ
trạng thái hoạt động sang trạng thái rảnh.
1.3.2.3. SPI là giao tiếp đồng bộ
Module SPI cho phép giao tiếp nối tiếp đồng bộ kép giữa vi xử lý với thiết bị
ngoại vi:
- Tín hiệu SCK được cung cấp bởi Master nhằm tạo xung đồng bộ cho phép
dữ liệu được truyền đi hoặc khi đọc dữ liệu nhận được.
- Khi tín hiệu SCK được phát ra thì tín hiệu này có thể thay đổi nhưng không
làm hỏng dữ liệu. Lí do là trong giao tiếp SPI, tốc độ của dữ liệu truyền đi sẽ thay

đổi theo sự thay đổi của SCK. Điều này rất có lợi nếu như vi xử lý bị cấp xung nhịp
không chính xác.


13

1.3.2.4. SPI là giao tiếp trao đổi dữ liệu
Dữ liệu lúc nào cũng được truyền qua lại giữa các thiết bị SPI. Không có
khái niệm thiết bị phát hay thiết bị nhận trong giao tiếp SPI mà mỗi thiết bị có 2
đường dữ liệu, một đường dữ liệu vào và một đường dữ liệu ra. Dữ liệu truyền đi
được điều khiển bởi xung SCK từ Master.
Khi được truyền đi, dữ liệu vào cần phải được đọc ngay nếu không sẽ bị mất
đi và khi đó giao tiếp SPI có thể sẽ ngưng hoạt động. Để tránh tình trạng này, lúc
nào ta cũng phải đọc dữ liệu về ngay sau khi truyền đi cho dù dữ liệu đó không thực
sự cần thiết.
Thường thì một tín hiệu chọn Slave sẽ tác động mức thấp để chỉ ra Slave nào
được truy cập. Tín hiệu này phải được sử dụng khi có nhiều hơn một Slave trong
cùng hệ thống và thường không sử dụng đến khi trong mạch chỉ có một Slave. Tuy
nhiên, theo nguyên tắc thì ta nên sử dụng tín hiệu này trong cả hai trường hợp trên.
Tín hiệu SS sẽ chỉ ra Slave nào mà Master muốn bắt đầu một quá trình trao
đổi dữ liệu bằng giao tiếp SPI giữa thiết bị Slave đó và chính nó. Nếu tín hiệu trên
đường SS là mức thấp thì chứng tỏ giao tiếp SPI đang hoạt động. Ngược lại là mức
cao thì giao tiếp SPI sẽ không hoạt động.
SPI có 4 chế độ hoạt động, phụ thuộc vào cực tính và pha của xung nhịp.
Trong trường hợp cực âm của xung nhịp, tín hiệu SCK sẽ ở mức thấp trong quá
trình nghỉ và chuyển sang mức cao trong quá trình truyền dữ liệu. Ngược lại, đối
với trường hợp cực dương của xung nhịp, tín hiệu SCK ở mức cao trong quá trình
nghỉ và chuyển sang mức thấp khi truyền dữ liệu:
Bảng 1.2: Các chế độ truyền thông trong giao tiếp SPI


Chế độ

CPOL

CPHS

0

0

0

1

0

1

2

1

0

3

1

1



14

 SPI chế độ 0
Mô tả: Xung dương, dữ liệu được lấy mẫu tại sườn lên của xung nhịp.
Giản đồ thời gian:

Hình 1.9: Giản đồ thời gian của SPI ở chế độ 0

 SPI chế độ 1
Mô tả: Xung dương, dữ liệu được lấy mẫu tại sườn xuống của xung nhịp.
Giản đồ thời gian:

Hình 1.10: Giản đồ thời gian của SPI ở chế độ 1

 SPI chế độ 2
Mô tả: Xung âm, dữ liệu được lấy mẫu tại sườn xuống của xung nhịp.
Giản đồ thời gian:

Hình 1.11: Giản đồ thời gian của SPI ở chế độ 2


15

 SPI chế độ 3
Mô tả: Xung âm, dữ liệu được lấy mẫu tại sườn lên của xung nhịp.
Giản đồ thời gian:

Hình 1.12: Giản đồ thời gian của SPI ở chế độ 3


1.3.3. Các kiểu kết nối SPI
1.3.3.1. Kết nối điểm - điểm
Đây là kiểu kết nối cơ bản nhất của giao tiếp SPI là một Master kết nối với
một Slave.

SPI Master

SCLK

SCLK

MOSI

MOSI

MISO

MISO

SS

SS

SPI Slave

Hình 1.13: Kết nối điểm - điểm một Master nối với một Slave

Cả Master và Slave đều có thanh ghi dịch nối tiếp (thanh ghi dữ liệu 8 bit) ở
bên trong. Thiết bị Master bắt đầu việc trao đổi dữ liệu bằng cách truyền đi một bit
vào thanh ghi dịch của nó, sau đó bit dữ liệu sẽ được đưa sang Slave theo đường tín

hiệu MOSI (SDI), Slave sẽ truyền dữ liệu nằm trong thanh ghi dịch của chính nó
ngược trở về Master thông qua đường tín hiệu MISO (SDO). Bằng cách này, dữ liệu
của hai thanh ghi sẽ được trao đổi với nhau. Việc đọc và ghi dữ liệu vào Slave diễn
ra cùng một lúc nên tốc độ trao đổi dữ liệu diễn ra rất nhanh. Do đó, giao tiếp SPI là
một giao tiếp rất có hiệu quả.
Trong kiểu kết nối này, chỉ có thiết bị Master mới có thể điều khiển (phát ra)
xung SCK. Dữ liệu sẽ không được truyền đi nếu như Master không cung cấp xung


16

SCK và tất cả các thiết bị Slave đều được điều khiển bởi xung nhịp phát ra từ
Master trong khi đó, Slave lại không có khả năng phát xung.
1.3.3.2. Kết nối nhiều Slave
 Kết nối song song
Trong cách kết nối này, tín hiệu SCK và SDO từ Master được cung cấp đến
từng Slave. Đường tín hiệu SDO của các Slave nối chung lại với nhau và truyền về
Master. Lúc này Master sẽ lựa chọn Slave nào để trao đổi dữ liệu thông qua các
chân SS riêng lẻ.

Hình 1.14: Kết nối nhiều Slave song song

 Kết nối nối tiếp
Trong kết nối này, chân SS và SCK của Master nối song song đến tất cả các
Slave. Chân SDO của Slave trước nối đến SDI của Slave sau. Chân MOSI của
Master nối đến SDI của Slave đầu tiên trong chuỗi và MISO được nối đến SDO của
Slave cuối cùng trong chuỗi.
Việc truyền dữ liệu từ Master đến các Slave và dữ liệu Master nhận từ Slave
cuối cùng được minh họa trong hình 1.15.



×