huong dan su dung board opencmx-stm3210d

26
www.arm.vn OPENCMX-STM3210D www.arm.vn V1.0 Trang 1 Hướng dn sdng board OPENCMX-STM3210D

Upload: hoa-ngoc-vu

Post on 20-Apr-2017

270 views

Category:

Documents


21 download

TRANSCRIPT

Page 1: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 1

Hướng dẫn sử dụng board OPENCMX-STM3210D

Page 2: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 2

Mục lục

Hướng dẫn Set Jump cho board Tr.3 Hướng dẫn thiết lập DIP SW1 và nạp cho board OPENCMX-STM3210D Tr.8 Tính năng chíp ARM-STM32F103RD Tr.9 Tạo dự án với Keil ARM Tr.12 Các bước nạp chương trình qua FLASH LOADER DEMOSTRATOR Tr.19

Page 3: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 3

Nguồn cung c ấp cho m ạch Cấp ngu ồn ngoài

( DC 5V ) Cấp ngu ồn từ USB

Cấu hình ph ần cứng chân PA1 Chân PA1 ñược nối với bi ến trỡ loa ñơn âm ( buzzer )

Không ñược phép Được phép Ph ần cứng

Chân PA1 ñược nối với bi ến trỡ 10K

Không ñược phép Được phép Ph ần cứng

Chân PA1 ñược nối ñầu vào mic ( ñã qua mạch kh ếch ñại )

Không ñược phép Được phép Ph ần cứng

Page 4: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 4

Cấu hình ph ần cứng cho phép connecter PS2 hoat ñộng

Ứng dụng : Với Connector PS2 b ạn có th ể giao ti ếp trực ti ếp với keyboard ( bàn phím máy ví tính , mouse , thi ết b ị ñọc thẻ từ … )

Không ñược phép Được phép Ph ần cứng

Hình một số thi ết b ị dùng giao ti ếp PS2

Cấu hình ph ần cứng cho phép giao ti ếp CAN hoat ñộng

Không ñược phép Được phép

Page 5: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 5

Cấu hình cho 8 Led ñơn nối với PB8 … PB15 Không ñược phép Được phép Ph ần cứng

Giao ti ếp LCD với STM32 ở mode 4bits

Page 6: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 6

Nút Reset

Nút WKUP Nút thoát kh ỏi tr ạng thái ng ủ của STM32

Page 7: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 7

Giao ti ếp trực tiếp RS232 của ARM QUA USART1

Thẻ nhớ SD giao ti ếp trực tiếp SPI của ARM

Page 8: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 8

Header nạp và gỡ lỗi chương trình qua JTAG

Hướng dẫn cấu hình DIP SW1 ñể nạp chương trình qua cổng USART1 với FLASH LOADER DEMOSTRATOR

trên board OPENCMX-STM3210D

Hình tham khảo Chức năng BOOT0

Nạp qua bootloader

Page 9: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 9

Chạy chương trình trong ARM

Tính năng của chíp ARM-STM32F103RD

Vi xử lý ARM Cortex-M3 là thế hệ mới nhất của dòng vi xử lý ARM cho hệ thống nhúng . Nó ñược phát triển ñể cung cấp cho các hệ thống giá thành thấp và nó gần giống với MCU , với việc cắt giàm chân và năng lượng thấp , trong khi vẫn ñảm bảo khả năng tính toán và ñáp ứng ngắt ñược năng cao hơn . ARM Cotext M3 dự trên kiến trức vi xử lý RISC nhưng tối ưu hiệu quả mã lệnh , nhưng năng lực ñược ñảm bảo từ nhân ARM trong kích thước bộ nhớ thường kết hợp với 8 hoặc 16 bit .

Dòng STM32F103 có nhân ARM vì vậy tương thích với tất cả công cụ và phần mền dành

cho ARM . Nó là sự kết hợp hiệu năng cao từ ARM Cortex-M3 CPU với nhiều thiết bị ngoại vi cũng như nâng cao tính năng I/O . STM32-103 Dev 1.0 cho phép bạn khám phá hoàn toàn nhưng tính năng mới của vi ñiều khiểnARM Cortex M3 STM32F103RDT6 ñược phát triển từ ST Microelectronics Inc .

Một vài ứng dụng như : USB Mass Storage device, Audio class device, HID mouse

device, CDC Virtual com port device …

Đặc tính c ủa Kit: 1. MCU: STM32F103RDT6 ARM 32 bit CORTEX M3™ with 384K 2. Program Flash, 64K Bytes RAM, USB, CAN, x2 I2C, x16 ADC, x2 DAC 3. x5 UART, x2 SPI, x12 TIMERS, up to 72Mhz operation 4. JTAG connector tiêu chuẩn với ARM 2x10 pin dành cho việc lập trình và ghở rối 5. USB connector 6. SD-MMC card, Audio, Microphone 7. user buttions x3 8. user leds x3 9. RS-232 connector 10. RESET button 11. status LED 12. 8 Mhz crystal oscillator 13. 32768 Hz crystal and RTC backup battery 14. extension headers for all uC ports 15. Kích thước : 90.67 x 73.54mm (3.56 x 2.89")

Page 10: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 10

Yêu cầu từ board phát triển : � Cáp USB 1.8m ñể nới với PC ( dành cho việc cấp nguồn hoặc giao tiếp

USB trong trường hợp dùng ñến tính năng USB ) � Phần cứng : ARM-JTAG, ARM-USB-OCD, ARM-USB-TINY or other ARM

JTAG compatible tool . � Phần mềm :

• free open source platform: GNU C compiler + OpenOCD and Eclipse (support all low cost Olimex JTAG debuggers)

• commercial solution EW-ARM from IAR Systems AB, require expensive J-LINK debugger

• CrossWorks from Rowley (supports all Olimex low cost JTAG debuggers).

Đặc tính STM32F103RDT6

- CPU clock up to 72Mhz - FLASH 384KB - RAM 64KB - DMA x12 channels - RTC - WDT - Timers x11+1 - SPI x2 - I2C x2 - USART x5 - USB x1 - CAN x1 (multiplexed with USB so both can't be used in same

time) - GPIO up to 51 (multiplexed with peripherials) - 16 kênh ADC 12-bit, DAC x2 - operating voltage 2.0-3.6V - temperature -40C +85C

RS232: STM32F103RDT6 have 3 USARTs which are available on the extension headers. One of

them can operate up to 4.5 Mbit/s, the other two up to 2.25 Mbit/s. They provide hardware management of the CTS and RTS signals, IrDA SIR ENDEC support, are ISO 7816 compliant and have LIN Master/Slave capability.All USART interfaces can be served by the DMA controller.

SPI: STM32F103RDT6 have 2 SPIs which able to communicate up to 18 Mbits/s in slave and master modes in fullduplex and simplex communication modes. The 3-bit prescaler gives 8 master mode frequencies and the frame is configurable from 8-bit to 16-bit. The hardware CRC generation/verification supports basic SD Card/MMC modes. Both SPIs can be served by the DMA controller.

Page 11: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 11

I2C:

STM32F103RDT6 have two I²C bus interfaces which can operate in multi-master and slave modes. They can supportstandard and fast modes. They support dual slave addressing (7-bit only) and both 7/10-bit addressing in master mode. A hardware CRC generation/verification is embedded. They can be served by DMA and they support SM Bus 2.0/PM Bus. CAN:

The STM32F103RDT6 CAN is compliant with specifications 2.0A and B (active) with a bit rate up to 1 Mbit/s. It can receive and transmit standard frames with 11-bit identifiers as well as extended frames with 29-bit identifiers. It has three transmit mailboxes, two receive FIFOs with 3 stages and 14 scalable filter banks.The CAN and USB share same pins PA11 and PA12, so you can’t use both CAN and USB on same time. USB:

The STM32F103RDT6 embeds a USB device peripheral compatible with the USB Full-speed 12 Mbs. The USB interface implements a full speed (12 Mbit/s) function interface. It has software configurable endpoint setting and suspend/resume support. The dedicated 48 MHz clock source is generated from the internal main PLL.The CAN and USB share same pins PA11 and PA12, so you can’t use both CAN and USB on same time. ADC:

STM32F103RDT6 have two 12-bit Analog to Digital Converters which share up to 16 external channels, performing conversions in singleshot or scan modes. In scan mode, automatic conversion is performed on a selected group of analog inputs. Additional logic functions embedded in the ADC interface allow:

- Simultaneous sample and hold - Interleaved sample and hold - Single shunt The ADC can be served by the DMA controller.An analog watchdog feature allows very

precise monitoring of the converted voltage of one, some or all selected channels. An interrupt is generated when the converted voltage is outside the programmed thresholds. The events generated by the standard timers (TIMx) and the Advanced Control timer (TIM1) can be internally connected to the ADC start trigger, injection trigger, and DMA trigger respectively, to allow the application to synchronize A/D conversion and timers.

Lưu ý: Tham khảo thêm tính năng của chíp ở tài liệu datasheet và User Manual.

Page 12: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 12

Tạo dự án với Keil ARM

Giới thiệu cách tạo mới dự án cho vi xử lý ARM Cortex-M3 STM32F103RC bằng Keil ARM. Cùng với ñó là cách tích hợp bộ thư viện chuẩn CMSIS của ST dành cho dòng ARM này.

1. Bộ thư viện CMSIS ST cung cấp cho người dùng bộ thư viện chuẩn lập trình giao tiếp với thiết bị ngoại vi tương thích với chuẩn CMSIS. Thông qua bộ thư viện này, lập trình viên dễ dàng giao tiếp với các thiết bị phần cứng chuẩn của các dòng Cortex-M3 của ST.

Thư viện ñược chia làm 2 phần: + phần hỗ trợ nhân Cortex-M3: bao gồm mã giao tiếp với nhân CPU, và ñoạn mã start up code. + phần hỗ trợ các thiết bị ngoại vi: chứa toàn bộ các hàm thư viện ñiều khiển thiết bị ngoại vi của ST. Cấu trúc thư viện CMSIS như sau:

Library + CMSIS + CM3 + CoreSupport //thư mục chứa hàm hỗ trợ nhân Cortex-M3 + DeviceSupport + ST + STM32F10X //System startup code + startup //Start up code + Documentation //tài liệu hỗ trợ + STM32F10x_StdPeriph_Driver //thư mục chứa hàm hỗ trợ thiết bị ngoại vi + inc //thư mục chứa header file + src //thư mục chứa mã nguồn

* Lưu ý: Các hàm ñược viết và ñặt tên theo chuẩn CMSIS, lập trình viên cần tuân theo các quy tắc của CMSIS khi sử dụng hàm, tránh viết lại các hàm truy cập thẳng vào phần cứng khi không cần thiết.

2. Khởi tạo dự án mới + Mở Keil IDE, chọn menu “Project->New uVision Project” ñể tạo dự án mới. Giả dụ ñặt tên dự án mới này là 24h_Led. * Lưu ý: Thường khi tạo project mới hệ thống file quản lý dự án của Keil hay bố trí ở thư mục dự án, ñiều này dễ bị lẫn lộn với các file nguồn, ta nên tạo một thư mục con ñể quản lý các file dự án này. Chọn chip STM32F103RC cho board

Page 13: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 13

Hình 1: Khởi tạo dự án

+ Sau khi dự án mới ñược tạo, ta nên tổ chức lại hệ thống mã nguồn ñể dễ dàng theo dõi.

Hình 2: Tổ chức thư mục mã nguồn

Như hình 2 ở trên ta tạo 4 nhóm file, các nhóm “CMSIS”, “StdPeriph_Driver” và “Start up” sẽ là các files từ thư viện CMSIS của ST.

Page 14: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 14

* Lưu ý: Khi tạo mới dự án, Keil sẽ hỏi người dùng có sử dụng "start up code" sẵn có không. Chúng ta không sử dụng "start up code" này của Keil mà sẽ dùng của ST có trong bộ thư viện chuẩn. + Tích hợp thư viện CMSIS vào chương trình

Chúng ta sẽ lần lượt tích hợp các thư mục trong thư viện vào dự án như sau: + Nhóm “CMSIS”: thêm file core_cm3.c ở thư mục “\Libraries\CMSIS\CM3\CoreSupport” và system_stm32f10x.c ở thư mục “\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x” + Nhóm “StdPeriph_Driver”: thêm các file liên quan ñến ñiều khiển ngoạI vi, ở dự án này chúng ta cần ñiều khiển cổng GPIO, UART nên cần thêm các file: stm32f10x_gpio.c , stm32f10x_usart.c và stm32f10x_rcc.c ở thư mục “\Libraries\STM32F10x_StdPeriph_Driver\src”. + Nhóm “Start up”: thêm file startup_stm32f10x_hd.s ở thư mục “Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm”. + Nhóm “User”: chứa file của người dùng, giả sử thêm file main.c của ta vào ñây.

Page 15: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 15

* Lưu ý: Đối với nhóm StdPeriph_Driver, nên căn cứ vào nhu cầu ñiều khiển ngoại vi ñể thêm vào các file tương ứng, tránh thêm các file dư thừa vì làm tăng thời gian biên dịch và tốn tài nguyên hệ thống. + Khai báo thư mục thư viện cho dự án Sau khi thêm các file cần thiết cho dự án, chúng ta chưa thể biên dịch thành công ñược vì còn thiếu ñường dẫn tới các file khai báo thư viện CMSIS Mở khung ñiều khiển cấu hình dự án

Chọn tab “C/C++”

Thêm các ñường dẫn thư mục sau vào dự án: + \Libraries: thư mục chứa Libraries CMSIS + \Libraries\CMSIS\CM3\CoreSupport + \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x + \Libraries\STM32F10x_StdPeriph_Driver\inc * Lưu ý : Người dùng có thể thêm vào các ñường dẫn thư mục khác của dự án.

Page 16: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 16

3. Cấu hình project Sau khi ñã thêm các file cần thiết cho dự án, chúng ta phải thiết lập các thông số cơ bản ñể Keil có thể biên dịch ra file thực thi. + Để nạp chương trình xuống board , chúng ta cần cấu hình Keil biên dịch ra file hex(hoặc bin). Mở khung cấu hình dự án, chọn tab “Output”, check và ô “Create HEX File”

+ Để tiện sắp xếp tài nguyên của dự án, ta nên xếp các file tạm ñược sinh ra bởI Keil vào các thư mục riêng

Tương ứng với các file object(tab Output) và linker(tab Listing) ta lưu trong thư mục “Obj” và “Lst” cho tiện theo dõi sau này.

Page 17: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 17

+ Cần lưu ý là với bộ thư viện CMSIS, chúng ta sử dụng khá nhiều kỹ thuật “macro” trong lập trình. Có một số “macro” cần khai báo “define” sẵn trong dự án ñể có thể biên dịch thành công.

* Lưu ý: Nếu sử dụng bộ thư viện chuẩn cho thiết bị ngoại vi, nên khai báo macro: USE_STDPERIPH_DRIVER.

4. Trình di ễn + Nếu có sẵn board , chúng ta có thể nạp trực tiếp file .hex sau khi biên dịch xuống chíp thông qua Flash Downloader của ST bằng cổng COM. + Nếu không có board, chúng ta có thể xem bằng cách dùng Debug Simulator của Keil

Page 18: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 18

+ Chạy Debug chương trình, mở cửa sổ theo dõi các thiết bị ngoại vi ở menu “Peripherals” chọn ngoại vi tương ứng, giả sử ñó là Port C của GPIO.

Bấm F10(hoặc F11) ñể chạy debug từng dòng lệnh ñồng thời theo dõi giá trị của Port C thay ñổi.

Lưu ý: Có thể tham khảo nhiều các ví dụ mẫu ở ñây hoặc ở ñây.

Page 19: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 19

Các bước nạp chương trình qua FLASH LOADER DEMOSTRATOR

B1 : chuyển STM32 qua chế ñộ nạp bằng cổng USART1 nhờ vào DIP SW1 B2 : Chạy chương trình nạp FLASH LOADER DEMOSTRATOR và thiết lập thông số như trong hình

Bấm chọn Next NẾU HIỆN RA THÔNG BÁO NHƯ SAU

Chú ý làm các b ước như sau :

1. Rút nguồn cấp ra khỏi boad chờ sau 5s rùi cấp nguồn lại 2. Kiểm tra lại cáp COM 3. Kiếm tra lại DIP SW1 thiết lập STM32 ở bootloader ñã ñúng chưa ?

Nếu như bạn ñã làm như các bước trên mà vẫn hiện ra thông báo ñó thì có thể STM32 của bạn không vào ñược bootloarder hoặc chíp ARM của bạn ñã fuse “WRITE PROTECT : ENABLE”

Page 20: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 20

B2 : Nếu chương trình nhận ra bootloader từ ARM , lúc ñó chương hiện ra thông báo như sau :

Bạn bấm vào button “Next” Hoặc thông báo

Page 21: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 21

Khi ñó bạn bấm vào button “Remove protection” Chờ cho chương trình xóa xong bạn Nhấn “Close “ bạn chạy lại chương trình và làm lại như Bước 1 B3 : Khi b ạn gặp thông báo

Bạn bấm “Next” B4 : Bạn thi ết lập thông s ố như trong hình d ưới

Page 22: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 22

Bạn chọn file nạp bằng cách bấm vào nút “…”

Bạn ti ếp tục click ch ọn “File of type”

Chọn “Hex File (*.hex)” Khi ñó bạn trỏ tới file hex mà b ạn muốn nạp cho STM32. Xong b ạn bấm button “Open”

Page 23: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 23

Khi ñó chương trình sẽ ra trở lại màn hình như sau. Nếu bạn muốn chương trình kiểm tra lại nội dung file nạp có ñúng với nội dung của STM32 hay không bạn click chọn “Verify after download”

B4: Bạn tiếp tục bấm “Next” Và ñây là ch ương trình nh ư hình sau

Khi n ạp xong ch ương trình thông báo :

Page 24: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 24

Bạn chọn “Close” ñể ñóng chương trình B5: thiết lập lại DIP SW1 ñể chạy chương trình trong ARM.

Bạn muốn khóa ch ương trình thì sao ? Bạn thực hiện lại từ bước B1 tới B4 như lúc nạp chương trình : bạn thiết lập thông số như hình dưới

Và bấm chọn “Next”

Chọn “Yes”

Chương trình ñang th ực hi ện mode “READ PROTECTION”

Page 25: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 25

Khi th ực hi ện xong ch ương trình thông báo

Page 26: Huong Dan Su Dung Board OPENCMX-STM3210D

www.arm.vn OPENCMX-STM3210D

www.arm.vn V1.0 Trang 26

Bạn chọn “Close” ñể ñóng chương trình và thiết lập lại DIP SW1 ñể chạy chương trình trong ARM.

Lưu ý : Tuyệt ñối không chọn Mode “Enable : WRITE PROTECTION” khi chọn mode này ARM sẽ vĩnh vi ễn không n ạp ñược qua chương trình FLASH LOADER DEMOSTRATOR n ữa ( ch ỉ có th ể nạp lại chip và xóa mode WRITE PROTECTION bằng JTAG).