Professional Documents
Culture Documents
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, …
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)
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.
+ 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
+ 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.
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.
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.
Xuống phía dưới trang, chổ STM8 32k. Nó sẽ ra 1 cái như vầy
Sau khi nhập thông tin đăng kí, ta sẽ download
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
Đâ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ự.
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ự.
Để 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
+ 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:
+ 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.
+ 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.
Phòng thí nghiệm thủy lực khí nén – xưởng cơ khí C1 – Đại học Bách Khoa TPHCM