Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

MỤC LỤC

DANH MỤC HÌNH ẢNH .....................................................................................4


LỜI MỞ ĐẦU ........................................................................................................5
CHƯƠNG I: TÌM HIỂU STM32 VÀ GIAO TIẾP UART ..............................6
1.1 Giới thiệu về STM32. .......................................................................................6
1.1.1 STM32 là gì? ...............................................................................................6
1.1.2 Thư viện lập trình. ......................................................................................6
1.1.3 Ứng dụng STM32. ......................................................................................6
1.1.4 Một số loại STM32. ....................................................................................6
1.2 Khái niệm của UART........................................................................................7
1.3 Giao tiếp UART ................................................................................................9
1.4 Các thông số cơ bản trong giao tiếp UART ...................................................10
1.5 UART hoạt động như thế nào? .......................................................................11
1.6 Sơ đồ khối UART ...........................................................................................11
1.7 Cấu trúc của gói dữ liệu,data package,frame ..................................................13
1.8 Ứng dụng của UART trong cuộc sống ...........................................................14
1.9 Ưu điểm và nhược điểm của UART ...............................................................14
CHƯƠNG II: STM32 F4 GIAO TIẾP VỚI MÁY TÍNH THÔNG QUA
GIAO TIẾP UART ĐỂ XUẤT CHUỖI KÝ TỰ ..............................................15
2.1 Giới thiệu về STM32F407VET6 ARM Cortex-M4 .......................................15
2.1.1 STM32F407VET6 ARM Cortex-M4 .......................................................15
2.1.2 Thông số kỹ thuật. ..................................................................................155
2.2 Mạch Chuyển USB UART CP2102 ...............................................................16
2.3 Mạch Nạp STM8 STM32 ST-Link V2...........................................................18
2.4 STM 32F4 giao tiếp với máy tính thông qua giao tiếp UART để xuất chuỗi kí
tự ...........................................................................................................................19
2.5 Sơ đồ khối .......................................................................................................19
2.6 Cách nối dây với STM32 F4...........................................................................20
2.7 Phần mềm sử dụng .........................................................................................22

2
KẾT QUẢ .............................................................................................................23
KẾT LUẬN ..............................................................Error! Bookmark not defined.
TÀI LIỆU THAM KHẢO ..................................................................................24
PHỤ LỤC ............................................................................................................24

3
DANH MỤC HÌNH ẢNH
Hình 1.1 STM32F103C8T6 .......................................................................................6
Hình 1.2 STM32F407 Discovery..............................................................................7
Hình 1.3 STM32F103C8T6 .......................................................................................7
Hình 1.4 Giao tiếp nối tiếp .........................................................................................9
Hình 1.5 Giao tiếp song song ...................................................................................10
Hình 1.6 Sơ đồ nối dây các thành phần trong giao tiếp UART ..............................11
Hình 1.7 Sơ đồ khối UART .....................................................................................12
Hình 1.8 Cấu trúc gói dữ liệu...................................................................................13
Hình 2.1 STM32F407VET6 ARM Cortex-M4 .......................................................15
Hình 2.2 Mạch chuyển đổi USB to TTL UART CP2102........................................17
Hình 2.3 Mạch Nạp STM8 STM32 ST-Link V2 ....................................................18
Hình 2. 4 Sơ đồ khối của mạch ................................................................................19
Hình 2.5 Nối dây USB to UART với STM2F4 .......................................................20
Hình 2.6 Nối dây STM32F4 với Stlink V2..............................................................21

4
LỜI MỞ ĐẦU
Trong xã họi ngày càng phát triển thời đại của 4.0 các thiết bị điện tử càng
ngày càng phát tiển. Tiêu biểu dòng ARM vừa dễ dung giá thành lại hải chăng với
người sử dụng. Hơn nữa dòng chíp này lại được dùng khá phổ biến trong đời sống
của con người. Tiêu biểu là vi điều khiển STM32 vì nó vừa dễ lập trình và nó có thể
dùng vào nhiều công trình nghiên cứu.
Là một sinh viên ngành kỹ thuật nên em chọn vi điều khiển này để làm đồ án.
Với đề tài Dùng vi điều khiển STM32F4 giao tiếp với máy tính thông qua giao tiếp
UART để xuất chuỗi ký tự ” nhằm mục đích hiểu hơn về vi điều khiển STM32F4
thông qua giao tiếp UART.
Trong quá trình làm đồ án được sự giúp đỡ và hướng dẫn tận tình cúa thầy
Th.s Lê Văn Chương. Chúng em đã hoàn thành được đồ án được giao.
Em xin chân thành cảm ơn!
Sinh Viên Thực Hiện

Nguyễn Văn Anh


Trần Văn Chiến
Phan Văn Cường

5
CHƯƠNG I: TÌM HIỂU STM32 VÀ GIAO TIẾP UART
1.1 Giới thiệu về STM32.
1.1.1 STM32 là gì?
STM32 là một mạch vi điều khiển 32bit được tích hộ bởi STMicroelectronics
với nhiều họ thông dụng như F0,F1,F2,F3,F4…... Các chíp STM32 được nhóm
thành các chuỗi liên quan dựa trên cùng một lõi bộ vi xử lý ARM 32bit, chẳng hạn
như Cortex- M3, cortex - M74F,... Đây là một dòng vi điều khiển dựa trên ARM.
Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Mạch
nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng.
1.1.2 Thư viện lập trình.
Có nhiều loại thư viện lập trình cho STM32 như: STM32snippets,
STM32Cube LL, STM32Cube HAL, Standard Peripheral Libraries, Mbed core. Mỗi
thư viện đều có ưu và khuyết điểm riêng, ở đây mình xin phép sử dụng Standard
Peripheral Libraries vì nó ra đời khá lâu và khá thông dụng, hỗ trợ nhiều ngoại vi và
cũng dễ hiểu rõ bản chất của lập trình.
1.1.3 Ứng dụng STM32.
Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển
ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi
game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần,
máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…
1.1.4 Một số loại STM32.

Hình 1.1 STM32F103C8T6

6
Hình 1.2 STM32F407 Discovery

Hình 1.3 STM32F103C8T6


1.2 Khái niệm của UART
UART – Universal asynchronous receiver transmitter là bộ truyền nhận nối tiếp
bất đồng bộ. UART là một ngoại vi cơ bản trong chip STM32F103C8T6 thường
được dùng trong các quá trình giao tiếp với các loại module như: Zigbee, Bluetooth,
Wifi…
UART thường để chỉ thiết bị phần cứng (device, hardware), không phải chỉ một
chuẩn giao tiếp. UART cần phải kết hợp với một thiết bị chuyển đổi mức điện áp để
tạo ra một chuẩn giao tiếp nào đó.

7
Tín hiệu từ chip UART thường theo mức TTL: mức logic high là 5, mức low là
0V.
Trên máy tính thì chúng ta có thể hiểu nôm na là giao tiếp qua cổng COM. Các
máy tính hiện nay nếu không có cổng COM thì chúng ta có thể sử dụng các thiết bị
chuyển giao tiếp USB => COM.
Cổng COM trên máy tính có mức tín hiệu dao động -13V đến +13V. Cho nên
bạn không thể nối trực tiếp từ vi điều khiển đến cổng COM máy tính nhé. Thay vào
đó có thể sử dụng chip chuyển mức tín hiệu như là MAX232 chẳng hạn (google với
từ khóa RS232 to TTL).
Các khái niệm quan trọng trong chuẩn truyền thông UART
 Baud rate(tốc độ Baud): Số bit truyền được trong 1s, ở truyền nhận không
đồng bộ thì ở các bên truyền và nhận phải thống nhất Baudrate. Các thông số
tốc độ Baudrate thường hay sử dụng dể giao tiếp với máy tính là 9600, 12500.
 Frame(khung truyền): Ngoài việc giống nhau của tốc độ baud 2 thiết bị
truyền nhận thì khung truyền của bên cũng được cấu hình giống nhau. Khung
truyền quy định số bit trong mỗi lần truyền, bit bắt đầu “Start bit”, các bit kết
thúc (Stop bit), bit kiểm tra tính chẵn lẻ (Parity), ngoài ra số bit quy định trong
một gói dữ liệu cũng được quy định bởi khung truyền. Có thể thấy, khung
truyền đóng một vai trò rất quan trọng trong việc truyền thành công dữ liệu.

Idle frame: Đường truyền UART ở mức “1”, để xác nhận hiện tại đường
truyền dữ liệu trống, không có frame nào đang được truyền đi.
Break frame: Đường truyền UART ở mức “0”, để xác nhận hiện tại trên đường
truyền đang truyền dữ liệu, có frame đang được truyền đi.

 Start bit: Bit đầu tiên được truyền trong một frame, bit này có chức năng báo
cho bên nhận rằng sắp có một gói dữ liệu truyền đến. Đường truyền UART
luôn ở trạng thái cao mức “1” cho đến khi chip muốn truyền dữ liệu đi thì nó
gởi bit start bằng cách kéo xuống mức “0”. Như vậy start bit giá trị điện áp
0V và phải bắt buộc có bit start trong khung truyền.

8
 Data(dữ liệu): Data hay dữ liệu là thông tin mà chúng ta nhận được trong quá
trình truyền và nhận. Data trong STM32 có quy định khung truyền là 8bit hoặc
9bit. Trong quá trình truyền UART, bit có trọng số thấp nhất (LSB – least
significant bit – bên phải) sẽ được truyền trước và cuối cùng là bit có ảnh
hưởng cao nhất (MSB – most significant bit – bên trái)
 Parity bit(bit chẵn lẻ): Parity dùng để kiểm tra dữ liệu truyền có đúng hay
không. Có 2 loại Parity đó là Parity chẵn (even parity) và parity lẽ (odd parity).
Parity chẵn nghĩa là số bit 1 trong trong data truyền cùng với bit Parity luôn
là số chẵn, ngược lại nếu Parity lẽ nghĩa là số bit 1 trong data truyền cùng với
bit Parity luôn là số lẽ. Bit Parity không phải là bit bắt buộc và vì thế chúng ta
có thể loại bỏ bit này ra khỏi khung truyền.
 Stop bits: Stop bits là một bit báo cáo để cho bộ truyền/nhận biết được gói dữ
liệu đã được gởi xong. Stop bits là bit bắt buộc phải có trong khung truyền.
Stop bits có thể là 1bit, 1.5bit, 2bit, 0.5bit tùy thuộc vào ứng dụng UART của
người sử dụng.
1.3 Giao tiếp UART
Có 2 loại giáo tiếp UART:
a, Giao tiếp nối tiếp
Giao tiếp dữ liệu nối tiếp có nghĩa là dữ liệu có thể được truyền qua một cáp
hoặc một đường dây ở dạng bit-bit và nó chỉ cần hai cáp. Nó yêu cầu số lượng mạch
hay như dây rất ít.

Hình 1.4 Giao tiếp nối tiếp


9
b, Giao tiếp song song
Giao tiếp dữ liệu song song có nghĩa là dữ liệu có thể được truyền qua nhiều cáp
cùng một lúc. Truyền dữ liệu song song yêu số lượng mạch và dây nhiều.

Hình 1.5 Giao tiếp song song

1.4 Các thông số cơ bản trong giao tiếp UART

Trong giao tiếp UART có các thông số chính:

 Baud rate (tốc độ baud ): Khoảng thời gian để 1 bit được truyền đi. Phải được
cài đặt giống nhau ở cả phần gửi và nhận
 Frame (khung truyền): Khung truyền quy định về mỗi lần truyền bao nhiêu
bit
 Start bit: là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận
có một gói dữ liệu sắp đc truyền đến. Đây là bit bắt buộc
 Data: dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước sau
đó đến bit MSB.
 Parity bit: kiểm tra dữ liệu truyền có đúng không
 Stop bit : là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết
bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của
dữ liệu. Đây là bit bắt buộc

10
1.5 UART hoạt động như thế nào?

Trong giao tiếp UART, dữ liệu được truyền không đồng bộ, nghĩa là không cần
tín hiệu clock hoặc các tín hiệu timming khác để đồng bộ, kiểm tra dữ liệu giữa thiết
bị truyền và thiết bị nhận. Thay vào đó, UART sử dụng các bit đặt biệt được gọi là
Start và Stop bits.
Các bits này được thêm vào đầu và cuối gói dữ liệu. Các bits được thêm vào sẽ
giúp bên nhận xác định được phần nào là phần dữ liệu thực tế cần nhận.

Hình 1.6 Sơ đồ nối dây các thành phần trong giao tiếp UART
Hình bên trên cho thấy kết nối giữa các thành phần trong giao tiếp UART. Bộ
phận truyền UART sẽ nhận dữ liệu từ vi điều khiển thông qua bus điều khiển và
bus dữ liệu. Với dữ liệu này, UART sẽ thêm vào Start, Parity và Stop bits theo cầu
hình và convert nó thành 1 gói dữ liệu. Gói dữ liệu này sẽ được chuyển đổi từ song
song sang nối tiếp được lưu dưới các thanh ghi – shift register và truyền đi từng bit
một qua chân TX.

Thiết bị nhận UART sẽ nhận dữ liệu từ chân RX và xác định đâu là dữ liệu
thực sau khi loại trừ start và stop bits. Parity bit được sử dụng để kiểm tra độ chính
xác của dữ liệu. Phụ thuộc vào sự chia cắt của start, parity và stop bits từ gói dữ
liệu, tất cả dữ liệu sẽ được chuyển từ nối tiếp sang song song và được lưu dưới các
thanh ghi – shift register. Những dữ liệu song song này sẽ được truyền đến vi điều
khiển thông qua data bus.

1.6 Sơ đồ khối UART

Sơ đồ khối UART bao gồm hai thành phần là máy phát và máy thu được hiển
thị bên dưới. Phần máy phát bao gồm ba khối là thanh ghi giữ truyền, thanh ghi dịch
chuyển và logic điều khiển. Tương tự, phần máy thu bao gồm một thanh ghi giữ,
thanh ghi thay đổi và logic điều khiển. Hai phần này thường được cung cấp bởi một
11
bộ tạo tốc độ baud. Trình tạo này được sử dụng để tạo tốc độ khi phần máy phát và
phần máy thu phải truyền hoặc nhận dữ liệu.

Thanh ghi giữ trong máy phát bao gồm byte dữ liệu được truyền. Các thanh ghi
thay đổi trong máy phát và máy thu di chuyển các bit sang phải hoặc trái cho đến
khi một byte dữ liệu được truyền hoặc nhận. Một logic điều khiển đọc (hoặc) ghi
được sử dụng để biết khi nào nên đọc hoặc viết.
Máy phát tốc độ baud giữa máy phát và máy thu tạo ra tốc độ dao động từ 110
bps đến 230400 bps. Thông thường, tốc độ truyền của vi điều khiển là 9600 đến
115200

Hệ thống điều khiển Hệ thống nhận tin

Thanh ghi Thanh ghi


giữ truyền giữ truyền

Thanh ghi Thanh ghi


dịch thay đổi
chuyển

Logic điều Logic điều


Tốc độ baud khiển
khiển

Hình 1.7 Sơ đồ khối UART


Thanh ghi giữ trong thiết bị gửi bao gồm byte dữ liệu được truyền. Các thanh
ghi thay đổi trong thiết bị gửi và nhận di chuyển các bit sang phải hoặc trái cho đến
khi một byte dữ liệu được truyền hoặc nhận. Một logic điều khiển đọc (hoặc) ghi
được sử dụng để biết khi nào nên đọc hoặc viết.

Máy phát tốc độ baud giữa thiết bị gửi và thiết bị nhận tạo ra tốc độ dao động
từ 110 bps đến 230400 bps. Thông thường, tốc độ truyền của vi điều khiển là 9600
đến 115200.

12
Để bắt đầu cho việc truyền dữ liệu bằng UART, một Start bit được gửi đi, sau
đó là các bit dữ liệu và kết thúc quá trình truyền là Stop bit.

1.7 Cấu trúc của gói dữ liệu,data package,frame

Dữ liệu của giao tiếp UART được quản lý theo các khối nhỏ gọi là gói dữ liệu
hay Frames. Cấu trúc của 1 gói dữ liệu UART tiêu chuẩn được mô tả theo hình dưới
đây:

Hình 1.8 Cấu trúc gói dữ liệu


Trong đó:

 Start-bit
Start-bit còn được gọi là bit đồng bộ hóa được đặt trước dữ liệu thực tế. Nói
chung, một đường truyền dữ liệu không hoạt động được điều khiển ở mức
điện áp cao. Để bắt đầu truyền dữ liệu, truyền UART kéo đường dữ liệu từ
mức điện áp cao (1) xuống mức điện áp thấp (0). UART thu được thông báo
sự chuyển đổi này từ mức cao sang mức thấp qua đường dữ liệu cũng như bắt
đầu hiểu dữ liệu thực. Nói chung, chỉ có một start-bit.
 Bit dừng
Bit dừng được đặt ở phần cuối của gói dữ liệu. Thông thường, bit này dài 2
bit nhưng thường chỉ sử dụng 1 bit. Để dừng sóng, UART giữ đường dữ liệu
ở mức điện áp cao.
 Bit chẵn lẻ
Bit chẵn lẻ cho phép người nhận đảm bảo liệu dữ liệu được thu thập có đúng
hay không. Đây là một hệ thống kiểm tra lỗi cấp thấp & bit chẵn lẻ có sẵn
13
trong hai phạm vi như Chẵn lẻ – chẵn lẻ cũng như Chẵn lẻ – lẻ. Trên thực tế,
bit này không được sử dụng rộng rãi nên không bắt buộc.
 Dữ liệu bit hoặc khung dữ liệu
Các bit dữ liệu bao gồm dữ liệu thực được truyền từ người gửi đến người
nhận. Độ dài khung dữ liệu có thể nằm trong khoảng 5 & 8. Nếu bit chẵn lẻ
không được sử dụng thì chiều dài khung dữ liệu có thể dài 9 bit. Nói chung,
LSB của dữ liệu được truyền trước tiên sau đó nó rất hữu ích cho việc truyền.

1.8 Ứng dụng của UART trong cuộc sống

UART thường được sử dụng trong các bộ vi điều khiển có các yêu cầu chính
xác và chúng cũng có sẵn trong các thiết bị liên lạc khác nhau như giao tiếp không
dây, thiết bị GPS, mô-đun Bluetooth và nhiều ứng dụng khác.

Các tiêu chuẩn truyền thông như RS422 & TIA được sử dụng trong UART ngoại
trừ RS232. Thông thường, UART là một IC riêng được sử dụng trong giao tiếp nối
tiếp UART.

1.9 Ưu điểm và nhược điểm của UART

Những ưu và nhược điểm của UART bao gồm những điều sau đây
Ưu điểm của UART
 Chỉ cần 2 dây để truyền nhận song song dữ liệu
 Không cần tín hiệu clock hay bất kỳ tín hiệu đồng bộ nào khác
 Parity bit đảm bảo dữ liệu được truyền đi chính xác
Nhược điểm của UART
 Kích thước gói dữ liệu bị giới hạn
 Tốc độ truyền chậm hơn khi so sánh với kiểu truyền dữ liệu song song
 Thiết bị truyền và thiết bị nhận cần phải đồng nhất một số thông số với nhau

14
CHƯƠNG II: STM32 F4 GIAO TIẾP VỚI MÁY TÍNH THÔNG
QUA GIAO TIẾP UART ĐỂ XUẤT CHUỖI KÝ TỰ
2.1 Giới thiệu về STM32F407VET6 ARM Cortex-M4

2.1.1 STM32F407VET6 ARM Cortex-M4


STM32F4 sử dụng Vi điều khiển STM32F4 là loại được sử dụng ở rất nhiều
trường đại học hiện nay trong giảng dạy vi điều khiển ARM, kit có thiết kế ra chân
đầy đủ với các ngoại vi cơ bản: USB, MicroSD, Flash, Pin RTC...và cổng nạp chuẩn
Jtag tích hợp, kit có giả thành phải chăng, là sự lựa chọn hợp lý cho các bạn mới bắt
đầu tìm hiểu về dòng STM32F4 đầy mạnh mẽ.

Hình 2.1 STM32F407VET6 ARM Cortex-M4


2.1.2 Thông số kỹ thuật.
 Vi điều khiển chính: STM32F407VET6 ARM Cortex-M4

 Nguồn sử dụng: 5VDC từ cổng Mini USB hoặc chân GPIO.


15
 Thiết kế ra chân GPIO đầy đủ.
 Tích hợp cổng USB.
 Tích hợp khe thẻ nhớ MicroSD.
 Tích hợp bộ nhớ Flash.
 Tích hợp khe pin RTC.
 Tích hợp cổng nập chuẩn Jtag.
 Tích hợp khe cắm mạch RF NRF24L01+.
 Kích thước: 85 x 73mm

2.2 Mạch Chuyển USB UART CP2102

Mạch CP2102 là mạch chuyển USB UART dùng chip CP2102 SILICON LABS
có chức năng chuyển đổi giao tiếp từ USB sang UART TTL hoặc ngược lại.
Mạch chuyển USB UART CP2102 hỗ trợ đa dạng hệ điều hành Windows, Mac,
Linux, Android,...
Hỗ trợ các tốc độ truyền như: 300, 600, 1200, 1800, 2400, 4000, 4800, 7200,
9600, 14400, 16000, 19200, 28800, 38400, 51200, 56000, 57600, 64000,
76800, 115200, 128.000, 153.600, 230.400, 250.000, 256.000, 460.800, 500.000,
576.000, 921.600 và các loại tốc độ 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.
LED nguồn sáng khi gắn vô máy tính và LED báo hiệu Tx / Rx, LED này sẽ
sáng khi module nhận, gửi dữ liệu.
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ương thích với Arduino
Promini).

16
Hình 2.2 Mạch chuyển đổi USB to TTL UART CP2102
Mạch chuyển USB UART CP2102 sử dụng chip CP2102 của hãng SILICON
LABS được dùng để chuyển giao tiếp từ USB sang UART TTL và ngược lại. -
CP2102 có kích thước nhỏ gọn và yêu cầu rất ít thành phần bên ngoài để hoạt động
được ngay. CP2102 không sử dụng thạch anh ngoài như các chip PL2303 - Mạch
chuyển USB UART CP2102 có thể nhận trên tất cả các hệ điều hành Windows, Mac,
Linux, Android,... rất dễ sử dụng và giao tiếp. Dễ dàng kết nối để lập trình Arduino
hoặc ESP-12 hoạt động ở mức 3.3V UART. LED nguồn sáng khi gắn vô máy tính
và LED báo hiệu Tx / Rx, LED này sẽ sáng khi module nhận, gửi dữ liệu.
Mô tả chân:
 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
 RXD: chân nhận dữ liệu UART, dùng kết nối đến chân Tx của các module
khác, không kết nối trực tiếp đến mức của RS232
 GND: chân mass hoặc nối đất.
 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

17
2.3 Mạch Nạp STM8 STM32 ST-Link V2

Hình 2.3 Mạch Nạp STM8 STM32 ST-Link V2

Mạch Nạp STM8 STM32 ST-Link V2 được sử dụng để nạp chương trình và debug
cho Vi điều khiển STM32.

Hỗ trợ đầy đủ các STM32 giao diện SWD nạp và gỡ lỗi, giao diện đơn giản 4 dây
(bao gồm cả dây cấp nguồn), tốc độ nhanh, hoạt động ổn định.
Hỗ trợ đầy đủ các STM8 giao diện SWIM nạp và gỡ lỗi (Hỗ trợ môi trường
phát triển phổ biến như IAR, STVD hoặc tương đương); Phiên bản phần mềm hỗ
trợ như sau:

 ST-LINK Utility 2 trở lên


 STVD 4.2.1 trở lên
 STVP 3.2.3 trở lên
 IAR EWARM V6.20 trở lên
 IAR EWSTM8 v1.30 trở lên
 Keil RVMDK V4.21 trở lên

18
Hỗ trợ nâng cấp firmware tự động lên V2.J17.S4 mới nhất;
Nhỏ gọn, Đẹp, tiện lợi, chú thích ngay trên vỏ hộp nhôm sang trọng.

2.4 STM 32F4 giao tiếp với máy tính thông qua giao tiếp UART để xuất chuỗi
kí tự

Là giao tiếp trên máy tính thống qua giáo tiếp UART để xuất chuỗi ký tự ra
màn hình máy tính. Chuỗi ký tự được nhập từ bàn phím rối thông qua vi điều khiển
STM32F4 để xuất chuỗi ký tự vừa nhập từ bán phím rối in lên màn hình máy tính

2.5 Sơ đồ khối

NGUỒN

UART TO RS232
STM32F4 MÁY TÍNH
GIAO TIẾP UART

Hình 2. 4 Sơ đồ khối của mạch

19
2.6 Cách nối dây với STM32 F4

Nối dây STM32F4 với USB to UART

Hình 2.5 Nối dây USB to UART với STM2F4

Sơ đồ nối dây STM32F4 với usb to uar

 BT0 - GND
 BT1 - GND
 GND - GND
 PB7 - TXD
 PB6 - RXD

20
Nối dây STM32F4 với mạch nạp Stlink V2

Hình 2. 6 Nối dây STM32F4 với Stlink V2

Sơ đồ cắm dây từ mạch nạp ST-Link V2 sang kit STM32F103

 3.3V – 3.3V
 GND – GND
 SWDIO – DIO
 SWCLK – DCLK

21
2.7 Phần mềm sử dụng

a, Phần mềm STM32CubeMX

Phần mềm STM32CubeMX dung để cấu hình cácchân sử dụng.

b, Phần mềm Keil uVision 5

Phần mềm Keil uVision 5 dùng để viết chương trình

22
KẾT QUẢ
Sau quá trình nghiên cứu tìm hiểu về họ vi điều khiển STM32, chúng em đã xây
dựng được chương trình để thực hiện việc truyền thông giữa máy tính và vi điều
khiển STM32F407VE. Từ đó phát triển lên cho các dự án nhúng sau này.

23
TÀI LIỆU THAM KHẢO
1. Giáo Trình Vi Điều Khiển ARM. Hướng Dẫn Sử Dụng STM32. TS. Nguyễn
Vũ Quỳnh ,Nxb Thanh Niên
2. Vi Xử Lý Và Vi Điều Khiển. Ts Lê Ngọc Bích Nxb Thanh Niên

24
PHỤ LỤC
Code chương trình chính
#include "main.h"
UART_HandleTypeDef huart1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
/* USER CODE BEGIN PFP */
char* data1="xinchao\n";
uint8_t receive[10];
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);
__HAL_UART_ENABLE_IT(&huart1, UART_IT_TC);

while (1)
{
HAL_UART_Receive_IT(&huart1,receive,10);
HAL_UART_Transmit_IT(&huart1,(uint8_t *)data1,10);
HAL_Delay(1000);
}
/* USER CODE END 3 */
25
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
__HAL_RCC_PWR_CLK_ENABLE();

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAG
E_SCALE1);

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType =
RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
26
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) !=
HAL_OK)
{
Error_Handler();
}
}
static void MX_USART1_UART_Init(void)
{

huart1.Instance = USART1;
huart1.Init.BaudRate = 9600;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};

27
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13,
GPIO_PIN_RESET);

/*Configure GPIO pins : PD12 PD13 */


GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

}
void Error_Handler(void)
{
}
#ifdef USE_FULL_ASSERT
#endif

28

You might also like