BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6.


  1. Giới thiệu sơ lược
  2. STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng như F0,F1,F2,F3,F4….. Stm32f103 thuộc họ F1 với lõi là ARM COTEX M3. STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz. Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng.

    Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…

    Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR Embedded Workbench, Keil C… Ở đây mình sử dụng Keil C nên các bài viết sau mình chỉ đề cập đến Keil C.

    Thư viện lập trình: có nhiều loại thư viện lập trình cho STM32 như: STM32snippets, STM32Cube LL, STM32Cube HAL, Standard Peripheral Libraries, Mbed core. Mỗi thư viện đều có ưu và khuyết điểm riêng, ở đây mình xin phép sử dụng Standard Peripheral Libraries vì nó ra đời khá lâu và khá thông dụng, hỗ trợ nhiều ngoại vi và cũng dễ hiểu rõ bản chất của lập trình.

    Mạch nạp: có khá nhiều loại mạch nạp như : ULINK, J-LINK , CMSIS-DAP, STLINK… ở đây mình sử dụng Stlink vì giá thành khá rả và debug lỗi cũng tốt.

    Board để lập trình: các bạn có thể mua sẵn 1 số kit ra chân đã có sẵn trên thị trường hoặc thiết kế 1 cái board dành riêng cho bản thân mình. Ở đây mình đã thiết kế 1 board đã tích hợp sẵn mạch nạp, mình cũng đã test và chạy khá ổn, debug bằng Keil C khá giống với phiên bản STlink V2 trên thị trường. Nói chung là sử dụng đồ tự làm khá thú vị. Đây là board của mình:

    Sơ lược về Board trên:

    • 1 cổng Mini USB dùng để cấp nguồn, nạp cũng như debug.
    • 2 MCU bao gồm 1 MCU nạp và 1 MCU dùng để lập trình.
    • Có chân Output riêng cho các chân mạch nạp trên MCU1.
    • Có chân Output đầy đủ cho các chân MCU2.
    • Chân cấp nguồn ngoài riêng cho MCU2 nếu không sử dụng nguồn từ USB.
    • Thạch anh 32,768khz dùng cho RTC và Backup.
    • Chân nạp dùng cho chế độ nạp boot loader.
    • Nút Reset ngoài và 1 led hiển thị trên chân PB9, 1 led báo nguồn cho MCU2.

    Thành phẩm:

    Board có thể sử dụng một số loại MCU 48 pin của ST(vì sơ đồ chân cũng khá tương đồng giữa các dòng F0, F1, F2, F3, F4) như : STM32F100C8T6, STM32F103C8T6, STM32F303CCT6 ...

  3. Cấu hình chi tiết của STM32F103C8T6:
    • ARM 32-bit Cortex M3 với clock max là 72Mhz.
    • Bộ nhớ:
      • 64 kbytes bộ nhớ Flash(bộ nhớ lập trình).
      • 20kbytes SRAM.
    • Clock, reset và quản lý nguồn.
      • Điện áp hoạt động 2.0V -> 3.6V.
      • Power on reset(POR), Power down reset(PDR) và programmable voltage detector (PVD).
      • Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz.
      • Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz.
      • Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC.
    • Trong trường hợp điện áp thấp:
      • Có các mode :ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ.
      • Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính.
    • 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ.
      • Khoảng giá trị chuyển đổi từ 0 – 3.6V.
      • Lấy mẫu nhiều kênh hoặc 1 kênh.
      • Có cảm biến nhiệt độ nội.
    • DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâu của CPU.
      • 7 kênh DMA.
      • Hỗ trợ DMA cho ADC, I2C, SPI, UART.
    • 7 timer.
      • 3 timer 16 bit hỗ trợ các mode IC/OC/PWM.
      • 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time..
      • 2 watdog timer dùng để bảo vệ và kiểm tra lỗi.
      • 1 sysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay….
    • Hỗ trợ 9 kênh giao tiếp bao gồm:
      • 2 bộ I2C(SMBus/PMBus).
      • 3 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control).
      • 2 SPIs (18 Mbit/s).
      • 1 bộ CAN interface (2.0B Active)
      • USB 2.0 full-speed interface
    • Kiểm tra lỗi CRC và 96-bit ID.