1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

CHẾ TẠO MẠCH COM ẢO DỰA TRÊN MẠCH PHÁT TRIỂN STM32F4DISCOVERY

77 290 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

Định dạng
Số trang 77
Dung lượng 1,03 MB

Nội dung

Mục đích nghiên cứu/mục tiêu nghiên cứu Thiết kế mạch COM ảo được nối vào máy tính thông qua cổng USB, khi kết nối vào máy tính thiết bị này đóng vai trò như một cổng COM và có thể giao

Trang 1

ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN

CHẾ TẠO MẠCH COM ẢO DỰA TRÊN MẠCH PHÁT TRIỂN

Trang 2

UỶ BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC SÀI GÒN

BÁO CÁO TỔNG KẾT

ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN

CHẾ TẠO MẠCH COM ẢO DỰA TRÊN MẠCH PHÁT TRIỂN

Tp Hồ Chí Minh, Tháng 5 Năm 2016

Trang 3

MỤC LỤC

BẢN TÓM TẮT ĐỀ TÀI 1

DANH MỤC BẢNG BIỂU 2

DANH MỤC CÁC CHỮ VIẾT TẮT 3

THÔNG TIN KẾT QUẢ NGHIÊN CỨU 4

MỞ ĐẦU 5

1 Lý do chọn đề tài 5

2 Nội dung và bố cục đề tài 7

3 Kết luận 7

CHƯƠNG 1: MÔ HÌNH HOẠT ĐỘNG CỦA MẠCH COM ẢO 8

1.1 Virtual Com Port (VCP) 8

1.2 Giao tiếp giữa VCP (STM32F4) và CP2102 9

1.3 Kết luận 10

CHƯƠNG 2: HỆ THỐNG MẠCH COM ẢO 11

2.1 Mạch phát triển STM32F4-DISCOVERY 11

2.2 Mạch chuyển USB sang UART CP2102 Nạp Pro Mini 17

2.3 Cấu trúc cổng COM 18

2.4 Kết luận 18

CHƯƠNG 3: CÁC CÔNG NGHỆ HỖ TRỢ CHO VIỆC THIẾT LẬP HỆ THỐNG PHẦN MỀM MẠCH COM ẢO 19

3.1 Công nghệ NET (C#) 19

3.1.1 Cấu trúc NET FrameWork 19

3.1.2 Lập trình hệ thống mô phỏng mạch COM ảo 23

3.2 Bộ công cụ lập trình nhúng Keil C 24

3.3 Giao tiếp với khối truyền/thu không đồng bộ đa năng (UART) 26

3.4 VCP (Virtual Com Port) 28

3.5 Kết luận 29

CHƯƠNG 4: KẾT QUẢ NGHIÊN CỨU 30

4.1 Nhận thiết bị 30

Trang 4

4.2 Truyền và nhận dữ liệu 33

4.3 Kết luận 38

CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ 39

5.1 Kết quả đạt được 39

5.2 Kiến nghị 39

5.2.1 Áp dụng thực tế 39

5.2.2 Hướng phát triển 40

TÀI LIỆU THAM KHẢO 41

PHỤ LỤC 42

Trang 5

1

BẢN TÓM TẮT ĐỀ TÀI CHẾ TẠO MẠCH COM ẢO DỰA TRÊN MẠCH PHÁT TRIỂN

2 Mục đích nghiên cứu/mục tiêu nghiên cứu

Thiết kế mạch COM ảo được nối vào máy tính thông qua cổng USB, khi kết nối vào máy tính thiết bị này đóng vai trò như một cổng COM và có thể giao tiếp với các thiết bị có giao tiếp COM

3 Nhiệm vụ/nội dung nghiên cứu/câu hỏi nghiên cứu

Nghiên cứu các tính năng cũng như các thư viện của board stm32f4-discovery

để phát triển chương trình COM ảo

4 Phương pháp nghiên cứu

Nghiên cứu lý thuyết kết hợp thực tiễn gồm các bước sau:

a) Nghiên cứu dạng COM ảo đang có trên thị trường hiện nay

b) Nghiên cứu chip ARM thông qua board phát triển stm32f4-Discovery

c) Nghiên cứu công cụ lập trình nhúng cho chip ARM đã chọn

d) Thiết kế một COM ảo

5 Kết quả nghiên cứu và các sản phẩm

a) Mạch phát triển stm32f4-Discovery

b) Cơ chế hoạt động của cổng COM

c) Thiết kế mạch COM ảo

Trang 6

2

DANH MỤC BẢNG BIỂU

Bảng 2.1 Tổng hợp các chân giao tiếp UART và USART của mạch DISCOVERY .12 Bảng 2.2 Cặp chân giao tiếp UART được sử dụng trong đề tài 16

Trang 7

STM32F4-3

DANH MỤC CÁC CHỮ VIẾT TẮT

UART Universal Asynchronous Receiver/Transmitter

USART Universal Synchronous/Asynchronous Receiver/Transmitter USB Universal Serial Bus

FCL Framework Class Library

JVM Java Virtual Machine

MSIL Microsoft Intermediate Language

RTOS RealTime Operating Systems

TCP Transmission Control Protocol

Trang 8

4

THÔNG TIN KẾT QUẢ NGHIÊN CỨU

Đề tài hệ thống mạch COM ảo đã thực hiện được các công việc sau:

 Thiết kế hệ thống phần cứng mạch COM ảo gồm các phần sau:

o Mạch phát triển stm32f4-Discovery

o Cơ chế hoạt động của cổng COM

o Thiết kế mạch COM ảo

 Xây dựng hệ thống phần mềm mạch COM ảo gồm các phần sau:

Trang 9

Ngày nay, do tốc độ truyền dữ liệu chậm hơn so với các cổng mới ra đời nên các cổng nối tiếp đang dần bị loại bỏ trong các chuẩn máy tính hiện nay, chúng được thay thế bằng các cổng có tốc độ nhanh hơn như: USB, FireWire

Cổng nối tiếp thường được tích hợp sẵn trên các máy tính cá nhân từ giữa năm

1990 trong các hệ thống máy tính cá nhân sử dụng CPU thế hệ thứ tư Chúng thường được tích hợp sẵn trên các bo mạch chủ thông qua chip Super I/O (thay cho các chíp UART trước đây) để thuận tiện hơn mà không cần sử dụng các bo mạch riêng cho chúng Tuy nhiên, (ngay như đầu bài này đã nói) ngày nay chúng đã dần biến mất khỏi các hệ thống máy tính cá nhân

Ngày nay rất nhiều máy tính cá nhân nói chung cũng như máy tính xách tay nói riêng đã không còn trang bị cổng nối tiếp nữa, đa số các bo mạch chủ trung và cao cấp cũng dần loại bỏ cổng nối tiếp khiến cho một số người sử dụng đã gặp khó khăn khi còn sử dụng các thiết bị cũ, truyền dẫn dữ liệu cũng như giao tiếp thông tin (chẳng hạn các modem quay số)

Trong vòng 20 năm qua, những tiến bộ vượt bậc của khoa học công nghệ đã mang đến rất nhiều tiện ích, dịch vụ cho người dùng trên toàn thế giới, trong đó có Việt Nam, với chiến lược phát triển những công nghệ tiên tiến nhất, nhằm mục đích đi tắt, đón đầu, tạo ra nền tảng công nghệ cho các ngành và lĩnh vực khác phát triển bền vững

Với những tiện ích ngày càng phong phú, cộng với giá cả ngày càng trở nên rẻ hơn và cạnh tranh hơn, tốc độ truyền dữ liệu ngày càng nhanh hơn Chính vì thế cổng COM không còn được tích hợp trên máy tính ngày nay, mà thay vào đó là máy tính chỉ còn tích hợp cổng USB

Trang 10

6

USB (Universal Serial Bus) là một chuẩn kết nối tuần tự đa dụng trong máy tính USB sử dụng để kết nối các thiết bị ngoại vi với máy tính, chúng thường được thiết kế dưới dạng các đầu cắm cho các thiết bị tuân theo chuẩn cắm là chạy mà với tính năng cắm nóng thiết bị (nối và ngắt các thiết bị không cần phải khởi động lại hệ thống)

USB có những đặc trưng sau đây:

 Cho phép mở rộng 127 thiết bị kết nối cùng vào một máy tính thông qua một cổng USB duy nhất (bao gồm các hub USB)

 Những sợi cáp USB riêng lẻ có thể dài tới 5 mét, với những hub, có thể kéo dài tới 30 mét (6 sợi cáp nối tiếp nhau thông qua các hub) tính từ đầu cắm trên máy tính

 Với USB 2.0 chuẩn tốc độ cao, đường truyền đạt tốc độ tối đa đến 480 Mbps

 Cáp USB gồm hai sợi nguồn (+5V và dây chung GND) cùng một cặp gồm hai sợi dây xoắn để mang dữ liệu

 Trên sợi nguồn, máy tính có thể cấp nguồn lên tới 500mA ở điện áp 5V một chiều (DC)

 Những thiết bị tiêu thụ công suất thấp (ví dụ: chuột, bàn phím, loa máy tính công suất thấp ) được cung cấp điện năng cho hoạt động trực tiếp từ các cổng USB mà không cần có sự cung cấp nguồn riêng (thậm chí các thiết bị giải trí số như SmartPhone, PocketPC ngày nay sử dụng các cổng USB để sạc pin) Với các thiết bị cần sử dụng nguồn công suất lớn (như máy in, máy quét ) không sử dụng nguồn điện từ đường truyền USB như nguồn chính của chúng, lúc này đường truyền nguồn chỉ có tác dụng như một sự so sánh mức điện thế của tín hiệu Hub có thể có nguồn cấp điện riêng để cấp điện thêm cho các thiết

bị sử dụng giao tiếp USB cắm vào nó bởi mỗi cổng USB chỉ cung cấp một công suất nhất định

 Những thiết bị USB có đặc tính cắm nóng, điều này có nghĩa các thiết bị có thể được kết nối (cắm vào) hoặc ngắt kết nối (rút ra) trong mọi thời điểm mà người

sử dụng cần mà không cần phải khởi động lại hệ thống

Trang 11

sử dụng phần còn lại

Chính vì vậy, để bắt kịp với thời đại, nâng cao chất lượng dịch vụ, đáp ứng được nhu cầu của người sử dụng, giảm thiểu chi phí sản xuất, tăng cường việc truyền dẫn thông tin, linh hoạt trong quá trình truyền và nhận tín hiệu, ta cần phải có một giải pháp mạch COM ảo, để giúp cho việc truyền và nhận dữ liệu, giao tiếp thông tin trở nên nhanh hơn nhằm đáp ứng kịp thời nhu cầu người sử dụng ngày nay Nhờ đó có thể tăng sức mạnh cạnh tranh trong nền kinh tế mở hiện nay Đây đang là một vấn đề cấp bách đặt ra đối với các nhà cung cấp thiết bị điện tử tại Việt Nam

2 Nội dung và bố cục đề tài

Nội dung đề tài được tổ chức thành các phần chính như sau:

 Phần mở đầu: Trình bày lý do và mục tiêu nghiên cứu xây dựng hệ thống mạch COM ảo, truyền dẫn dữ liệu, giao tiếp thông tin

 Chương 1: Mô hình hoạt động của hệ thống mạch COM ảo

 Chương 2: Hệ thống mạch COM ảo

 Chương 3: Các công nghệ hỗ trợ việc thiết lập hệ thống phần mềm mạch COM

ảo

 Chương 4: Kết quả nghiên cứu

 Chương 5: Kết luận và kiến nghị

3 Kết luận

Nghiên cứu xây dựng hệ thống mạch COM ảo có ý nghĩa rất quan trọng trong việc ứng dụng điện tử viễn thông và công nghệ thông tin để giúp tối ưu hóa việc sử dụng cổng USB trên các máy tính

Trang 12

8

CHƯƠNG 1: MÔ HÌNH HOẠT ĐỘNG CỦA MẠCH COM ẢO

Chương này sẽ mô tả cụ thể các tính năng, cách thức hoạt động và quá trình truyền và nhận dữ liệu cũng như trao đổi thông tin giữa VCP và CP2102

1.1 Virtual Com Port (VCP)

Để giao tiếp giữa các thiết bị với máy tính không có cổng COM, ta có thể sử dụng các thiết bị chuyển đổi từ USB sang UART như FTDI, CP2102,… để có thể giao tiếp giữa các thiết bị đó với máy tính thông qua cổng USB

Ta sẽ ứng dụng từ các chức năng của STM32F4 Discovery để thực hiện lập trình cho nó trở thành một cổng COM ảo Điều đó có nghĩa là ta sẽ không cần sử dụng các thiết bị chuyển đổi USB sang UART để có thể giao tiếp giữa các thiết bị với máy tính mà STM32F4 Discovery sẽ hiển thị trên máy tính như một cổng COM

Chương trình sẽ cung cấp một cổng COM ảo thông qua cổng micro USB của Board Stm32f4-Discovery và sau khi tiến hành cài đặt STM32 Virtual COM Port Driver sau đó kết nối với máy tính thì trên máy tính sẽ hiển thị nên công COM ảo này

và ta có thể thực hiện truyền tải dữ liệu như một cổng COM

Trang 13

9

Hình 1.2 Sơ đồ mô tả trạng thái của STM32F4 khi chạy chương trình VCP

CODE: tham khảo tại phụ lục 1 (trang 43)

1.2 Giao tiếp giữa VCP (STM32F4) và CP2102

STM32F4 sẽ nhận dữ liệu tại USB_VCP và sẽ gửi lại dữ liệu đó tới bộ UART4 Ngược lại CP2102 sẽ nhận dữ liệu từ bộ UART4 và sau đó sẽ gửi lại dữ liệu qua USB_VCP

• VCP(STM32F4)

Bắt đầu

Nhận dữ liệu tại USB_VCP

Gửi dữ liệu nhận được tới UART4

Bắt đầu

Kiểm tra cấu hình USB và Driver

Đúng

Hiển thị cổng COM trên máy

tính đồng thời Thực hiện bật

LED xanh và tắt LED đỏ

Sai máy tính đồng thời thực hiện bật Không hiển thị cổng COM trên

LED đỏ và tắt LED xanh

Trang 14

10

CP2102

Hình 1.3 Sơ đồ mô tả cách thức truyền dữ liệu giữa VCP(STM32F4) và CP2102

CODE: tham khảo tại phụ lục 2 (trang 45)

Khi ta kết nối STM32F4 (VCP) và CP2102 bằng cách nối chân PC10 (UART4_TX) của STM32F4 với chân RX của CP2102 và chân PC11 (UART4_RX) của STM32F4 với chân TX của CP2102 thì ra có thể truyền dữ liệu giữa hai thiết bị với nhau thông qua các hàm truyền và nhận dữ liệu

Tại STM32F4 (VCP) sẽ nhận dữ liệu được gửi từ CP2102 thông qua hàm:

TM_USB_VCP_Getc (*) và truyền dữ liệu tới CP2102 bằng hàm SendChar (*) Còn

tại CP2102 sẽ nhận dữ liệu được từ STM32F4 (VCP) thông qua hàm

USART_ReceiveData (*) và truyền dữ liệu tới STM32F4 (VCP) qua hàm TM_USB_VCP_Putc (*)

(*): Tham khảo phụ lục 2 trang 42

1.3 Kết luận

Chương 1 cho chúng ta cái nhìn tổng quát về cơ chế hoạt động cũng như cách thức truyền tải dữ liệu giữa VCP (STM32F4) và CP2102 Hệ thống này gồm 2 khối chương trình chính, mỗi khối đảm nhiệm một tính năng riêng, tuy nhiên chúng có liên lạc mật thiết với nhau trên nền tảng là giao thức TCP để tạo nên một hệ thống truyền dẫn dữ liệu thống nhất

Bắt đầu

Nhận dữ liệu tại UART4

Gửi dữ liệu nhận được tới USB_VCP

Trang 15

11

CHƯƠNG 2: HỆ THỐNG MẠCH COM ẢO

Chương 2 sẽ trình bày các tính năng của mạch phát triển chính cũng như chức năng và thông số của module CP2102

2.1 Mạch phát triển STM32F4-DISCOVERY

STM32F4-DISCOVERY giúp khám phá các tính năng của chip ARM nhằm phát triển các ứng dụng một cách dễ dàng Nó bao gồm tất cả tính năng cần thiết cho người mới bắt đầu cũng như người dùng có kinh nghiệm tiếp cận chip ARM một cách nhanh chóng

Hình 2.1 Board mạch stm32F4-DISCOVERY

Trang 16

12

STM32F4-DISCOVERY gồm các tính năng sau:

 Vi điều khiển STM32F407VGT6 với 1 MB bộ nhớ Flash, 192 KB bộ nhớ ST-LINK / V2 được sử dụng cho việc nạp và debug

 Nguồn : được cung cấp thông qua cổng USB hoặc từ một nguồn cung cấp điện

áp 5V bên ngoài

 Nguồn cung cấp ra bên ngoài: 3V và 5V

 LIS302DL hoặc LIS3DSH, cảm biến chuyển động ST MEMS, 3 trục đầu ra kỹ thuật số gia tốc

 MP45DT02, ST MEMS cảm biến âm thanh, microphone kỹ thuật số đa hướng

 CS43L22, DAC âm thanh với lớp tích hợp trình điều khiển loa D

 LD1 (màu đỏ / màu xanh lá cây) để giao tiếp USB

 LD2 (màu đỏ) cho điện 3.3V

 Bốn đèn LED dành cho người dùng sử dụng, LD3 (màu cam), LD4 (màu xanh), LD5 (màu đỏ) và LD6 (màu xanh)

 2 USB OTG LED LD7 (màu xanh) và VBus LD8 (màu đỏ) quá dòng

 Hai nút bấm (USER và RESET)

 USB OTG với kết nối micro-AB

STM32F4 bao gồm các bộ giao tiếp UART và USART sau:

Trang 17

DCMI_D11

WKUP

USART2_CTS USART4_TX/

ETH_MII_CRS TIM2_CH1_ET TIM5_CH1/

TIMM2_CH2/

ADC123_IN1

TIM5_CH3/

Trang 20

Các chân của mạch giao tiếp được sử dụng trong đề tài:

Bảng 2.2 Cặp chân giao tiếp UART được sử dụng trong đề tài

Trang 21

17

2.2 Mạch chuyển USB sang UART CP2102 Nạp Pro Mini

Mạch chuyển USB sang UART CP2102 Nạp Pro Mini sử dụng chip CP2102 của hãng SILICON LABS Chip hỗ trợ các loại hệ điều hành phổ biến như: Win8, Win7, Vista, Server 2003, XP, Mac OS - X và các hệ điều hành phổ biến khác

CP2102 không sử dụng thạch anh ngoài như các chip PL2303 Module có sẵn ngõ ra điện áp 3.3V Trên mạch có 6 cổng đầu ra: 3.3V DTR 5V Tx Rx Gnd Trong

đó chân DTR được sử dụng để reset vi điều khiển trong quá trình nạp

Tốc độ tối đa 115200 bps Module có sẵn LED nguồn sáng khi gắn vô máy tính

và LED báo hiệu Tx/Rx sẽ sáng khi module nhận/gửi dữ liệu

Driver tương thích với nhiều hệ điều hành Đã test và hoạt động tốt trên Windows, Mac OS, Linux Riêng với Gnu/Linux, driver đã được biên dịch sẵn trong kernel, bạn không cần cài thêm gì cả

Hình 2.2 Mạch chuyển USB sang UART CP2102 Nạp Pro Mini

Mô tả chân:

 5V: nguồn điện áp dương (tối đa 500mA)

 DTR: Chân reset để nạp cho vi điều khiển

 3.3V: nguồn điện áp dương 3.3V

 TXD: chân truyền dữ liệu UART, dùng kết nối đến chân Rx của các module khác, không kết nối trực tiếp đến mức của RS232

Trang 22

… Việc trao đổi tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền)

Các phương thức nối giữa DTE và DCE:

 Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng

 Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ được truyền theo 1 hướng

 Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng

Định dạng của khung truyền dữ liệu như sau:

Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V) Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền

từ D0 đến D7 và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường truyền

Trang 23

3.1 Công nghệ NET (C#)

.NET Framework của Microsoft là một nền tảng lập trình tập hợp các thư viện lập trình có thể được cài thêm hoặc đã có sẵn trong các hệ điều hành Windows Nó cung cấp những giải pháp thiết yếu cho những yêu cầu thông thường của các chương trình điện toán như lập trình giao diện người dùng, truy cập dữ liệu, kết nối cơ sở dữ liệu, ứng dụng web, các giải thuật số học và giao tiếp mạng Ngoài ra, NET Framework còn quản lý việc thực thi các chương trình được viết dựa trên công nghệ NET do đó người dùng cần phải cài NET Framework để có thể chạy các chương trình được viết trên nền NET

Về chức năng, NET Framework có 3 khối chức năng là: Trình diễn (Presentation), Dữ liệu (Data), Giao tiếp (Communication)

Về kỹ thuật, hiện tại Microsoft giới thiệu 4 kỹ thuật mới và nổi bật nhất là: Windows CardSpace (InfoCard), Windows Presentation Foundation (Avalon), Windows Communication Foundation (Indigo), Windows Workflow Foundation (Workflow)

3.1.1 Cấu trúc NET FrameWork

.NET Framework bao gồm ba phần là bộ thực thi ngôn ngữ chung (Common Language Runtime), các lớp lập trình hợp nhất hay còn gọi là các thư viện lớp cơ sở (Base Class Libraries) và một phiên bản cấu thành của Microsoft Active Server Pages gọi là Microsoft ASP.NET Trên thực tế, ASP.NET và Windows Forms là hai thành phần nằm trong Base Class Libraries, nên có thể xem NET Framework bao gồm 2 phần chính là Common Language Runtime (CLR) và NET Framework Class Library (FCL) Một trong các thành phần này đều có vai trò cực kỳ quan trọng trong việc phát triển các dịch vụ và các ứng dụng NET

Trang 24

20

3.1.1.1 Common Language Runtime - Bộ thực thi ngôn ngữ chung

Common Language Runtime (gọi tắt là bộ thực thi – CLR) được xây dựng trên các dịch vụ hệ điều hành CLR là nền tảng của NET Framework, nó đảm nhận các công việc sau:

 Là công cụ thực thi mã trung gian (tựa JVM)

 Biên dịch (Just-in-time compiler)

 Thực thi mã nguồn

 Quản lý bộ nhớ

 Thực thi luồng (Thread execution)

 Xử lý lỗi (Error-handling)

 Xác nhận mã nguồn an toàn (managed code)

CLR đã được phát triển ở tầm cao hơn so với các runtime trước đây như runtime chẳng hạn, bởi nó đạt được những khả nǎng như tích hợp các ngôn ngữ, bảo mật truy cập mã, quản lý thời gian sống của đối tượng và hỗ trợ gỡ lỗi

VB-Mã được biên dịch và hướng tới CLR có tên “managed code” “Managed code” cung cấp siêu dữ liệu (metadata) cần thiết cho CLR để cung cấp các dịch vụ hỗ trợ đa ngôn ngữ, bảo mật mã, quản lý thời gian sống của đối tượng và quản lý bộ nhớ

Nếu NET Framework tồn tại (và đã được cài đặt) trên một hệ điều hành, thì hệ điều hành đó có thể chạy bất kỳ chương trình NET nào Tính năng giúp một chương trình có thể chạy (không có sửa đổi) trên nhiều hệ điều hành khác nhau được gọi là sự độc lập về nền tảng Code được viết một lần có thể được sử dụng trên mọi loại máy tính mà không sửa đổi, giúp tiết kiệm cả thời gian và tiền bạc

.NET Framework cũng cung cấp mức độ tương tác cao giữa các ngôn ngữ Chương trình viết bằng các ngôn ngữ khác nhau đều được biên dịch thành các phần MSIL khác nhau có thể được kết hợp để tạo ra một chương trình thống nhất MSIL cho phép NET Framework trở thành ngôn ngữ không phụ thuộc, bởi vì các chương trình NET không gắn với một ngôn ngữ lập trình cụ thể nào cả Bất cứ ngôn ngữ nào

có thể được biên dịch sang MSIL được gọi là ngôn ngữ tương thích với NET Danh sách một số ngôn ngữ lập trình khả dụng với NET được liệt kê trong bảng sau:

Trang 25

 Common Language Infrastructure (CLI)

Mục đích của Common Language Infrastructure (CLI) là cung cấp một nền tảng ngôn ngữ trung lập để phát triển và thực thi ứng dụng, bao gồm cả chức năng để

xử lý các lỗi, thu gom rác thải (garbage collection), bảo mật và khả năng tương tác Bằng cách thực hiện những khía cạnh cốt lõi của NET Framework trong phạm vi của mình, CLI sẽ không được gắn với một ngôn ngữ duy nhất mà sẽ có mặt trên nhiều ngôn ngữ được hỗ trợ bởi NET framework

 Biên dịch trong NET

Common Language Runtime (CLR) là một phần trung tâm của NET Framework thực hiện các chương trình NET

Chương trình được biên dịch vào các hướng dẫn - cụ thể (machine-specific) của máy theo hai bước Đầu tiên, chương trình được dịch thành Microsoft Intermediate Language (MSIL), trong đó xác định các hướng dẫn cho các CLR Code được chuyển đổi thành MSIL từ các ngôn ngữ khác và các nguồn có thể được kết hợp với nhau bằng CLR Các MSIL cho các thành phần của một ứng dụng được đặt vào file thực thi của ứng dụng (được gọi là assembly) Khi ứng dụng thực thi, trình biên dịch (được gọi là biên dịch just-in-time hoặc biên dịch JIT) CLR phiên dịch MSIL trong file thực thi vào mã máy (đối với một nền tảng cụ thể), sau đó mã máy được thực thi trên nền tảng đó MSIL là ngôn ngữ trung gian, là một giải pháp để giúp cho các lập trình viên không cần quan tâm đến việc lập trình bằng ngôn ngữ nào trong bộ NET

Việc biên dịch chương trình sang MSIL giúp chương trình đó có thể chạy trên nhiều máy, nhiều nền tảng khác nhau

Tại sao phải biên dịch 2 lần:

 Độc lập với phần cứng

o NET framewwork có thể cài đặt trên nhiều platform

Trang 26

Microsoft Foundation Class (MFC) là bộ thư viện mà lập trình viên Visual C++

sử dụng trong khi Java Foundation Class (JFC) là bộ thư viện dành cho các lập trình viên Java Bạn có thể xem NET Framework Class Library (FCL) là bộ thư viện dành cho các lập trình viên NET

Với hơn 80000 lớp đối tượng (với NET 4.0) để gọi thực hiện đủ các loại dịch

vụ từ hệ điều hành, bạn có thể bắt đầu xây dựng ứng dụng bằng Notepad.exe Nhiều người lầm tưởng rằng các môi trường phát triển phần mềm như Visual Studio 98 hay Visual Studio NET là tất cả những gì cần để viết chương trình Thực ra, chúng là những phần mềm dùng làm vỏ bọc bên ngoài Với chúng, bạn sẽ viết được các đoạn lệnh đủ các màu xanh, đỏ, lỗi cú pháp được báo ngay khi đang gõ lệnh, thuộc tính của các đối tượng được đặt ngay cửa sổ properties, giao diện được thiết kế theo phong cách trực quan…

Hầu hết các lớp được gom vào một namespace (không gian tên) gọi là system

3.1.1.3 Sơ lược về NAMESPACE

.NET Framework được tạo bởi từ hàng trǎm lớp (class) Nhiều ứng dụng mà bạn xây dựng trong NET đang tận dụng các lớp này theo cách này hay cách khác Vì

số lượng các lớp là quá lớn, NET Framework tổ chức các lớp này vào một cấu trúc lớp được gọi là một namespace Một namespace có thể là con của một namespace lớn hơn Namespace lớn nhất trong NET Framework là System System là một Namespace cơ sở trong NET Framework Tất cả các namespace được cung cấp trong NET framework bắt đầu với namespace cơ sở này Ví dụ, những lớp phục vụ việc

Trang 27

23

truy cập và thao tác dữ liệu được tìm thấy trong namespace System.Data Những ví dụ khác bao gồm System.IO, System.XML, System.Collections, System.Drawing và v.v

Lợi điểm của namespace là phân nhóm các lớp đối tượng, giúp người dùng dễ nhận biết và sử dụng Ngoài ra, namespace tránh việc các lớp đối tượng có tên trùng với nhau không sử dụng được .NET Framework cho phép bạn tạo ra các lớp đối tượng và các namespace của riêng mình Với hơn 80000 tên có sẵn, việc đặt trùng tên lớp của mình với một lớp đối tượng đã có là điều khó tránh khỏi Namespace cho phép việc này xảy ra bằng cách sử dụng một tên đầy đủ để truy xuất đến một lớp đối tượng

Ví dụ, nếu muốn dùng lớp WebControls, bạn có thể dùng tên tắt của nó là WebControls hay tên đầy đủ là System.Web.UI.WebControls

3.1.2 Lập trình hệ thống mô phỏng mạch COM ảo

Chương trình mô phỏng hoạt động của 2 thiết bị COM ảo [cụ thể là thiết bị stm32f4-discovery đã tích hợp chương trình COM ảo (server) và thiết bị CP2102 (client)], sau khi 2 thiết bi kết nối thành công với nhau Tiếp đó sẽ là giao tiếp giữa Client và Server, giống như chương trình chat Đặc điểm ở đây là dùng mô hình TCP, nên khi bạn gửi đi từ Client, sẽ phải chờ trả lời từ Server rồi mới được gửi tiếp

Kết nối Server-Client thông qua TCP

Khi thực thi, server cần được xác định rõ địa chỉ cổng COM và sẽ “lắng nghe” trên một port cụ thể Server sẽ nằm trong trạng thái này cho đến khi client đã kết nối Sau khi cả 2 đều được kết nối với nhau, một kết nối sẽ hình thành cho phép server và client giao tiếp với nhau

Để hiểu rõ hơn ta thực hiện các bước sau để kết nối server và client sử dụng giao thức TCP trong C# (có thể chạy server và client trên cùng một máy)

Server:

1 Thiết lập một cổng COM để bắt đầu giao tiếp với client

2 Start COM để bắt đầu giao tiếp

3 Thực hiện giao tiếp với client

4 Stop COM

Trang 28

24

Client:

1 Thiết lập một cổng COM để bắt đầu giao tiếp với server

2 Start COM để bắt đầu giao tiếp

3 Thực hiện giao tiếp với server

4 Stop COM

Ví dụ : Gửi nhận dữ liệu dạng mảng các byte

Lớp NetworkStream và Socket cung cấp các phương thức gửi và nhận dữ liệu dạng mảng các byte Vì vậy bạn cần phải thực hiện các bước chuyển đổi dữ liệu sang dạng byte và ngược lại Trong ví dụ sau tôi sử dụng dữ liệu dạng văn bản ASCII trong console, và dùng các lớp trong namespace System.Text để chuyển đổi

CODE chương trình mô phỏng giữa 2 thiết bị COM ảo tham khảo tại phụ lục 3 (trang 49)

3.2 Bộ công cụ lập trình nhúng Keil C

Giới thiệu

Keil C là công cụ phần mềm hỗ trợ khá đầy đủ giúp người dùng soạn thảo và biên dịch chương trình cho các vi điều khiển thuộc họ ARM và một số họ khác bằng ngôn ngữ C/C++

Giống như tất cả các phần mềm dựa trên μVision IDE Keil, Keil C cung cấp môi trường lập trình mạnh mẽ, dễ sử dụng và dễ dàng tiếp cận giúp phát triển các ứng dụng nhúng Chúng bao gồm các thành phần cần thiết để tạo, debug và kết hợp vi điều khiển với các thiết bị ngoại vi liên quan

4 Debug và hoàn thiện chương trình

5 Download chương trình xuống FLASH ROM hay SRAM của chip

Trang 29

25

Thành phần RTOS and Middleware

Các thành phần này được thiết kế để giải quyết các vấn đề về truyền thông và thời gian thực trong hệ thống nhúng Các thành phần này cung cấp một cơ chế giúp tiết kiệm thời gian và rút ngắn chu kỳ phát triển trong khi nó vẫn có thể thực hiện các ứng dụng nhúng mà không cần sử dụng một cơ chế thời gian thực

Hình 3.1: Mô hình RTOS và Middleware

Cấu trúc chương trình đơn giản

Keil C hoạt động giống như các bộ lập trình C chuẩn, khi bắt đầu nó thực thi hàm main Đối với các chương trình nhúng hàm main thường là đoạn code lặp vô tận

Ví dụ:

int counter;

main (void) {

counter = 0;

while (1) { // repeat forever

counter++; // increment counter }

}

Trang 30

26

Luân chuyển công việc theo cấu trúc Round-Robin

Round-Robin cho phép thực hiện song song đồng thời một số nhiệm vụ Mỗi công việc được thực hiện trong một thời gian xác định trước Sau khi hết thời gian

thực hiện tác vụ i nó sẽ bắt đầu thực hiện tác vụ i+1 Ví dụ minh họa hoạt động của

cấu trúc round-robin tham khảo tại phụ lục 4 (trang 59)

Các dạng hàm wait

Hàm wait dùng để tạm dừng một công việc và chờ biến cố để tiếp tục công việc của mình Suốt thời tạm dừng này, CPU sẽ thực thi những công việc khác Ví dụ minh họa tham khảo tại phụ lục 5 (trang 60)

Bộ nhớ

Công cụ phát triển Keil C cung cấp quyền truy cập vào tất cả khu vực bộ nhớ với bất kỳ kiến trúc vi điều khiển nào Các biến có thể được gán tường minh tại một không gian vùng nhớ nào đó bằng các khai báo kiểu tường minh hoặc có thể được gán không tường minh dựa vào kiểu vùng nhớ Truy cập vào bộ nhớ dữ liệu nội bộ nhanh hơn so với truy cập vào bộ nhớ dữ liệu bên ngoài, vì vậy nếu có thể ta nên khai các biến sử truy xuất thường xuyên tại vùng nhớ nội bộ và các biến ít truy xuất ở vùng nhớ bên ngoài

3.3 Giao tiếp với khối truyền/thu không đồng bộ đa năng (UART)

Giao tiếp UART là giao tiếp nối tiếp, có các tính năng sau:

 Cấp tín hiệu cho các đầu vào bộ điều khiển

 Điều khiển đầu ra tín hiệu

Trang 31

27

chia sẻ một đường dẫn hoặc nếu có hai đường nhưng cả hai thiết bị chỉ giao tiếp qua một đường ở cùng một thời điểm

Dữ liệu truyền được ghi vào thành 16 byte FIFO và bắt đầu quá trình các khung

dữ liệu với các tham số được xác định trong thanh ghi điều khiển UART Truyền sẽ kết thúc khi dữ liệu trong FIFO là trống

Trong quá trình thu, UART bắt đầu lấy mẫu sau khi nhận một bit khởi động ( đầu vào mức thấp) Khi một word (16 bit) được nhận đủ, nó sẽ được chứa trong FIFO nhận

Có thể không sử dụng tính năng của FIFO nhưng nếu xảy ra lỗi tràn, dữ liệu dư vẫn được chứa trong FIFO và phải đọc ra để xóa FIFO

Thiết lập tốc độ baud của UART được lập trình bởi các thanh ghi chia tốc độ bit UART_LCRM và UART_LCRL

Các ngắt UART

Mỗi UART tạo ra bốn ngắt:

 Bộ ngắt trạng thái: dùng để xác nhận khi có bất kỳ sự thay đổi trạng thái nào

 Ngắt loại bỏ UART: dùng để xác nhận khi UART được loại bỏ và bit khởi động (mức thấp) được phát hiện trên đường thu Trạng thái này sẽ được xóa nếu UART được kích hoạt hoặc đường thu ở mức cao

 Ngắt Rx (ngắt thu dữ liệu): dùng để xác nhận khi một trong các trường hợp sau xảy ra:

 Bộ FIFO thu được kích hoạt và bộ FIFO đã chứa nửa hoặc quá nửa (8 byte hoặc nhiều hơn 8 byte)

 Bộ FIFO thu không còn trống và không có dữ liệu cho hơn chu kỳ 32 bit

 Bộ FIFO thu bị vô hiệu và dữ liệu đã được thu

 Ngắt Rx được xóa bằng việc đọc nội dung của FIFO

 Ngắt Tx (ngắt truyền dữ liệu): dùng để xác nhận khi một trong các trường hợp sau xảy ra:

 Bộ FIFO truyền được kích hoạt và bộ FIFO chứa một nửa hoặc ít hơn một nửa

Trang 32

28

 Bộ FIFO truyền bị vô hiệu hóa và vùng đệm lưu trữ là trống

 Ngắt Tx sẽ được xóa khi chèn vào bọ FIFO hơn quá nửa hoặc ghi vào thanh ghi lưu trữ

Dạng khung truyền

Khung truyền trong giao tiếp UART gồm bốn thành phần, như trong hình

Hình: Khung truyền trong giao tiếp UART

 Start bit (1 bit ở mức logic 0): bắt đầu một gói in, đồng bộ xung nhịp clock

 Data (có thể là 5, 6, 7 hoặc 8 bit): dữ liệu cần truyền

 Parity bit [1 bit: chẵn (even), lẻ (old), mark, space]: bit cho phép kiểm tra lỗi

 Stop bit (1 hoặc 2 bit): kết thúc một gói tin

Tốc độ truyền

 Tính bằng đơn vị bit/giây: bps (bit per second) hay còn gọi là tốc độ baud

 Là số bit truyền trong một giây

 Tốc độ tối đa = tốc độ xung nhịp clock/hằng số

Code minh họa khởi tạo và cấu hình cho UART: tham khảo tại phụ lục 6 (trang 61)

3.4 VCP (Virtual Com Port)

Cổng COM hay còn gọi là cổng nối tiếp (Serial port) là một cổng thông dụng được sử dụng ở nhiều loại máy bàn, cổng COM giao tiếp bằng cách "nối tiếp" từng bit một

Để giao tiếp giữa các thiết bị với máy tính không có cổng COM, ta có thể sử dụng các thiết bị chuyển đổi từ USB sang UART như FTDI, CP2102,… để có thể giao tiếp giữa các thiết bị đó với nhau thông qua cổng USB

Ta sẽ ứng dụng từ các chức năng của STM32F4 Discovery để thực hiện lập trình cho nó trở thành một cổng COM ảo Điều đó có nghĩa là ta sẽ không cần sử dụng các thiết bị chuyển đổi USB sang UART để có thể giao tiếp giữa các thiết bị với máy tính mà STM32F4 Discovery sẽ hiển thị trên máy tính như một cổng COM

Trang 33

29

Chương trình sẽ cung cấp một cổng COM ảo thông qua cổng micro USB của Board Stm32f4-Discovery và sau khi tiến hành cài đặt STM32 Virtual COM Port Driver sau đó kết nối với máy tính thì trên máy tính sẽ hiển thị nên công COM ảo này

và ta có thể thực hiện truyền tải dữ liệu như một cổng COM

Code minh họa cho việc nhúng chương trình VirtualCOM vào mạch phát triển STM32F4-DISCOVERY: tham khảo tại phụ lục 7 (trang 73)

Trang 34

30

CHƯƠNG 4: KẾT QUẢ NGHIÊN CỨU

Từ thông tin về cơ chế hoạt động của hệ thống mạch COM ảo đã nêu ở chương

1, các tính năng về các thiết bị cảm biến đã nêu ở chương 2 và thông tin về các công nghệ được sử dụng trong hệ thống mạch COM ảo đã nêu ở chương 3, chương 4 sẽ đưa

ra các kết quả nghiên cứu đạt được trong đề tài

4.1 Nhận thiết bị

 STM32f4-Discovery:

Sau khi đã nạp chương trình VirtualCOM thì thiết bị stm32f4-discovery đã được chuyển thành một cổng COM (COM3)

Hình 4.1: Cổng COM ảo từ stm32f4-discovery

Sau đó mở chương trình mô phỏng COM đã được thiết kế từ C# Chương trình này (C#) gồm 2 phần: COM và Send

 COM: dùng để xác nhận cổng COM mà máy tính đã nhận (ở đây máy tính nhận thiết bị là cổng COM3)

 Send: truyền và nhận dữ liệu qua thiết bị khác (COM4)

Hình 4.2: Cổng COM3 đã được mở

 COM Port: đây là cổng COM của thiết bị stm32f4-discovery

 Baud Rate: Là số bit truyền trong một giây Tính bằng đơn vị bit/giây (bps: bit per second) hay còn gọi là tốc độ baud Bên trong UART có hỗ trợ các thanh ghi cho phép xác định các tốc độ làm việc khác, vd: 1200, 2400, 4800, 9600,

19200, 38400,… bps, có thể thiết lập tốc độ baud bằng phần mềm

 Nút nhấn Start COM: bắt đầu mở cổng COM (Code tại C#)

privatevoid OpenPort()

Trang 35

31

{

try

{

int comPort = int.Parse(txt_COMPort.Text);

int baudRate = int.Parse(txt_BaudRate.Text);

if (InitDeviceCOMPort(comPort, baudRate) == true)

// Xuất ra log file

//log.Error("btn_Start_Click đã phát ra exception ", ex.Message);

}

}

 Nút nhấn Stop COM: kết thúc đóng cổng COM (Code tại C#)

privatevoid ClosePort()

Trang 36

32

MessageBox.Show("Đã hoàn thành Cổng COM đã được đóng",

"Open", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

else

{

MessageBox.Show("Đã hoàn thành Không thể đóng cổng COM",

"Open", MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

}

catch (Exception ex)

{

// Xuất ra log file

//log.Error("btn_Stop_Click đã phát ra exception ", ex.Message);

Trang 37

33

 COM Port: đây là cổng COM của thiết bị cp2102

 Baud Rate: Tốc độ baud của cổng COM4 được thiết lập bằng phần mềm thông qua UART4 (PC10: Tx, PT11: Rx)

//cau hinh cho UART4

usartInit.USART_BaudRate=230400;//256000;

usartInit.USART_HardwareFlowControl=USART_HardwareFlowControl_No ne;

 Nhập 1 chuỗi dữ liệu và nhấn Send

Hình 4.5a: Truyền dữ liệu qua COM4

 Khung gửi dữ liệu (Send):

o Được thiết lập để truyền dữ liệu (code tại C#)

{

STATUS = "";

Trang 38

34

byte[] day = BT.getDBytes().ToArray();

UInt16 len = (UInt16)(day.Length);

DoiIntToBytes ITB = new DoiIntToBytes(len);

byte[] dayso = ITB.getBytes().ToArray();

devicePort.Write(dayso, 0, dayso.Length);//goi len

devicePort.Write(day, 0, day.Length);//goi package On

 Khung nhận dữ liệu (Receive):

o Được thiết lập để nhận những dữ liệu từ COM3 gửi tới (Code tại C#)

privatevoid DataReceived(object sender,

System.IO.Ports.SerialDataReceivedEventArgs e)

{

Ngày đăng: 08/08/2017, 08:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w