Hệ thống nhúng được định nghĩa là bất cứ hệ thống điện tử nào sử dụng chip máy tính để thực hiện một chức năng chuyên biệt nào đó nhưng không phải là một máy tính đa dụng multi-purpose c
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN: HỆ THỐNG NHÚNG
ĐỀ TÀI:
HỆ THỐNG CHỐNG TRỘM CHO XE MÁY
Trang 2MỤC LỤC
PHẦN MỞ ĐẦU 4
1 Lời nói đầu 4
2 Đặt vấn đề 4
2.1 Nguyên cứu trong và ngoài nước 4
2.2 Tài liệu và kiến thức liên quan 5
2.3 Tính cấp thiết của đề tài 6
2.4 Mục tiêu của đề tài 6
2.5 Đối tượng và phạm vi nghiên cứu 6
2.6 Phương pháp nghiên cứu 6
PHẦN NỘI DUNG 7
CHƯƠNG 1: GIỚI THIỆU VI ĐIỀU KHIỂN STM32F103C8T6 7
CHƯƠNG 2: CẤU TRÚC CHUNG CỦA KIT 8
2.1 Các tài nguyên phần cứng và giao thức hỗ trợ 8
2.2 Sơ đồ mạch chi tiết STM32F103C8T6 8
CHƯƠNG 3: NHỮNG KIẾN THỨC LIÊN QUAN 9
3.1 Giao tiếp ADC 9
3.2 Giao tiếp GPIO trên vi điều khiển STM32F103C8T6 12
3.2.1 GPIO Input: 13
3.2.2 Các thanh ghi dữ liệu: 13
3.2.3 TTL Schmitt Trigger: 14
3.2.4 Điện trở kéo 15
3.3 Giao tiếp DMA 17
3.4 Giao thức USART : 18
CHƯƠNG 4: ỨNG DỤNG 19
4.1 Nạp chương trình vào kit 19
4.2 nguyên lí hoạt động 22
CHƯƠNG 5: TỔNG KẾT 29
5.1 kết quả: 29
5.2 ưu điểm 29
Trang 35.3 nhược điểm 29 5.4 hướng phát triển 29 TÀI LIỆU THAM KHẢO 30
Trang 4PHẦN MỞ ĐẦU.
1 Lời nói đầu.
Xuất hiện từ những năm đầu thập niên 1960, hệ thống nhúng (Embedded system) đang dần trở thành một ngành phát triển mạnh mẽ trong lĩnh vực Công nghệ thông tin vớinhững đóng góp to lớn cho lĩnh vực công nghiệp và đời sống
Hệ thống nhúng được định nghĩa là bất cứ hệ thống điện tử nào sử dụng chip máy tính
để thực hiện một chức năng chuyên biệt nào đó nhưng không phải là một máy tính đa dụng (multi-purpose computer) Hệ thống nhúng là tập hợp của phần cứng và phần mềm máy tính được thiết kế
trong một hệ thống lớn, đồng thời xử lý thông tin được nhúng vào một hệ thống đó và được điều khiển với thời gian thực (real-time)
Hệ thống nhúng được ứng dụng cho nhiều lĩnh vực và ta có thể bắt gặp chúng ở bất
cứ đâu Từ những máy móc công nghiệp, ô tô, xe lửa, máy bay, tàu không gian cho đến các thiết bị y khoa, thiết bị di động, thiết bị gia dụng, đồ chơi trẻ em và các trang thiết bị khác Tùy vào mục đích đáp ứng mà hệ thống nhúng lại được chia ra thành các mảng viễnthông, xử lý tín hiệu, điều khiển hay tự động hóa và hàng không vũ trụ
Ngày nay, hệ thống nhúng phát triển theo hướng đa xử lý, gia tăng tính phức tạp, mức
độ tích hợp cao nhưng vẫn đảm bảo yêu cầu về an toàn và hiệu suất cao, ngoài ra, hiệu quả về thời gian chạy và năng lượng phải được đảm bảo
Việc nghiên cứu và giảng dạy hệ thống nhúng đang dần dược chú trọng và là một trong những ngành nghề mà các công ty công nghệ lưu tâm khi tuyển dụng Để chuẩn bị kiến thức sau khi ra trường cũng như trong quá trình học tập, chúng ta sẽ nghiên cứu việcgiao tiếp với các bộ phận, thiết bị trong và ngoài hệ thống nhúng
Và để hiểu sự hoạt động của các board trong hệ thống nhúng ta có một số giao tiếp cơ bản vì vậy nhóm sẽ trình bày một số giao tiếp với board hệ thống nhúng như: ADC, USART, DMA, PWR,GPIO trên board STM32F103C8T6
Trang 5hướng dẫn cho tên lửa quân sự vào năm 1961 Nó là máy hướng dẫn
Autonetics D-17, được xây dựng sử dụng những bóng bán dẫn và một đĩa cứng
để duy trì bộ nhớ Khi Minuteman II được đưa vào sản xuất năm 1996, D-17
đã được thay thế với một máy tính mới sử dụng mạch tích hợp Tính năng thiết
kế chủ yếu của máy tính Minuteman là nó đưa ra thuật toán có thể lập trình lại sau đó để làm cho tên lửa chính xác hơn, và máy tính có thể kiểm tra tên lửa, giảm trọng lượng của cáp điện và đầu nối điện
Từ những ứng dụng đầu tiên vào những năm 1960, các hệ thống nhúng đã giảm giá và phát triển mạnh mẽ về khả năng xử lý Bộ vi xử lý đầu tiên hướng đến người tiêu dùng là Intel 4004, được phát minh phục vụ máy tính điện tử và những hệ thống nhỏ khác Tuy nhiên nó vẫn cần các chip nhớ ngoài và những
hỗ trợ khác Vào những năm cuối 1970, những bộ xử lý 8 bit đã được sản xuất, nhưng nhìn chung chúng vẫn cần đến những chip nhớ bên ngoài
Vào giữa thập niên 80, kỹ thuật mạch tích hợp đã ạt trình độ cao dẫn đến nhiều thành phần có thể đưa vào một chip xử lý Các bộ vi xử lý được gọi là các vi điều khiển và được chấp nhận rộng rãi Với giá cả thấp, các vi điều khiển đã trở nên rất hấp dẫn để xây dựng các hệ thống chuyên dụng Đã có một
sự bùng nổ về số lượng các hệ thống nhúng trong tất cả các lĩnh vực thị trường
và số các nhà đầu tư sản xuất theo hướng này
Trong nước:
Hiện nay, lĩnh vực hệ thống nhúng tại Việt Nam mới chỉ có những bước đi chập chững ban đầu, với rất ít sản phẩm “made in Vietnam” có thể ứng dụng vào thực tế Công việc chủ yếu vẫn là lắp ráp, gia công phần mềm cho nước ngoài, trong đó chiếm tỷ lệ lớn nhất là các thị trường Nhật, Mỹ và châu Âu Rất nhiều hãng sản xuất phần mềm lớn đã và đang “đổ bộ” vào thị trường Việt Nam để tận dng lợi thế nguồn nhân lực giá rẻ và khai thác một thị trường tiềm năng mới như IBM, CSC, Altera…
2.2 Tài liệu và kiến thức liên quan.
Trước khi tìm hiểu đề tài, chúng ta cần trang bị những kiến thức căn bản liên quan đến hệ thống nhúng như board mạch, vi xử lý, vi điều khiển, các giao thức ở trên board nhúng
Nắm vững nền tảng các môn học như Điện tử căn bản, Kiến trúc máy tính và hợp ngữ, sơ đồ nguyên lý và hoạt động của board mạch
Phần nội dung trong đề tài này có tham khảo kiến thức từ giáo trình chính thức
bộ môn Hệ thống nhúng và nguồn tư liệu từ Internet
Trang 62.3 Tính cấp thiết của đề tài.
Hệ thống nhúng nói riêng và lập trình nhúng nói chung ngày càng trở thành một mảng đào tạo được các trường, công ty quan tâm Trong đó nhu cầu nhân lực thực tế ngành nghề này cực hiếm Chính vì thế việc tìm hiểu và nghiên cứu
hệ thống nhúng là bước đệm quan trọng giúp sinh viên định hướng, có lý thuyết cơ bản về mảng này
Đề hiểu được cách thức hoạt động của board nhúng thì một số giao tiếp với cácgiao thức là vô cùng quan trọng, vì vậy việc thực hiện một số giao tiếp như là RTC, ADC, UART, DMA, PWM rất là quan trọng
2.4 Mục tiêu của đề tài.
Đề tài ra đời với mục đích giúp sinh viên tổng hợp lại các kiến thức đã tiếp thu được trong quá trình học môn Hệ thồng nhúng, đồng thời có cái nhìn tổng quan
2.5 Đối tượng và phạm vi nghiên cứu.
a Đối tượng nghiên cứu:
Kit STM32F103C8T6 của hãng ARM
Các thiết bị có thể hỗ trợ cho làm các bài thí nghiệm của kit STM32F103C8T6
b Phạm vi nghiên cứu:
Nghiên cứu ở mức lập trình cho các thí nghiệm trên kit STM32F103C8T6
Xây dựng thuật toán và code nhúng vào thiết bị
Hiểu được nguyên lý hoạt động của board mạch và các thí nghiệm giao tiếp đã làm
2.6 Phương pháp nghiên cứu.
Đi từ những kiến thức cơ bản về board mạch, cách vận hành cấu hình đến lập trình và nhúng
Tìm hiểu các cách giao tiếp với kit STM32F103C8T6
Trang 7PHẦN NỘI DUNG.
CHƯƠNG 1: GIỚI THIỆU VI ĐIỀU KHIỂN STM32F103C8T6
Bộ vi xử lý ARM Cortex-M3 là thế hệ mới nhất của bộ xử lý ARM cho các hệ thốngnhúng Nó được phát triển để cung cấp một nền tảng chi phí thấp, đáp ứng yêu cầu thựcthi của MCU với việc giảm số bóng bán dẫn trong lõi ARM Cortex dẫn tới tiêu thụ nănglượng thấp và giảm giá thành vi xử lí, đồng thời cung cấp hiệu năng tính toán cao và một
hệ thống tiên tiến để đáp ứng ngắt Bộ vi xử lý ARM Cortex-M3 32-bit RISC đạt hiệusuất cao hơn so với ARM7TDMI-S
Dòng vi xử lý hiệu suất cao STM32F103C8T6 có một lõi ARM nhúng và do đó nótương thích với tất cả các công cụ và phần mềm cho ARM hiện đang có trên thị trường
Nó là sự kết hợp của ARM Cortex-M3 CPU hiệu suất cao với rất nhiều thiết bị ngoại vi
mở rộng và các I/O cải tiến STM32F103C8T6 là board mạch phát triển với chi phí thấpcho vi điều khiển dựa trên lõi ARM Cortex-M3 của STMicroelectronis
Board STM32F103C8T6 mang đến giải pháp hoàn hảo cho sự phát triển ngoại viUSB Tất cả các cổng vi điều khiển có sẵn trên kết nối mở rộng
Trang 8CHƯƠNG 2: CẤU TRÚC CHUNG CỦA KIT
2.1 Các tài nguyên phần cứng và giao thức hỗ trợ.
MCU: STM32F103C8T6 ARM 64KB CORTEX M3™ FLASH MEM LQFP có Vendor: STMicroelectronics, Category: Integrated Circuits(ICs), kích thước Program Memory: 64KB (64K x 8), 20Kx8 Bytes RAM, 1 USB Device 2.0, 1CAN 2.0B Active, 2 I2C, 2 SPI (18 Mbit/s), 3x ADC 12 bit, 3 USART, 16-bit
48-Timers with Input Capture, Output Compare and PWM, 2 12-bit 10-ch A/D
Converter, Fast I/O Ports, tần số hoạt động tối đa 72Mhz, điện áp hoạt động 3.6V Cổng debug có SWD (Serial wire debug) và Cortex-M3 ETM (Embedded Trace Macrocell)
2.0-Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3v3 qua IC nguồn và cấp cho vi điều khiển chính
Ra chân đầy đủ tất cả các GPIO và giao tiếp: UART/ USART, ADC, PWR, DMA, I2C SPI, USB, CAN
Có Led trạng thái nguồn, led PC13
ADC (đọc từ biến trở, cảm biến nhiệt độ, ánh sáng )
UART (giao tiếp PC hoặc dùng như boot loader để nạp chương trình )
GPIO (Led, Button )
Trang 9CHƯƠNG 3: NHỮNG KIẾN THỨC LIÊN QUAN
3.1 Giao tiếp ADC
a Giới thiệu
ADC hay mạch chuyển đổi tương tự ra số hay Analog-to-digital converter, là một linh kiện bán dẫn thực hiện chuyển đổi một đại lượng vật lý tương tự liên tục nào đó (thường là điện áp) sang giá trị số biểu diễn độ lớn của đại lượng đó
b Hoạt động
Để thuận tiện mô tả, sau đây coi mặc nhiên tín hiệu vào là điện áp
Sự chuyển đổi liên quan đến việc lượng tử hóa tín hiệu ngõ vào, do đó nhất thiết mắc một lượng lỗi Thay vì làm một chuyển đổi duy nhất, ADC thực hiện việc chuyển đổi theo định kỳ gọi là "mẫu" ngõ vào (sample) Kết quả là một quá trình
Trang 10thời gian liên tục (continuous-time) và giá trị liên tục (continuous-amplitude) đượcchuyển đổi sang dãy số rời rạc về cả hai thứ đó Như vậy nó có hai đặc trưng quan trọng nhất liên quan đến độ phân giải hai chiều:
Nhịp lấy mẫu là khoảng thời gian giữa hai lần thực hiện số hóa, hoặc nghịch đảo của nó là tần số số hóa
Bậc số hóa là số bit xác định số mức số hóa cho dải giá trị điện áp danh định
Hệ M bit có 2M mức cho tín hiệu đơn cực, chỉ dương hoặc chỉ âm Nếu là tín hiệu song cực, phải dành 1 bit dấu, và do mức 0 bị dính nên hệ cho ra 2M-1-
để số hóa tín hiệu có băng tần 10-250 Hz
Tại ngõ vào chính của ADC trong chip có thể có phần tử Multiplexer, cho ra ADC
đa ngõ vào hay ADC đa kênh Trước đây giá thành ADC cao, nên đã bố trí 8 đến
64 ngõ vào Hiện nay xuất hiện các chip chỉ bố trí 1, 2 hoặc 4 ngõ vào
Nguyên lí hoạt động
o Flash ADC
Flash ADC là dạng đơn giản nhất, thực hiện bằng dãy điện trở phân áp và các comparator điện áp Nó là minh hoạ nhập đề cho hoạt động của ADC Trong hình vẽ là ADC 16 mức "không âm", thực hiện bẳng 15 comparator Kết quả so được mạch lập mã Encoder tiếp nhận và chuyển sang mã nhị phân, trong trường hợp này là 4 bit
Nhịp lấy mẫu do phần nhận mã tự quyết định, và có thể đạt rất cao
Thay cho Bậc số hóa phải dùng mức số hoá (nếu số mức không trùng vào số 2M)
o ADC xấp xỉ nối tiếp
o Ramp-compare ADC
o ADC tích phân sườn đôi hoặc đa sườn
o ADC mã hoá delta
o ADC sigma-delta
Trang 11 Các đặc trưng hoạt động
o ADC dấu phẩy tĩnh.
Các ADC thông thường nêu ở mục trên thực hiện số hóa với các mức tín hiệu cách đều, và cho ra kết quả là số integer nhị phân, biểu diễn giá trị tín hiệu Nó được gọi là kiểu dấu phảy tĩnh Tuy nhiên thuật ngữ "dấu phảy tĩnh" không cầnnhắc tới nếu không có nhu cầu phân biệt
Ví dụ ADC 16 bit nhị phân cho ra giá trị mã từ -16383 đến +16383, lỗi xấp xỉ tín hiệu là ≈10−5, đáp ứng tốt nhu cầu số hoá âm nhạc thông thường Trong ứng dụng âm nhạc thì không cần quan tâm giá trị tuyệt đối phải là chính xác, nên việc thích ứng với cường độ âm thanh thực hiện bằng chỉnh chiết áp
khuếch đại là đủ
Trong đo lường hay ứng dụng cần giá trị chính xác, thì ADC này chỉ đáp ứng dải động xác định
o ADC dấu phẩy động.
Trong các thiết bị đo lường có dải động rộng thì sử dụng ADC dấu phảy động Kiến trúc của ADC này gồm có hai phần:
Tiền khuếch đại có độ khuếch điều khiển nhị phân, với số bit điều khiển
là số bit đặc tính của kết quả
ADC dấu phảy tĩnh, có số bit chính là số bit định trị của kết quả
Hoạt động của ADC này có hai kỳ Kỳ 1, xác định bit đặc tính để tiền khuếch đại cho ra tín hiệu có độ lớn trong dải động của ADC chính, trong đó giá trị đặctính cao thì độ khuếch thấp Kỳ 2, ADC chính số hóa
Các lỗi đặc trưng
Đặc trưng biến đổi phi tuyến
Trôi điểm không do trôi phông của các phần tử tuyến tính trong hay ngoài chip
Trang 12 Nhảy sai mức hiện ra ở dạng quá rộng hay quá cao, do ảnh hưởng nhiễu và dải bất định ở mức ngưỡng so sánh gây ra.
Lỗi lệch thời hay "skew", xảy ra ở ADC ghép kênh ADC ghép kênh phải tuần tự biến đổi cho các tín hiệu vào, nên tín hiệu vào được lấy mẫu không cùng thời điểm Một số thiết bị đã bố trí microprocessor tính hiệu đính skew để đưa về cùng thời điểm
Lỗi Aliasing: khi bộ lọc cắt tần cao không đủ mạnh, các nhiễu tần số cao lọtvào
3.2 Giao tiếp GPIO trên vi điều khiển STM32F103C8T6
a Giới thiệu
Khái niệm: là một chức năng ngoại vi cơ bản của các vi điều khiển, bao
gồm các chân đầu vào và chân đầu ra, có thể được điều khiển bởi người dùng
Tuy nhiên những dòng vi điều khiển 8bit, chỉ có 8 chân IO trên 1 port thì ở các vi điều khiển 32bit, có đến 16 chân IO trên 1 port Cụ thể đối với chip STM32F103C8Tx gồm có 3 Port chính đó là GPIOA, GPIOB, GPIOC Trong đó, GPIOA, GPIOB trên kit thì có đủ 16 chân GPIO, GPIOC 3 chân
và GPIOD có 2 chân
b Cấu trúc chân GPIO của Vi điều khiển STM32F103C8T6
Trang 13Có 2 khối điều khiển khác nhau (khung hình nét đứt):
– Input
– Output và các điều khiển đầu ra khác
c Chức năng của GPIO bao gồm:
Alternate function push-pull
Alternate fungtion open-drain
3.2.1 GPIO Input:
Sơ lược qua cấu trúc phần cứng và khối điều khiển input:
Trang 143.2.2 Các thanh ghi dữ liệu:
Input Data Register (IDR): Nhận mức tín hiệu tại chân IO, thông qua việc đọc thanh ghi GPIOx_IDR thì chúng ta có thể đọc được trạng thái mức “1” hay mức “0” của chân đó tạiPort tương ứng
Khi cấu hình các chân ở Port tương ứng có chức năng Input thì các thanh ghi dữ liệu
Output (Output data register) sẽ tự động bị khóa lại vì chân đó đã được khai báo là Input.
Lúc này, chúng ta chỉ được phép đọc dữ liệu từ thanh ghi Input Data Register để biết trạng thái của chân tại port đó chứ không được phép ghi
Trang 153.2.3 TTL Schmitt Trigger:
– Nhiễu
– Tốc độ chuyển đổi tín hiệu chậm
Khi cấu hình chân ở Port tương ứng là Input thì khối TTL Schmitt Trigger sẽ được nối với chân vật lý Cơ chế của mạch tích hợp TTL Schemitt Trigger này mục đích dùng để khi
nó tiếp nhận điện áp Vin, nó giúp chúng ta phân biệt được tín hiệu bằng ngưỡng VT đó
để quyết định ngõ ra Vout là cao hay thấp Với thiết kế TTL Schmitt Trigger giúp chúng
ta chống nhiễu đầu vào tốt hơn ở bên trong vi điều khiển
Trang 163.2.4 Điện trở kéo
Khi cấu hình chân ở Port tương ứng có chức năng Input, thì tại chân đó chúng ta
có thể chọn điện trở để định mức điện áp trước tại chân đó là mức “1” hay mức “0”, có thể gọi là điện trở pull up (kéo nguồn) hoặc điện trở pull down (kéo đất) Nếu không cấu hình cho nó kéo nguồn hay kéo đất thì chân IO sẽ ở điện áp thả nổi nằm giữa mức “1” và mức “0” (Input floating)
Trang 183.3 Giao tiếp DMA
a Định nghĩa:
- DMA (Direct memory access): là một cơ chế truyền dữ liệu tốc độ cao từ ngoại
vi tới bộ nhớ cũng như từ bộ nhớ tới bộ nhớ Dữ liệu có thể được di chuyển một cách nhanh chóng mà không cần tới tác vụ từ CPU, tiết kiệm tài nguyên CPU cho các hoạt động khác
b DMA của STM32:
- STM32 có 2 bộ DMA với 12 kênh (7 kênh DMA1 và 5 kênh DMA2), mỗi bộ quản lý việc truy cập bộ nhớ từ một hoặc nhiều ngoại vi DMA cũng có chức năng phân xử độ ưu tiên giữa các DMA request
- 12 kênh DMA độc lập, có thể thiết lập được 7 kênh DMA1 và 5 kênh DMA2
- Software trigger được hỗ trợ cho mỗi kênh, và được lập trình bởi phần mềm
- Độ ưu tiên giữa các kênh DMA có thể lập trình bởi phần mềm (có 4 cấp ưu tiên
là very high, high, medium, low) hoặc phần cứng
- Phụ thuộc vào kích thước giữa nguồn và đích (byte, half word, word) Địac chỉ nguồn/đích phải phù hợp với kích thước dữ liệu
- Hỗ trợ truyền tải giữa:
Memory to memory
Peripheral to memory
Memory to peripheral
Peripheral to peripheral
- Có thể truy cập vào Flash, Sram, APB1, APB2 và AHB như nguồn và đích
- Dữ liệu truyền nhận hỗ trợ tới 65536