BÀI 03 : CLOCK HỆ THỐNG TRONG STM8S.



  1. Lý thuyết về CLOCK hệ thống.
  2. Vi xử lí và vi điều khiển có đôi chút khác biệt, các bạn có thể tìm hiểu trên mạng để phân biệt sự khác nhau của 2 khái niệm trên. STM8S là một loại vi điều khiển(theo mình biết nó có kiến trúc Harvard – nên mình xin phép tạm gọi là vi điều khiển(VĐK)).

    Trước khi tìm hiểu về một loại vi điều khiển nào đó chúng ta cần tìm hiểu trước tiên về một số đặc điểm chung về cấu hình của nó, điều đó là khá quan trọng. VĐK đó bao nhiêu bit?? bộ nhớ ra sao?? Ngoại vi như thế nào?? Phần mềm lập trình cũng như mạch nạp có thông dụng, dễ sử dụng, giá cả ra sao…... Một phần quan trọng nữa đó clock của hệ thống, clock hệ thống quan trọng cũng như nguồn nuôi của mạch điện, không có clock hệ thống vi xử lí sẽ không hoạt động được. Clock hệ thống quyết định tốc độ xử lí của vi điều khiển. Vi điều khiển có clock hệ thống càng lớn(tính theo Hz) thì tốc độ xử càng nhanh. Ví dụ: Khi các bạn thay đổi clock thì tốc độ delay của hàm delay tương đối sẽ thay đổi theo. Clock tối đa của STM8S003 là 16Mhz.

    Như các bạn đã thấy trên hình có 3 nguồn clock chính(đầu vào) có thể cấp cho CPU và các ngoại vi hoạt động là HSE(high-speed external – nguồn clock tốc độ cao được cung cấp từ thạch anh ngoài tối đa 16Mhz), HSI RC(high-speed internal – nguồn clock tốc độ cao sử dụng mạch RC có sẵn bên trong chip tối đa 16Mhz), LSI RC(low-speed internal – nguồn clock tốc độ thấp sử dụng mạch RC tối đa 128khz ) và Prescaler opt bit là nguồn clock được lấy từ HSE để dùng cho chức năng đánh thức VĐK sau khi ngủ. Bên phải là clock cấp cho các ngoại vi và CPU. MCO là chân clock output dùng để xuất tín hiệu điều khiển hoặc là clock giao tiếp, đồng bộ với các thiết bị khác.

  3. Cấu hình sử dụng thư viện ST.
  4. Cấu hình trên vi điều khiển và lập trình - ở đây mình chỉ giới thiệu về tập lệnh của ST, không đi sâu vào thanh ghi. Các bạn muốn tìm hiểu về thanh ghi xem thêm manual của chip(Reference manual RM00016).

    Chế độ mặc định của STM8S là sử dụng HSI với clock/8 khi chưa cấu hình gì.

    • Cấu hình clock với mode HSI:
    • Cấu hình clock sử dụng thạch anh ngoài(HSE) mode automatic:
  5. Một số thanh ghi hay sử dụng.
    1. CLK_ICKR – internal clock register.
      • Bit 5 – REGAH : sử dụng cho mode Active-halt.
      • Bit 4 – LSIDRY : báo trạng thái LSI đã sẵn sẵn sàng hay chưa. LSIDRY =0 : chưa sẵn sàng, LSIDRY =1 : đã sẵn sàng.
      • LSIEN: cho phép(LSIEN=1) hoặc k cho phép(LSIEN=0) mode LSI hoạt động.
      • FHWU: cho phép thức từ mode Active-halt nhanh hay không.
      • HSIDRY : báo trạng thái LHI đã sẵn sẵn sang hay chưa. HSIDRY =0 : chưa sẵn sàng, HSIDRY =1 : đã sẵn sàng.
      • HSIEN: cho phép(HSIEN=1) hoặc k cho phép(HSIEN=0) mode HSI hoạt động.
    2. CLK_ECKR – External clock register
      • HSEDRY: thanh ghi thông báo HSE đã sẵn sàng(HSEDRY=1) hoặc chưa sẵn sang(HSEDRY = 0).
      • HSEEN: thanh ghi cho phép sử dụng HSE(HSEEN = 1) hoặc không cho phép(HSEEN = 0).
    3. CLK_CMSR : thanh ghi thông báo clock đang sử dụng của hệ thống.
      • CLK_CMSR = 0xE1 thông báo clock hệ thống đang sử dụng là HSI.
      • CLK_CMSR = 0xD2 thông báo clock hệ thống đang sử dụng là LSI.
      • CLK_CMSR = 0xB4 thông báo clock hệ thống đang sử dụng là HSE.
    4. CLK_SWR: thanh ghi chọn lựa hay chuyển đổi clock hệ thống.
      • CLK_CMSR = 0xE1 cài đặt hệ thống sử dụng là HSI.
      • CLK_CMSR = 0xD2 cài đặt hệ thống sử dụng là LSI.
      • CLK_CMSR = 0xB4 cài đặt hệ thống sử dụng là HSE.
    5. CLK_SWCR : thanh ghi điều khiển quá trình chuyển đổi clock.
      • SWIF : cờ thông báo ngắt khi chuyển mode sử dụng clock hệ thống.
      • SWIEN: bit cho phép ngắt khi chuyển đổi clock hệ thống.
      • SWEN: bit cho phép hoặc không cho phép thực thi việc chuyển đổi clok hệ thống.
      • SWBSY: bit thông báo là quá trình chuyển đổi clock hệ thống đã xong hay chưa.
    6. CLK_CKDIVR: thanh ghi chia lock hệ thống khi dùng HSI hoặc chia clock cho CPU khi dùng HSE.
      • HSIDV – bit 4,3 : 00,01,10,11 tương ứng với tỷ lệ chia 1/2/8/16.
      • CPUDIV – bit 2,1,0 : 000 -> 111 tương ứng với tỷ lệ chia clock CPU 1 -. 128(nhân theo hệ số nhị phân).
  6. Bài tập.
    1. BT1 : cấu hình cho chip sử dụng clock HSI với chế độ chia 8 tức là 2Mhz. Toggle LED dùng hàm delay tương đối để xem sự thay đổi.
    2. BT2 : cấu hình cho chip sử dụng HSE với clock của CPU chia 4 tức là Mhz. Toggle LED bằng hàm delay tương đối để xem sự thay đổi.


    DOWNLOAD CODE

Link tải sử dụng clock hệ thống nội(thạch anh bên trong chip): STVP Project IAR Project

Link tải sử dụng clock hệ thống ngoại(thạch anh ngoài): STVP Project IAR Project