Thiết kế máy in hóa đơn sử dụng giao thức USARTThiết kế máy in hóa đơn sử dụng giao thức USARTThiết kế máy in hóa đơn sử dụng giao thức USARTThiết kế máy in hóa đơn sử dụng giao thức USARTThiết kế máy in hóa đơn sử dụng giao thức USARTThiết kế máy in hóa đơn sử dụng giao thức USARTThiết kế máy in hóa đơn sử dụng giao thức USARTThiết kế máy in hóa đơn sử dụng giao thức USART
Trang 1QUÁ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
Trang 2LỜ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
Trang 3LỜ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
Trang 4MỤ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
Trang 53.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
Trang 6DANH MỤC CHỮ VIẾT TẮT
LED Light Emitting Diode Đi ốt phát quang
MISO Master Input Slave Output Đầu vào chíp chủ động đầu ra chíp
thụ động
MOSI Master Output Slave Input Đầu ra chíp chủ động đầu vào chíp
thụ động
SPI Serial Peripheral Interface Giao diện ngoại vi nối tiếp
USART
Universal Synchronous/Asynchronous Receiver/Transmitter
Bộ truyền nhận nối tiếp đồng bộ và bất đồng bộ
Trang 7DANH 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
Trang 8DANH 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
Trang 9Hì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
Trang 10Trong 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
Trang 11CHƯƠ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
Trang 12cá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
Trang 13phù 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
Trang 14má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
Trang 15Khá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
Trang 16thô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
Trang 17Data: 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
Trang 18cô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
Trang 19Chỉ 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
Trang 20Có 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
Slave: Đầu vào
Xung nhịp đồng bộ truyền/nhận dữ liệu luôn được cung cấp bởi Master
Slave: Đầ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
Master: MOSI
Slave: SDO hoặc SO Đầu ra Đầu ra dữ liệu nối tiếp
Master: MISO
Slave: SDI hoặc SI Đầu vào Đầ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
Trang 21thô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
Trang 221.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
Trang 24 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
SS
MOSI MISO
SCLK
SPI Slave
SS
MOSI MISO SCLK
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
Trang 25SCK 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
Trang 26Hình 1.15: Kết nối nối tiếp
1.3.3.3 Kết nối nhiều Master
Đối với kiểu kết nối này có nhiều cách kết nối và nhiều vấn đề hơn
Kết nối nhiều Master song song đến một Slave
Với cách kết nối này, phần cứng ngoại vi phải hỗ trợ thêm các tín hiệu điều khiển khác để tránh xung đột khi hai Master cùng truy xuất đến Slave Ví dụ kết nối
nhiều Master song song đến một Slave như trong hình 1.16:
Hình 1.16: Kết nối hai Master song song đến một Slave
Giải pháp ở đây là ngoài các tín hiệu SPI thông thường, phần cứng của hai Master SPI hỗ trợ thêm tín hiệu CS_IN để Master này biết Master kia có đang chọn
Trang 27Slave hay không Đồng thời tín hiệu SS nối đến Slave được mắc qua một cổng XNOR để nếu hai Master cùng chọn thì tín hiệu SS của Slave vẫn không tích cực Bên cạnh đó, trong mạch trên, ngoài txd (chính là tín hiệu MOSI) thì đường SCK cũng phải thả nổi khi Master không chọn Slave
Kết nối hai Master với nhau
Đây là một dạng khác của multi Master Trong đó hai Master nối trực tiếp với nhau, giao tiếp qua 5 đường
Hình 1.17: Kết nối hai Master với nhau
Chương tiếp theo sẽ trình bày về thiết kế phần cứng cho máy in hóa đơn
Trang 28CHƯƠNG 2: THIẾT KẾ VÀ THỰC THI PHẦN CỨNG
Sơ đồ khối phần cứng máy in bao gồm các khối sau:
Hình 2.1: Sơ đồ khối phần cứng
Phần cứng máy in hóa đơn bao gồm đầu in, vi điều khiển, bộ nhớ, nút bấm, đèn LED, khối nguồn Chức năng mỗi khối:
- Khối nguồn: Có chức năng cung cấp nguồn cho thiết bị
- Vi điều khiển: Là bộ xử lý trung tâm điều khiển mọi hoạt động của máy in, điều khiển đầu in thực hiện in hóa đơn, giao tiếp với bộ nhớ để lưu dữ liệu, giao tiếp với thiết bị tính tiền để nhận dữ liệu hóa đơn cần in
- Bộ nhớ: Là một IC nhớ có chức năng lưu dữ liệu
- Đầu in: Có chức năng thực hiện việc in hóa đơn dưới sự điều khiển của vi điều khiển
- Nút bấm và đèn LED: Gồm có 1 nút bấm và 1 đèn LED hiển thị Có chức năng điều khiển và thông báo trạng thái hoạt động của máy in
- Cổng kết nối với thiết bị tính tiền, máy tính: Gồm có 3 dây (Dây đất, dây