Giới thiệu về kit STM32F4 Discovery

Một phần của tài liệu Thiết kế và điều khiển cánh tay robot ba bậc tự do (Trang 30)

2.3.1. Giới thiệu chung

STM32F4 Discovery là board vi điều khiển dành cho người mới học hoặc dành cho lập trình viên chuyên nghiệp trong lĩnh vực điều khiển tự động hóa. STM32F4 giúp khám phá STM32F407/417 dể phát triển các ứng dụng một cách dễ dàng. Nó bao gồm tất cả mọi thứ để người mới học bắt đầu một cách nhanh chóng như : một công cụ debug ST-LINK/V2, hai ST MEMS gia tốc kỹ thuật số và micro kỹ thuật số, một bộ DAC âm thanh co tích hợp trình điều khiển loa lớp D, đèn LED và các nút bấm và một cổng kết nối USB OTG. Board được tích hợp chip ARM Cortex-M4 cùng với bộ tính toán số thực(FPU), hoạt động với tần số rất cao 168 MHz, tỷ suất DMIPS/MHZ cao 1.25 giúp cho hệ thống có thể đạt được hiệu năng 210 DMIPS, board rất thích hợp cho các ứng dụng với yêu cầu tính toán xử lý nhanh, ví dụ như DSP, điều khiển robot… Với STM32F4 Discovery, chúng ta sẽ không cần phải lo lắng và không cần phải bỏ tiền ra để mua mạch nạp đắt tiền như các loại MCU thông thường. Điểm nổi bật nhất của board là có nhiều tính năng trong khi giá thành

18 rất rẻ. Đó cũng là lý do mà nhóm thực hiện đề tài lựa chọn kit này để sử dụng. [5]

Hình2.2: Hình ảnh thực tế Kit STM32F4 Discovery.

2.3.2. Tính năng

Kit STM32F4 Discovery có các tính năng như sau: [5]

- Vi điều khiển có bộ nhớ Flash 1 MB, bộ nhớ RAM là 192 KB trong gói LQFP100

- Có thể lựa chọn để sử dụng bộ ST-LINK/V2 (kết nối SWD để lập trình và gỡ lỗi).

- Điện cung cấp cho board : có thể sử dụng thông qua cổng USB hoặc cấp điện áp 5V cho board.

- Nguồn cung cấp cho ứng dụng bên ngoài: 3V và 5V

- Có LIS302DL, cảm biến chuyển động ST MEMS, 3 trục đo gia tốc đầu ra kỹ thuật số.

19 - CS43L22, âm thanh với bộ chuyển đổi DAC có tích hợp trình điều khiển loa lớp D.

Tám đèn LED :

+ LD1 (màu đỏ/màu xanh lá cây) để giao tiếp USB + LD2 (màu đỏ) báo điện áp 3.3V

+ Bốn LED báo sử dụng : LD3 (màu cam, PD13), LD4 (màu xanh lá cây, PD12), LD5 (màu đỏ, PD14) và LD 6 (màu xanh dương, PD15).

+ 2 USB OTG LED: LD7( màu xanh lá) VBus và LD8 (màu đỏ) quá dòng. - Hai nút nhấn (user và reset hệ thống).

- OTG USB với bộ kết nối micro-AB.

2.3.3. Dãy công cụ phát triển:

- IAR EWARW (IAR Embedded Workbench) - Keil MDK-ARM

- GCC dựa trên IDE (ARM @ Atollic@ True STUDIO@,...)

2.3.4. Giới thiệu về dòng vi điều khiển STM32

- Sự tinh vi

Thoạt nhìn thì các ngoại vi của STM32 cũng giống như những vi điều khiển khác, như hai bộ chuyển đổi ADC, timer, I2C, SPI, CAN, USB và RTC. Tuy nhiên mỗi ngoại vi trên đều có rất nhiều đặc điểm thú vị. Ví dụ như bộ ADC 12-bit có tích hợp một cảm biến nhiệt độ để tự động hiệu chỉnh khi nhiệt độ thay đổi và hỗ trợ nhiều chế độ chuyển đổi. Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiện với tính năng input capture và tạo dạng sóng ở ngõ ra với output compare), mỗi khối định thời có thể liên kết với các khối định thời khác để tạo ra một mảng các định thời tinh vi hơn. Một bộ định thời cao cấp chuyên hỗ trợ điều khiển động cơ, với 6 đầu ra PWM với dead time (khoảng thời gian được chèn vào giữa hai đầu tín hiệu xuất PWM bù nhau trong điều khiển mạch cầu H) lập trình được và một đường break input (khi phát hiện điều kiện dừng khẩn cấp) sẽ buộc tín hiệu PWM sang một trạng thái an toàn đã

20

được cài sẵn. Ngoại vi nối tiếp SPI có một khối kiểm tổng (CRC) bằng phần cứng cho 8 và 16 word hỗ trợ tích cực cho giao tiếp thẻ nhớ SD hoặc MMC. [5] STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access). Mỗi kênh có thể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanh ghi ngoại vi đi với kích thước từ (word) dữ liệu truyền đi có thể là 8/16 hoặc 32-bit. Mỗi ngoại vi có thể có một bộ điều khiển DMA (DMA controller) đi kèm dùng để gửi hoặc đòi hỏi dữ liệu như yêu cầu. Một bộ phân xử bus nội (bus arbiter) và ma trận bus (bus matrix) tối thiểu hoá sự tranh chấp bus giữa truy cập dữ liệu thông qua CPU (CPU data access) và các kênh DMA. Điều đó cho phép các đơn vị DMA hoạt động linh hoạt, dễ dùng và tự động điều khiển các luồng dữ liệu bên trong vi điều khiển. [5]

STM32 là một vi điều khiển tiêu thụ năng lượng thấp và đạt hiệu suất cao. Nó có thể hoạt động ở điện áp 2V, chạy ở tần số 72MHz và dòng tiêu thụ chỉ có 36mA với tất cả các khối bên trong vi điều khiển đều được hoạt động. Kết hợp với các chế độ tiết kiệm năng lượng của Cortex, STM32 chỉ tiêu thụ 2μA khi ở chế độ Standby. Một bộ dao động nội RC 8MHz cho phép chip nhanh chóng thoát khỏi chế độ tiết kiệm năng lượng trong khi bộ dao động ngoài đang khởi động. Khả năng nhanh đi vào và thoát khỏi các chế độ tiết kiệm năng lượng làm giảm nhiều sự tiêu thụ năng lượng tổng thể. [5]

- Sự an toàn

Ngày nay các ứng dụng hiện đại thường phải hoạt động trong môi trường khắt khe, đòi hỏi tính an toàn cao, cũng như đòi hỏi sức mạnh xử lý và càng nhiều thiết bị ngoại vi tinh vi. Để đáp ứng các yêu cầu khắt khe đó, STM32 cung cấp một số tính năng phần cứng hỗ trợ các ứng dụng một cách tốt nhất. Chúng bao gồm một bộ phát hiện điện áp thấp, một hệ thống bảo vệ xung Clock và hai bộ Watchdogs. Bộ đầu tiên là một Watchdog cửa sổ (windowed watchdog). Watchdog này phải được làm tươi trong một khung thời gian xác định. Nếu nhấn nó quá sớm, hoặc quá muộn, thì Watchdog sẽ kích hoạt. Bộ thứ hai là một Watchdog độc lập (independent watchdog), có bộ dao động bên ngoài tách biệt với xung nhịp hệ thống chính. Hệ thống bảo vệ xung nhịp có thể

21

phát hiện lỗi của bộ dao động chính bên ngoài (thường là thạch anh) và tự động chuyển sang dùng bộ dao động nội RC 8MHz. [5]

- Tính bảo mật

Một trong những yêu cầu khắt khe khác của thiết kế hiện đại là nhu cầu bảo mật mã chương trình để ngăn chặn sao chép trái phép phần mềm. Bộ nhớ Flash của STM32 có thể được khóa để chống truy cập đọc Flash thông qua cổng Debug. Khi tính năng bảo vệ đọc được kích hoạt, bộ nhớ Flash cũng được bảo vệ chống ghi để ngăn chặn mã không tin cậy được chèn vào bảng vector ngắt. Hơn nữa bảo vệ ghi có thể được cho phép trong phần còn lại của bộ nhớ Flash. STM32 cũng có một đồng hồ thời gian thực và một khu vực nhỏ dữ liệu trên SRAM được nuôi nhờ nguồn pin. Khu vực này có một đầu vào chống giả mạo (anti-tamper input), có thể kích hoạt một sự kiện ngắt khi có sự thay đổi trạng thái ở đầu vào này. Ngoài ra một sự kiện chống giả mạo sẽ tự động xóa dữ liệu được lưu trữ trên SRAM được nuôi bằng nguồn pin. [5]

- Phát triển phần mềm

Các công cụ phát triển cho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex. Ngoài ra ST cũng cung cấp một thư viện điều khiển thiết bị ngoại vi, một bộ thư viện phát triển USB như là một thư viện ANSI C và mã nguồn đó là tương thích với các thư viện trước đó được công bố cho vi điều khiển STR7 và STR9. Có rất nhiều RTOS mã nguồn mở và thương mại và middleware (TCP/IP, hệ thống tập tin, v.v.) hỗ trợ cho họ Cortex. Truy cập vào hệ thống CoreSight thông qua cổng truy cập Debug (Debug Access Port), cổng này hỗ trợ kết nối chuẩn JTAG hoặc giao diện 2 dây (serial wire-2 Pin), cũng như cung cấp trình điều khiển chạy gỡ lỗi, hệ thống CoreSight trên STM32 cung cấp hệ thống điểm truy cập (data watchpoint) và một công cụ theo dõi (instrumentation trace). Công cụ này có thể gửi thông tin về ứng dụng được lựa chọn đến công cụ gỡ lỗi. Điều này có thể cung cấp thêm các thông tin gỡ lỗi và cũng có thể được sử dụng trong quá trình thử nghiệm phần mềm. [5]

22

2.3.5. Phần cứng

Hình 2.3: Sơ đồ khối phần cứng kit STM32F4 Discovery. [4] Sơ đồ khối kit

23 Hình 2.4: Sơ đồ kit STM32F4. [4]

24 Hình 2.5: Chức năng của các chân. [4]

2.4. Thư viện Waijung Blockset[3]

Waijung Blockset là một thư viện cho MatLab gồm các khối được xây dựng trên nền tảng C do một công ty Thái phát triển với mục đích dùng để giảng dạy và sử dụng các ứng dụng trên phần cứng mà công ty này thiết kế (dựa trên các board của ST), giữ vai trò quan trọng trong việc cấu hình cho tất cả các ngoại vi của vi diều khiển STM32F405xx – 407xx – 415xx – 417xx (từ 64 pin đến 176 pin) kết hợp với nhiều loại cảm biến, module Lan, Wifi, Usb, Uart … Led 7 đoạn, LCD,…. Trong thư viện Waijung Blockset đều có khả năng xuất code cho vi điều khiển STM32F4 khi sử dụng chức năng Real – time Workshop, phù hợp với các phiên bản MatLab R2009a trở lên. Giao diện từng khối rất dễ sử dụng vì được mô tả một cách chi tiết cho từng khối, bên cạch đó cho phép ta sử dụng các khỏi của MatLab với các khối trong thư viện Waijung Blockset. Đặt biệt thư viện cho phép STM32 giao tiếp với UART với MatLab để chạy Simulink. [3]

25

2.4.1. Khối Target Setup

Hình 2.6: Hình ảnh khối Targat Setup trong Simulink.

Hình 2.7: Cấu hình cho Target Setup

Khối Target Setup sẽ được đưa vào mỗi chương trình Simulink dùng để thiết lập các mục tiêu:

- Tạo ra mã cho các mục tiêu STM32F4 được lựa chọn từ một danh sách hỗ trợ MCU.

26 - Dùng để lựa chọn và kiểm soát các trình biên dịch chéo để biên dịch các mã được tạo ra.

- Thiết lập đồng hồ hệ thống khác nhau cho các mục tiêu. - Kiểm soát toàn bộ quá trình xây dựng biên dịch tự động tải.

2.4.2. Khối Digital Output

Hình 2.8: Hình ảnh khối Digital Output trong Simulink.

Hình 2.9: Cấu hình cho khối Digital Output. Trong đó:

27 - Port: chọn port để xuất tín hiệu logic đầu ra.

- Speed: tần số - Type: loại pin

Khối Digital Output thực hiện Digital Output Module để tạo ra mức logic ở đầu ra kỹ thuật số từ MCU pin

Ngõ vào chấp nhận bất kỳ nguồn góc nào của loại dữ liệu Simulink. MCU tạo ra từ chân logic dựa trên logic sau:

if (đầu vào == 1) đầu ra logic = 1; else

đầu ra logic = 0; end

Ngõ thể hiện mức logic này lo do người sử dụng cấu hình.

2.4.3. Khối UART Setup

28 Hình 2.11: Cấu hình cho khối UART Setup.

Trong đó:

- UART Module: chọn module cho UART trong trường hớp sử dụng nhiều UART trong một chương trình.

- Baud rate (bps): chọn tốc độ truyền nhận dữ liệu.

- Tx Pin: tín hiệu được truyền đến thiết bị khác tại chân được lựa chọn. - Rx Pin: tín hiệu được nhận về từ các thiết bị khác tại chân được lựa chọn.

2.4.4. Khối UART Rx

29 Hình 2.13: Cấu hình cho khối UART Rx.

Trong đó:

- UART Module: chọn module phải giống với module khối UART Setup. - Transfer: chọn phương thức chuyển.

- Packet mode: lựa chọn khối truyền dữ liệu ( nhị phân hoặc Ascii).

Sử dụng khối này để nhận dữ liệu từ UART khi ứng dụng cần giao tiếp giữa các thiết bị với thiết bị thông qua giao thức UART.

2.4.5. Khối UART Tx

30 Hình 2.15: Cấu hình cho khối UART Tx.

Sử dụng khối này để truyền dữ liệu đến UART khi ứng dụng cần giao tiếp giữa các thiết bị với thiết bị thông qua giao thức UART.

2.4.6. Khối Encoder Read

31 Hình 2.17: Cấu hình cho khối Encoder Read.

Trong đó:

- Timer: chọn timer phù hợp cho encoder.

- Channel A/B Input Pin: chọn kênh để kết nối với kênh A/B của encoder. - PPR: số xung của đĩa encoder.

Sử dụng khối này để đọc đầu ra bộ mã hóa của bộ encoder của động cơ.

2.4.7. Khối Basic PWM

32 Hình 2.19: Cấu hình của khối Basic PWM.

Trong đó:

- Timer: chọn timer hoạt động của khối Basic PWM. - PWM Period: thời gian của một chu kỳ.

Sử dụng khối này để tạo ra xung PWM tín hiệu. Các điều kiện sau đây được áp dụng:

- Lên đến một số lượng tối đa 4 tín hiệu PWM cạnh canh (kênh) có thể được tạo ra cho mỗi giờ.

- Mỗi giờ có 16-bit truy cập mà xác định thời gian PWM. - Chu kỳ PWM không thể thay đổi trong thời gian chạy.

Khối này chấp nhận Cycle Duty Input (%) giữa 0-100 giá trị như gấp đôi cho mỗi tín hiệu PWM tạo ra.

33

2.4.8. Khối Host Serial Setup

Hình 2.20: Hình ảnh khối Host Serial Setup trong Simulink.

Hình 2.21: Cấu hình khối Host Serial Setup. Trong đó:

- Port: chọn cổng COM cắm UART có thể để auto để tự động chọn cổng. - Baud rete: Quy định tốc độ truyền (tốc độ) cho các cổng xác định (phải trùng với tốc độ định ở khối UART setup).

- Data bits: các khối dữ liệu giới hạn 8 bit. - Stop bit: chọn số bit cho dừng.

- Hardware flow control: Việc kiểm soát khối giới hạn lưu lượng phần cứng để None.

34

2.4.9. Khối Host Serial Tx

Hình 2.22: Hình ảnh khối Host Serial Tx trong Simulink.

Hình 2.23: Cấu hình cho khối Host Serial Tx. Trong đó:

Port: chọn cổng cắm UART (có thể để chế độ auto để có thể tự động chọn cổng khi thay đổi cổng cắm UART).

35

2.4.10. Khối Host Serial Rx

Hình 2.24: Hình ảnh khối Host Serial Rx trong Simulink.

Hình 2.25: Cấu hình cho khối Host Serial Rx. Trong đó:

Port: dùng để chọn cổng nếu để chế độ <auto> thì khối sẽ quét cổng tự động. Transfer: chọn chế độ chuyển khối.

36

2.5. PL-2303 UART

Hình 2.26: UART PL2303

Nguyên lý truyền thông nối tiếp đồng bộ và không đồng bộ. Module truyền thông nối tiếp USART trên STM32F4 Discovery. Truyền thông đa xử lí bằng UART.

2.5.1. Truyền thông nối tiếp không đồng bộ

Thuật ngữ USART trong tiếng anh là viết tắt của cụm từ: Universal Synchronous & Asynchronous serial Reveiver and Transmitter, nghĩa là bộ truyền nhận nối tiếp đồng bộ và không đồng bộ. Cần chú ý rằng khái niệm USART (hay UART nếu chỉ nói đến bộ truyền nhận không đồng bộ) thường để

37 chỉ thiết bị phần cứng (device, hardware), không phải chỉ một chuẩn giao tiếp. USART hay 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 đó. Ví dụ, chuẩn RS232 (hay COM) trên các máy tính cá nhân là sự kết hợp của chip UART và chip chuyển đổi mức điện áp. Tín hiệu từ chip UART thường theo mức TTL: mức logic high là 5, mức low là 0V. Trong khi đó, tín hiệu theo chuẩn RS232 trên máy tính cá nhân thường là -12V cho mức logic high và +12 cho mức low (tham khảo hình dưới). Chú ý là các giải thích trong tài liệu này theo mức logic TTL của USART, không theo RS232. [7]

Hình 2.27: Tín hiệu tương đương của UART và RS232.

Truyền thông nói tiếp: giả sử bạn đ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 (hoặc vi điều khiển và máy tính) 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 Master truyền lệnh cho Slaver hoặc Slaver gởi tín hiệu thu thập được về Master xử lí…Giả sử dữ liệu cần trao đổi là các mã có chiều dài 8 bits, bạn có thể sẽ nghĩ đến cách kết nối đơn giản nhất là kết nối 1 PORT (8 bit) của mỗi vi điều khiển với nhau, mỗi line trên PORT 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

Một phần của tài liệu Thiết kế và điều khiển cánh tay robot ba bậc tự do (Trang 30)