Stm8 là gì

Lời tựa

Ở bài viết trước, mình đã có dịp trình bày với các bạn lý do vì sao bản thân tới với STM8 cũng như lý do loạt bài viết này xuất hiện. Ngoài ra, các công cụ làm việc cả cứng lẫn mềm cũng đã được nhắc tới. Như đã nói, trong bài viết này, chúng ta cùng dạo qua một chút về nhân vật chính – STM8S105K4, cách cài đặt và sử dụng các công cụ hỗ trợ lập trình kèm theo.

Để phần trình bày không quá dài, mình xin được chia bài viết thành 2 phần. Phần thứ nhất này sẽ nói về STM8S105K4 và cách cài đặt công cụ. Phần thứ hai xin hẹn các bạn ở bài sau, sẽ nói về cách thiết lập thư viện STM8 Standart Peripheral.

Sau đây là nội dung sẽ được trình bày:
1. STM8S105K4T6
2. Các công cụ
2.1. Eclipse
2.2. Small Device C Compiler [SDCC]
2.3. Make
2.4. Git
2.5. Stm8flash
3. Tóm lược

Và bây giờ ta sẽ đi tới chi tiết phần thứ nhất.

1. STM8S105K4T6

Dạo quanh phố phường, dạo qua thị trường một vòng, thấy cũng khá là ưng em nó. STM8SK4T6 là vi điều khiển 8 bit thuộc dòng Medium-density, nghĩa là có dung lượng bộ nhớ lập trình được ở mức trung bình. Cụ thể một số thông số như sau:

  • Tốc độ đồng hồ: tối đa 16MHz
  • Bộ nhớ:
    • 16 KByte bộ nhớ Flash lập trình được
    • 1 KByte bộ nhớ EEPROM cho dữ liệu
    • 2KByte RAM
  • Clock và quản lý năng lượng:
    • Điện áp làm việc: từ 2.95V đến 5.5V
    • Điều khiển xung đồng hồ linh hoạt với 4 nguồn dao động
      • Nguồn tinh thể thạch anh
      • Bộ tạo dao động ngoại
      • Bộ tạo dao động nội RC điều khiển được, tối đa 16 MHz
      • Bộ dao động nội RC tiết kiệm năng lượng, 128kHz
    • Một số cao cấp tính năng khác, xin không trình bày ở đây
  • Quản lý ngắt:
    • Bộ điều khiển ngắt lồng nhau tối đa 32 nguồn ngắt
    • 23 ngắt ngoài trên 6 vector
  • Timer:
    • Timer 1: 16 bit, 2 chế độ đếm lên/xuống, 4 kênh CAPCOM và có ngắt ngoài
    • Timer 3: 16 bit chỉ đếm lên, 2 kênh CAPCOM
    • Chó canh nhà [Watch Dog – gấu không có nhưng chó luôn có 1 con]
  • Giao diện truyền thông:
    • UART2
    • SPI
    • I2C
  • I/O: 25 chân GPIO. Chi tiết chức năng các chân trên VĐK, mời các bạn tham khảo thêm trong bảng 5, trang 26 datasheet của nhà sản xuất [tài liệu số 1 ở cuối bài]
Danh sách các I/O của STM8S105K4

Sơ sơ có thể thấy STM8S105K4 là sự lựa chọn khá tốt, với đầy đủ các ngoại vi cơ bản, đủ nếu không muốn nói là có chỗ hơi dư thừa đối với những người mới làm quen. Khá ngon so với mấy em 8 bit cùng mức xèng.

Các khối chức năng bên trong STM8S105K4

Về tài liệu, nếu các bạn đã từng một lần sử dụng ARM [của bất kỳ hãng nào], chắc cũng đều biết datasheet sẽ không bao gồm tài liệu sử dụng. STM8 không phải là ARM, nhưng tổ chức tài liệu cũng giống như vậy. Đối với những bạn chuyển qua từ AVR hay PIC, đây là điều có thể gây đôi chút lạ lẫm. Nhìn chung thì với STM8, tài liệu cơ bản cần có gồm 3 loại. Thứ nhất là datasheet – khái quát sơ lược về các đặc điểm của dòng vi điều khiển mà bạn sử dụng. Lưu ý là dòng vi điều khiển, không phải là một em cụ thể nào đó. Ví dụ, STM8S105K4T6 sẻ thuộc dòng STM8S105x4. Tương tự là tài liệu thứ 2, hướng dẫn sử dụng tham chiếu [Reference Manual] – đây là tài liệu mô tả chi tiết về một họ các VĐK, gồm các khối chức năng, ngoại vi, định nghĩa thanh ghi, v.v… Văn bản này khá dài và vì là 1 họ các VĐK, bạn sẽ phải tự chắt lọc thông tin về các khối chức năng mà mình đang có. Vậy nên hãy đọc kỹ datasheet trước khi chuyển qua tài liệu thứ 2. Nếu chưa có Datasheet và Reference Manual các bạn vui lòng tìm đến mục tài liệu tham khảo ở cuối bài. Tài liệu thứ 3 với những bạn lập trình trực tiếp trên thanh ghi thì không quá cần thiết. Đó là thư viện ngoại vi tiêu chuẩn [Standard Peripheral Library – viết tắt là SPL]. Kể cả khi không sử dụng tới, tài liệu sử dụng đi kèm và mã nguồn mẫu trong bộ thư viện cũng có tính tham khảo cao. Về bộ thư viện và một số điều chỉnh, như đã viết ở lời tựa, mình xin phép trình bày ở bài viết sau. Dĩ nhiên trong phạm vi các ứng dụng ở loạt bài này, mình sẽ lựa chọn sử dụng thư viện, công cụ tốt tội gì không dùng. Tuy nhiên, mình cũng sẽ cố gắng sử dụng thanh ghi nhiều nhất có thể.

Nó đến vi điều khiển giới thiệu thế là dài rồi. STM8S105K4 sẽ còn gặp lại ở những bài viết sau và sau nữa. Có lẽ ta nên tới với các công cụ phần mềm thôi.

Như đã trình bày ở bài viết trước, mình lựa chọn Ubuntu Linux làm môi trường làm việc trong loạt bài viết này. Cụ thể, phiên bản mình sử dụng ở đây là Ubuntu 16.04 LTS 64 bit. Các bạn dùng các distro Linux khác có thể tham khảo và sử dụng các lệnh cài đặt sao cho phù hợp với điều kiện của bản thân.

Một điều cần lưu ý là khi có khá nhiều gói phần mềm yêu cầu bạn phải có thư viện 32 bit. Nếu các bạn cũng sử dụng Ubuntu, hãy kiểm tra phiên bản của mình đang sử dụng trong Terminal bằng cách

uname -i

Nếu kết quả bạn nhận được là x86_64, bạn đang sử dụng một phiên bản HĐH 64 bit. Để cài đặt các gói thư viện 32 bit, bạn làm như sau:

sudo dpkg --add-architecture i386 sudo apt update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

Ví dụ ở trên mô tả cách cài đặt các gói thư viện libc6, libncurses5 và libstdc++6 32 bit. Sau này nếu muốn cài đặt bất cứ gói thư viện 32 bit nào khác, sau này bạn chỉ cần thực thi như sau.

sudo apt-get install :i386

Lưu ý, lệnh sử dụng quyền của super user đòi hỏi phải có tài khoản thuộc group sudo. Lệnh yêu cầu mật khẩu, các bạn gõ mật khẩu bình thường, chúng sẽ không hiện lên và cũng không có dấu ‘*’ nào xuất hiện cả.
Nhân tiện nếu chưa biết Terminal là cái gì, bạn hãy liên tưởng nó với màn hình cmd trên Windows. Để truy cập nhanh Terminal trên Ubuntu, sử dụng tổ hợp: Ctrl + Alt + T.

2.1. Eclipse

Cái này quá quen thuộc rồi, các bạn chỉ cần lên website chính thức của Eclipse và download một phiên bản mà bạn muốn. Bản thân mình đang sử dụng Eclipse MARS.2, có vẻ hơi cũ, nhưng cũng không sao, vẫn dùng tốt. Điều đáng quan tâm ở phần này không phải là cách cài đặt Eclipse, đơn giản bạn chỉ cần mở tệp tải về và chạy trình thuật sĩ y hệt trên Windows. Các cấu hình cũng không có gì đặc biệt nếu bạn đã từng sử dụng trước đó. Quan trọng ở đây, bạn phải cài JAVA trên máy của mình. Có thể bạn sẽ phải download JDK từ trang chủ Oracle về và làm theo một loạt các hướng dẫn khá rắc rối. Để đơn giản cho các bạn mới làm quen, mình sẽ hướng dẫn cách cài đặt thông qua repository

sudo add-apt-repository ppa:webupd8team/java sudo apt update

Tới đây bạn có thể lựa chọn cài đặt cho mình bản JDK 7, 8, hoặc 9. Ở đây mình chọn JDK 7

sudo apt-get install oracle-java7-installer

Kiểm tra cài đặt bằng cách gõ

java -version

Nếu kết quả trả về là

java version "1.7.0_80" Java[TM] SE Runtime Environment [build 1.7.0_80-b15] Java HotSpot[TM] 64-Bit Server VM [build 24.80-b11, mixed mode]

thì OK, bạn đã cài đặt java thành công. Việc cuối cùng là thêm đường dẫn JAVA vào biến môi trường.

sudo nano /etc/environment

và thêm một dòng có nội dung như sau:

JAVA_HOME="/usr/lib/jvm/java-7-oracle"

Bạn hãy thay thế chuỗi “/usr/lib/jvm/java-7-oracle” bằng đường dẫn đến thư mục cài đặt JAVA trên máy của bạn.
Như vậy là công việc đã hoàn tất. Trình soạn thảo đã sẵn sàng, hãy tới với trình biên dịch.

2.2. Small Device C Compiler [SDCC]

Small Device C Compiler [hay viết tắt là SDCC], đã được nhắc tới ở bài trước, là một trình dịch ngôn ngữ C cho rất nhiều họ VĐK tới từ nhiều nhà sản xuất khác nhau, trong đó cũng có STM8. Để tải về SDCC, hãy truy cập đến trang đại diện của SDCC tại địa chỉ //sourceforge.net/projects/sdcc/, download và làm theo hướng dẫn cài đặt trong tệp tin INSTALL.txt. Một cách khác đơn giản hơn, chúng ta lại sử dụng repository

sudo apt update sudo apt install -f sdcc*

SDCC cũng có kèm một tài liệu hướng dẫn người dùng, bạn có thể tham khảo ở liên kết này. Một số nội dung trong tài liệu này có liên quan tới công cụ mà chúng ta sẽ đề cập đến sau đây. Hãy chuyển qua Make nào.

2.3. Make

Make là công cụ build tự động được sử dụng phổ biến trong phát triển ứng dụng nguồn mở. Ưu điểm của việc sử dụng Make là tính linh hoạt trong triển khai. Với Make, bạn có thể biên dịch các chương trình hoàn toàn tự động mà không cần đến sự hỗ trợ của các IDE. Có thể nhiều người cho rằng điều này không thiết thực lắm vì các công cụ hiện nay đã có thừa các chức năng tương tự. Tuy nhiên, nếu để ý, bạn sẽ thấy rất nhiều IDE được xây dựng lên bằng cách tích hợp các trình dịch xung quanh Make. Ví dụ tiêu biểu có thể kể đến Eclipse ở trên, hay một IDE khá quen thuộc với các bạn sử dụng sản phẩm của Microchip – MPLAB X IDE.

Đương nhiên, các công cụ như Eclipse hay MPLAB X đều có khả năng tự sinh makefile một cách tự động. Còn trong trường hợp này, bạn sẽ phải tự viết makefile cho mình [hình như bài viết trước cũng đã nói đến việc tự viết makefile rồi thì phải?]. Nhưng không sao, việc này sẽ giúp những bạn chưa có kinh nghiệm gì về biên dịch chương trình được trải nghiệm cảm giác lập trình ở những năm 70 của thế kỷ trước. Đừng nghĩ là đùa, nếu chưa bao giờ thử, đây sẽ là cơ hội để bạn hiểu hơn quá trình biên dịch mã nguồn chương trình máy tính.

Thường thì Make đã được đi kèm trong các distro Linux. Để kiểm tra việc đã cài đặt Make hay chưa, đơn giản chỉ cần gọi

$ make -v GNU Make 4.1 Built for x86_64-pc-linux-gnu Copyright [C] 1988-2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <//gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Như ở đây, mình đang sử dụng GNU Make version 4.1.
Câu chuyện về Make xin được tạm dừng. Chúng ta sẽ gặp lại Make ở một ngày gần đây, trong ứng dụng mở đầu về GPIO. Còn bây giờ, hãy dành thời gian cho Git.

2.4. Git

Hôm trước, trong phần liệt kê công cụ, git là ứng dụng được xướng tên sau cùng. Hôm nay, cậu ấy thoát khỏi cảnh đội sổ đơn giản vì sẽ cậu ấy hữu ích trong phần kế tiếp. Git được định nghĩa là một công cụ quản lý phiên bản phân tán. Có thể ở đâu đó bạn đã nghe thấy Subversion [SVN]. Vâng, đây là công cụ quản lý phiên bản phổ biến nhất. Tuy nhiên, nó chỉ thích hợp với các doanh nghiệp có hạ tầng hoặc bạn là nhà giàu, có server riêng và kết nối 24/24. Khác với SVN, Git ra đời là một công cụ phân tán. Trong khi SVN yêu cầu bạn phải kết nối để làm việc, Git cho phép bạn làm việc ngoại tuyến và publish bất cứ khi nào bạn muốn, linh hoạt hơn, làm việc mọi lúc mọi nơi.

Để cài đặt Git, chỉ đơn giản là

sudo apt install git git-gui gitk

Để kiểm tra máy tính đã được cài đặt Git hay chưa

git --version

nếu kết quả trả về có dạng

git version 2.7.4

thì bạn có thể chuyển đến phần sau được rồi. Hướng dẫn nhanh về Git, tham khảo ở đây và đây.

2.5. Stm8flash

Lý do kiến em nó hôm nay phải đội sổ cũng vì em nó phụ thuộc quá nhiều. Để có thể cài đặt Stm8flash, bạn chắc chắn sẽ cần tới Make và cũng có thể là cả Git. Câu chuyện tiếp diễn như sau:

cd ~/ git clone :vdudouyt/stm8flash.git cd ~/stm8flash make sudo make install

3. Tóm lược

Tới đây, có thể coi là các bạn đã có tạm đủ các công cụ phát triển. Việc tiếp theo chính là dành thời gian một chút để làm quen với chúng. Có thể nó rất khác với những gì bạn thường làm: click chuột, click chuột và click chuột. Nhưng gạt đi những khó khăn ban đầu, thay vì click chuột một cách nhàm chán, rất có thể bạn sau này bạn sẽ thích cách làm này.

Cũng như đã đề cập từ đầu, phần thứ nhất tới đây xin được tạm dừng. Bộ drama hai tập xin phép gặp lại vào một ngày [không] xa. Phần hai sẽ nói riêng về SPL và các sửa đổi để SDCC có thể lảm việc tốt với bộ thư viện này.

Còn bây giờ, chào thân ái !

Danh mục tham khảo:

[1] STM8S105K4 Datasheet, ST Microelectronics,
//www.st.com/resource/en/datasheet/stm8s105k6.pdf

[2] STM8S series and STM8AF series 8-bit microcontrollers Reference Manual,
ST Microelectronics,
//www.st.com/resource/en/reference_manual/CD00190271.pdf

[3] STM8S/A Standard peripheral library, ST Microelectronics,
//www.st.com/en/embedded-software/stsw-stm8069.html

[4] Download Eclipse, The Eclipse Foundation,
//www.eclipse.org/downloads/?

[5] Small Device C Compiler,
//sdcc.sourceforge.net/index.php

[6] Small Device C Compiler suite download,
//sourceforge.net/projects/sdcc/

[7] SDCC manual, SDCC,
//sdcc.sourceforge.net/doc/sdccman.pdf

[8] Git-SCM, Linus Torvalds,
//git-scm.com/

[9] Try git,
//try.github.io/

[10] Git cheet sheet, Github,
//education.github.com/git-cheat-sheet-education.pdf

[11] Stm8flash, Valentin Dudouyt,
//github.com/vdudouyt/stm8flash

Chủ Đề