10
TÌM HIỂU VI ĐIỀU KHIỂN STM8 (STM8S003F3) VÀ CÁCH SỬ DỤNG STVD (ST VISUAL DEVELOP) 1. Tổng quan về STM8 Dòng STM8 có 3 loại chính: STM8S: Standard - loại thường dùng và phổ biến nhất. STM8L: Ultra Low Power – loại tiết kiệm năng lượng nhất. STM8Ax: Automotive – thường gặp trong các thiết bị giải trí, điều khiển của xe hơi, tàu thủy, máy bay, … Ở đây ta chỉ quan tâm đến dòng stm8s. Stm8s là dòng vi điều khiển 8 bits của hãng ST Microelectronic. Tương tự như các dòng vđk 8bit khác như AVR, PIC, 8051, … stm8s có các ngoại vi cơ bản như GPIO, ADC 10 bits, 3 bộ TIMER, UART, SPI, I2C, PWM … bên cạnh đó nó còn hỗ trợ các ngoại vi phức tạp như USB, CAN, IrDA, LIN. Bộ nhớ nội 128 bytes EEPROM 8Kbytes Flash. Rất dễ xây dựng và phát triển các ứng dụng nhỏ hay driver (ứng dụng chuyên biệt để thực hiện một chuyện gì đó như điều khiển động cơ, giao tiếp với LCD, …). Mức điện áp hoạt động cho cả 3v3 và 5v. Được hỗ trợ thư viện xây dựng sẵn của ST. Code trực quan, sinh động bằng ngôn ngữ C. Nạp chương trình vô cùng đơn giản bằng giao thức 1 dây (SWIM) cực nhanh. Và một điều cực kì đáng quan tâm là giá vô cùng rẻ (tầm 7.000 -> 20.000 1 chip). Trong loạt bài này tác giả sẽ hướng dẫn các bạn xây dựng ứng dụng trên chip stm8s003f3 có các thông số như sau: Speed 16MHz Connectivity I²C, IrDA, LIN, SPI, UART/USART Peripherals Brown-out Detect/Reset, POR, PWM, WDT Number of I /O 16 Program Memory Size 8KB (8K x 8) Program Memory Type FLASH EEPROM Size 128 x 8 RAM Size 1K x 8 Voltage - Supply (Vcc/Vdd) 2.95 V ~ 5.5 V Data Converters A/D 5x10b Oscillator Type Internal Operating Temperature -40°C ~ 85°C Package / Case 20-TSSOP (0.173", 4.40mm Width)

Gioi Thieu Stm8s

Embed Size (px)

Citation preview

Page 1: Gioi Thieu Stm8s

TÌM HIỂU VI ĐIỀU KHIỂN STM8 (STM8S003F3) VÀ CÁCH SỬ DỤNG

STVD (ST VISUAL DEVELOP)

1. Tổng quan về STM8

Dòng STM8 có 3 loại chính:

STM8S: Standard - loại thường dùng và phổ biến nhất.

STM8L: Ultra Low Power – loại tiết kiệm năng lượng nhất.

STM8Ax: Automotive – thường gặp trong các thiết bị giải trí, điều khiển của xe hơi, tàu thủy,

máy bay, …

Ở đây ta chỉ quan tâm đến dòng stm8s.

Stm8s là dòng vi điều khiển 8 bits của hãng ST Microelectronic. Tương tự như các dòng vđk 8bit

khác như AVR, PIC, 8051, … stm8s có các ngoại vi cơ bản như GPIO, ADC 10 bits, 3 bộ TIMER, UART, SPI,

I2C, PWM … bên cạnh đó nó còn hỗ trợ các ngoại vi phức tạp như USB, CAN, IrDA, LIN. Bộ nhớ nội 128

bytes EEPROM 8Kbytes Flash. Rất dễ xây dựng và phát triển các ứng dụng nhỏ hay driver (ứng dụng

chuyên biệt để thực hiện một chuyện gì đó như điều khiển động cơ, giao tiếp với LCD, …). Mức điện áp

hoạt động cho cả 3v3 và 5v. Được hỗ trợ thư viện xây dựng sẵn của ST. Code trực quan, sinh động bằng

ngôn ngữ C. Nạp chương trình vô cùng đơn giản bằng giao thức 1 dây (SWIM) cực nhanh. Và một điều

cực kì đáng quan tâm là giá vô cùng rẻ (tầm 7.000 -> 20.000 1 chip).

Trong loạt bài này tác giả sẽ hướng dẫn các bạn xây dựng ứng dụng trên chip stm8s003f3 có các

thông số như sau:

Speed 16MHz

Connectivity I²C, IrDA, LIN, SPI, UART/USART

Peripherals Brown-out Detect/Reset, POR, PWM, WDT

Number of I /O 16

Program Memory Size 8KB (8K x 8)

Program Memory Type FLASH

EEPROM Size 128 x 8

RAM Size 1K x 8

Voltage - Supply (Vcc/Vdd) 2.95 V ~ 5.5 V

Data Converters A/D 5x10b

Oscillator Type Internal

Operating Temperature -40°C ~ 85°C

Package / Case 20-TSSOP (0.173", 4.40mm Width)

Page 2: Gioi Thieu Stm8s

Hiện tại trên thị thường có bán các loại kit STM8 Discovery cho từng dòng riêng biệt của chip này.

STM8S Discovery (dùng con stm8s105 cũng tương tự stm8s003f3),

STM8A Discovery, STM8L Discovery. 3Kit này nhìn chung là như nhau, chỉ có

một vài điểm khác biệt nhỏ về phần thiết lập (config) các chân chức năng, các

ngoại vi. Cho nên nếu không có điều kiện thiết kế mạch để học, các bạn có

thể tìm mua các kit này để thực hành cho tiện. Một phần đáng quan tâm là

trên mỗi kit đều có một phần để nạp và debug. Đây thực chất là 1 mạch ST-

LINK có chức

năng nạp

bằng SWIM.

Nếu không có kit này, chúng ta có 2 sự lựa chọn, một là tự

thiết kế mạch ST-LINK (phần này sẽ được bàn bạc sau) hoặc

mua một mạch nạp ST-LINK có bán ngoài thị trường.

2. Thiết kế phần cứng cho STM8

Page 3: Gioi Thieu Stm8s

Trên đây là một mạch nguyên lí cơ bản cho dòng STM8. Hầu như con STM8 nào cũng chạy được

với sơ đồ nguyên lí tương tự. Mạch trên được thiết kế dưới dạng Adapter còn một mạch phát triển hoàn

chỉnh sẽ được cập nhật sau. Có một số điều cần lưu ý là:

+ Dòng STM8S003 có thể không cần thạch anh ngoài và được thiết lập bằng dao động nội. Nếu

dùng thạch anh ngoài thì cần nối tiếp chân OSCOUT với thạch anh 1 trở < 100ohm

+ Chân VCAP cần nối với tụ 1uf (nên dùng tụ taltan).

+ Có thể không cần trở kéo lên cho chân RESET vì nó đã có trở nội kéo lên trong chip rồi.

+ VCC có thể là 5v hay 3v3 do chip có thể hoạt động được ở 2 mức điện áp.

+ Khi cần nạp chương trình cho chip, ta quan tâm 4 dây là VDD, GND, SWIM và RESET.

3. Phần mềm cho STM8S

Có nhiều công cụng để lập trình cho STM8S (gọi là IDE) ta dùng STVD (ST Visual Develop) – IDE

được dùng để xây dựng cho tất cả các dòng vđk khiển của ST, thông qua trình biên dịch (compiler)

Cosmic C for STM8. Dùng STVP (ST Visual Programmer) để nạp hoặc thiết lập kiên kết (link) STVP vào

STVD để debug và nạp như bình thường.

+ Tải STVD http://www.st.com/web/catalog/tools/FM147/CL1794/SC1808/SS1767/PF210567

+ Tải STVP http://www.st.com/web/en/catalog/tools/PF210568

2 link trên, tải bằng cách nhân nút download phía dưới trang. Sau đó cài đặt 2 phần này như một phần

mềm bình thường.

+ Tải gói phát triển cho STM8S http://www.st.com/web/en/catalog/tools/PF257962

+ Tải Cosmic C http://www.cosmicsoftware.com/download.php

Xuống phía dưới trang, chổ STM8 32k. Nó sẽ ra 1 cái như vầy

Page 4: Gioi Thieu Stm8s

Sau khi nhập thông tin đăng kí, ta sẽ download

Page 5: Gioi Thieu Stm8s

Sau đó ta cài đặt như bình thường. Lúc cài đặt xong, có kêu đăng kí thì ta sẽ đăng kí với thông tin

ta điền vào ở bước trên. Cài xong, ta sẽ thấy trình dịch của mình nằm trong 1 chổ tương tự C:\Program

Files\COSMIC\CXSTM8_32K

4. Mô tả thư viện STM8S standard firmware library

Đây là thư viện ST viết sẳn để đơn giản hóa các bước thiết lập ngoại vi bằng cách sử dụng hàm.

Giả sử thay vì thiết lập thanh ghi GPIOA giá trị 0x01, ta chỉ cần gọi hàm GPIOW(GPIO,0x01). Việc này làm

đơn giản và tiết kiệm thời gian rất nhiều cho lập trình viên trong các chương trình lớn. Cần làm quen với

việc này thay vì thiết lập giá trị cho từng thanh ghi. Cũng cần phải nói thêm trong một số trường hợp

nhất định, việc gán giá trị cho thanh ghi có lợi hơn sử dụng hàm tương tự.

Cách tổ chức các file trong thư viện

Page 6: Gioi Thieu Stm8s

Lưu ý 2 file là stm8s.h: bỏ comment dòng nào để chọn chip tương ứng. stm8_conf.h có chứa các ngoại vi

mà mình sử dụng, khi thao tác với ngoại vi nào thì cần chọn ngoại vi đó.

5. Thiết lập cho STVP nhận chip stm8s003f

Menu Configure -> Configure ST Visual Programmer, chọn như hình:

Page 7: Gioi Thieu Stm8s

Nối dây SWIM, RESET, GND của mạch với mạch nạp (có thể nối VCC của nguồn với mạch nạp nếu

mạch chưa có nguồn riêng nhưng 2 mạch này phải chung GND). Nếu như thiết đặt đúng, khi ta chọn

Read -> Current tab, ta có thể đọc được nội dung của chip.

Trong trường hợp này, tác giả dùng mạch nạp có sẵn trên kit STM8S Discovery để nạp cho con

stm8s003f. Để làm được điều này, ta phải dùng mỏ hàn, gỡ 2 con trở 0hm SB1 và SB2 như hình rồi dùng

dây để nối tương ứng qua mạch cần nạp. Khi sử dụng mạch nạp ST-LINK thì cũng làm theo cách tương

tự.

Page 8: Gioi Thieu Stm8s

Để nạp 1 file xuống chip, ta chọn Open -> chọn file *s19 hay *sx hay *hex. Thường thì sau khi

biên dịch xong, file *s19 sẽ được tạo ra trong tên thư mục project -> STVD - > Cosmic -> debug.

Qua các bước trên, ta đã biết được cách để đọc nội dung của 1 chip và ghi dữ liệu xuống chip. Mọi dòng

vđk của ST cũng được thực hiện một cách tương tự với các chuẩn nạp tương ứng.

6. Tạo project với STVD và chương trình các chương trình mẫu.

Sau khi tải gói phát triển STM8S về và giải nén, ta sẽ thấy cấu trúc của nó tương tự như hình sau:

Thư mục Libraries chứa 2 thư viện, ta chỉ quan tâm đến thư viện STM8S_StdPeriph_Driver, thư mục

Projects chứa các project mẫu và cũng là project của mình tạo ra.

+ Copy thư mục Project_template và paste vào ngay tại đó, đổi tên nó thành thư mục, ví dụ là

My_own_project, tương tự như hình

Page 9: Gioi Thieu Stm8s

+ Mở STVD, chọn File -> Open Workspace, mở file \STM8SDISCOVERY_dev\Project\My_own_project\STVD\Cosmic\STVD_workspace.stw + Click phải vào Project -> settings, chọn trình dịch và chip như 2 hình sau:

Page 10: Gioi Thieu Stm8s

+ Click Debug instrument -> Target Settings, chọn Swim ST-Link + Click phải FWLib phía dưới stvd_project ở khung bên trái, chọn Add Files to Folder, tìm file sm8s.h trong STM8SDISCOVERY_dev\Libraries\ STM8S_StdPeriph_Driver\inc. + Thêm dòng #include <stm8s.h> trong main.c + Bỏ comment trong file stm8s.h như hình sau: của file stm8s.h

+ Click phải vào Include Files, chọn Add Files to Folder, chọn file stm8s_conf.h trong My_own_project\inc + Chép ngoại vi sử dụng vào thư mục tương ứng. Giả sử dùng GPIO, thì ta Add files stm8s_gpio.h và stm8s_gpio.c từ STM8SDISCOVERY_dev\Libraries\STM8S_StdPeriph_Driver\inc và STM8SDISCOVERY_dev\Libraries\STM8S_StdPeriph_Driver\src vào Include Files\FWLib và Source Files\FWLib + Sau đó, chọn Build -> Build all hoặc nhấn F7. Sau khi build xong, chọn Debug -> Start Debugging để debug chương trình. Sau bước build chương trình, 1 file *.s19 sẽ được tạo ra trong thư mục My_own_project\STVD\Cosmic\Debug, có thể dùng file này để nạp trực tiếp bằng STVP không qua debug.

Câu Lạc Bộ Robot – Đại học Bách Khoa TPHCM

Phòng thí nghiệm thủy lực khí nén – xưởng cơ khí C1 – Đại học Bách Khoa TPHCM