You are on page 1of 10

Tổng quan về vi điều khiển STM32F103C8T

I. Giới thiệu tổng quan


1.Chip STM32F103C8T6
- STM32F103C8T6 là vi điều khiển 32bit, thuộc họ F1 của dòng chip STM32 hãng ST.
- Lõi ARM COTEX M3.
- Tốc độ tối đa 72Mhz.
- Bộ nhớ :
64 kbytes bộ nhớ Flash
20 kbytes SRAM     
- Clock, reset và quản lý nguồn
Điện áp hoạt động từ 2.0 → 3.6V.
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.  
- Chế độ đ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 ngoài để dùng bộ RTC và sử dụng dữ liệu được lưu trữ
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.6 V
      Có chế độ lấy mẫu 1 kênh hoặc nhiều kênh.    
- DMA:         
      7 kênh DMA
       Có hỗ trợ DMA cho ADC, UART, I2C, SPI.
- 7 bộ Timer:
  3 Timer 16 bit hỗ trợ các mode Input Capture/ Output Compare/ PWM.
1 Timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ ngắt Input, dead-time.
2 Watchdog Timer để bảo vệ và kiểm tra lỗi.
1 Systick Timer 24 bit đếm xuống cho hàm Delay,….
- Có hỗ trợ 9 kênh giao tiếp:
  2 bộ I2C.
   3 bộ USART
  2 SPI
  1 CAN
  USB 2.0 full-speed interface
2. Kit STM32F103C8T6 Blue pill
Các thông số kĩ thuật:

 Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua IC nguồn và
cấp cho Vi điều khiển chính.
 Tích hợp sẵn thạch anh 8Mhz.
 Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC.
 Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,...
 Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset.
 Kích thước: 53.34 x 15.24mm.

3. SPI trong STM32F103C8T6:


STM32f103C8T6 có 2 cổng giao tiếp SPI tốc độ tối đa lên đến 18Mbs/s với nhiều mode
cấu hình. Một số tính năng chính của giao tiếp SPI trên MCU này là:
 Truyền đồng bộ full –duplex trên 3 dây chính, half – duplex, chỉ truyền, chỉ nhận.
 Cấu hình bằng phần mềm là master hay Slave.
 Khung truyền cấu hình là 8 hay 16 bit.
 Cấu hình data truyền theo kiểu MSB hoặc LSB đi trước.
 Có các cờ báo lỗi, tính năng CRC, cờ ngắt.
 Có hỗ trợ DMA(bộ truyền tốc độ cao).
Các chân kết nối, khi sử dụng STM32F103 làm Master, sử dụng bộ SPI1:
Làm slave khi sử dụng bộ SPI 2:

II. Giao thức SPI


1.Giới thiệu về giao thức SPI
SPI là một kiểu truyền thông nối tiếp kiểu đồng bộ tức là nó sử dụng tín hiệu đồng hồ
chuyên dụng để đồng bộ hóa bộ phát và bộ thu hoặc Master và Slave. Bộ phát và bộ thu được kết
nối với dữ liệu riêng biệt và tín hiệu đồng hồ sẽ giúp bộ thu khi tìm kiếm dữ liệu trên bus.

Tín hiệu đồng hồ phải được cung cấp bởi Master tới Slave (hoặc tất cả các Slave trong
trường hợp thiết lập nhiều Slave). Có hai loại cơ chế kích hoạt trên tín hiệu đồng hồ được sử
dụng để báo cho bên nhận biết về dữ liệu: Kích hoạt cạnh và kích hoạt mức.
Kích hoạt thường được sử dụng nhất là kích hoạt cạnh và có hai loại: cạnh lên (chuyển
đổi từ thấp lên cao trên đồng hồ) và cạnh xuống (chuyển đổi từ cao xuống thấp). Tùy thuộc vào
cách bộ thu được cấu hình, lên trên phát hiện các cạnh, bộ thu sẽ tìm kiếm dữ liệu trên bus dữ
liệu từ bit tiếp theo.
Bởi vì cả tín hiệu đồng hồ và dữ liệu được gửi bởi Master (hoặc bộ phát), chúng ta không
cần phải lo lắng về tốc độ truyền dữ liệu.
Điều làm cho SPI trở nên phổ biến trong các giao thức truyền thông đồng bộ nối tiếp
khác (hoặc bất kỳ giao tiếp nối tiếp nào) là nó cung cấp tốc độ truyền dữ liệu bảo mật cao với
phần cứng khá đơn giản giống như thanh ghi dịch với chi phí tương đối thấp.
2. Cách thức hoạt động
Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ Master – Slave
trong một giao diện đa điểm. Trong loại giao diện này, một thiết bị được coi là Master của bus
(thường là một vi điều khiển) và tất cả các thiết bị khác (IC ngoại vi hoặc thậm chí các vi điều
khiển khác) đều được coi là Slave.
Trong giao thức SPI, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị Slave. Bus
SPI bao gồm 4 tín hiệu hoặc chân. Chúng là:
 Master – Out / Slave – In (MOSI hay SI): cổng ra của bên Master, cổng vào của bên
Slave, dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave .
 Master – In / Slave – Out (MISO hay SO): cổng vào của bên Master, cổng ra của bên
Slave, dành cho việc truyền dữ liệu từ thiết Slave đến thiết bị Master.
 Serial Clock (SCK hay SCLK): xung giữ nhịp cho giao tiếp SPI
 Chip Select (CS) hay Slave Select (SS): chọn chip

Master – Out / Slave – In hay MOSI, như tên cho thấy, là dữ liệu được tạo ra bởi
Master và nhận bởi Slave. Do đó, các chân MOSI trên cả Master và Slave được kết nối
với nhau.
Master – In / Slave – Out hay MISO là dữ liệu được tạo ra bởi Slave và phải được
truyền tới Master.Các chân MISO trên cả Master và Slave được kết nối với nhau. Mặc dù
tín hiệu trong MISO được tạo ra bởi Slave, đường tín hiệu này được điều khiển bởi
Master.

Master tạo tín hiệu đồng hồ SCLK và được cung cấp cho đầu vào đồng hồ của
Slave. Xung này có chức năng giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ
nên cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi. Sự tồn
tại của xung SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt
rất cao.
Chip Select (CS) hoặc Slave Select (SS) được sử dụng để chọn một Slave cụ thể
bởi Master. Nếu Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc
giao tiếp sẽ xảy ra giữa Master và Slave đó.
Vì đồng hồ được tạo ra bởi Master, luồng dữ liệu được điều khiển bởi Master. Với
mỗi chu kỳ đồng hồ, một bit dữ liệu được truyền từ Master đến Slave và một bit dữ liệu
được truyền từ Slave đến Master.
Quá trình này xảy ra đồng thời và sau 8 chu kỳ đồng hồ, một byte dữ liệu được
truyền theo cả hai hướng và do đó, SPI là một giao tiếp song công toàn phần (full –
duplex).
Nếu dữ liệu phải được truyền bởi chỉ một thiết bị, thì thiết bị kia phải gửi một cái
gì đó (dữ liệu giả) và nó phụ thuộc vào thiết bị cho dù dữ liệu được truyền là dữ liệu thực
tế hay không.
Điều này có nghĩa là đối với mỗi bit được truyền bởi một thiết bị, thiết bị kia phải
gửi dữ liệu một bit, tức là Master truyền dữ liệu đồng thời trên MOSI và nhận dữ liệu từ
Slave trên đường MISO.
Nếu Slave muốn truyền dữ liệu, Master phải tạo ra tín hiệu đồng hồ cho phù hợp
bằng cách biết khi nào Slave muốn gửi dữ liệu trước. Nếu một Master được kết nối với
nhiều Slave thì sơ đồ kết nối như hình ảnh sau đây:
Mặc dù nhiều Slave được kết nối với Master trong bus SPI, ở một thời điểm bất
kỳ thì chỉ có một Slave hoạt động. Để chọn Slave, Master sẽ kéo đường SS (Slave Select)
hoặc CS (Chip Select) của Slave tương ứng xuống mức thấp.
Do đó, phải có một chân CS riêng trên Master tương ứng với từng thiết bị Slave.
Chúng ta cần phải kéo xuống đường SS hoặc CS xuống thấp để chọn Slave bởi vì đường
này tích cực mức thấp.
3. Chế độ hoạt động
Master và Slave phải đồng ý về các giao thức đồng bộ hóa nhất định. Đối với điều này,
hai đặc điểm của xung đồng hồ là cực tính đồng hồ (Clock Polarity – CPOL hoặc CKP) và pha
đồng hồ (Clock Phase – CPHA) được đưa vào để xem xét.
Clock Polarity (CPOL hoặc CKP) xác định trạng thái của đồng hồ. Khi CPOL ở mức
thấp, xung đồng hồ được tạo bởi Master tức là SCK sẽ ở mức thấp khi nhàn rỗi (idle) và chuyển
sang mức cao trong trạng thái hoạt động (trong khi truyền dữ liệu). Tương tự, khi CPOL ở mức
cao, SCK ở mức cao khi nhàn rỗi và chuyển sang mức thấp trong trạng thái hoạt động.
Phase Clock (CPHA) xác định quá trình chuyển đổi trạng thái của xung đồng hồ tức là
lên (thấp lên cao) hoặc xuống (cao xuống thấp), tại đó dữ liệu được truyền đi. Khi CPHA bằng 0,
dữ liệu được truyền ở cạnh lên của xung đồng hồ. Dữ liệu được truyền ở cạnh xuống khi CPHA
là 1.
Tùy thuộc vào các giá trị của Clock Polarity (CPOL) và Clock Phase (CPHA), có 4 chế
độ hoạt động của SPI:
Mode 0 xảy ra khi Clock Polarity và Clock Phase là 0 (CPOL = 0 và CPHA = 0). Trong Mode 0,
truyền dữ liệu xảy ra trong khi cạnh lên của xung đồng hồ.
Mode 1 xảy ra khi Clock Polarity là 0 và Clock Phase là 1 (CPOL = 0 và CPHA = 1). Trong
mode 1, việc truyền dữ liệu xảy ra trong khi cạnh xuống của xung đồng hồ.
Mode 2 xảy ra khi Clock Polarity là 1 và Clock Phase là 0 (CPOL = 1 và CPHA = 0). Trong
mode 2, truyền dữ liệu xảy ra trong khi cạnh lên của xung đồng hồ.
Mode 3 xảy ra khi Clock Polarity là 1 và Clock Phase là 1 (CPOL = 1 và CPHA = 1). Trong
mode 3, truyền dữ liệu xảy ra trong khi cạnh lên của xung đồng hồ.

III. IC MAX7219
1.Giới thiệu
Dùng để điều khiển 8 ký tự của led 7 thanh, or điều khiển led matrix 8×8 ….
IC MAX7219 được hãng MAXIM thiết kế và sản xuất, thuận tiện sử dụng để điều khiển
LED ma trận và LED 7 thanh (1 chip có thể điều khiển LED ma trận 8×8 hoặc LED 7 thanh
8 chữ số) và chỉ cần 1 điện trở để hạn dòng cho tất cả các led (so với các IC khác hầu như
phải có 1 điện trở cho mỗi led). Trên mỗi chip đã được tích hợp bộ giải mã BCD, mạch quét
dồn kênh, thanh ghi dịch, …
Sử dụng MAX7219 hoạt động giống như một thanh ghi dịch khi bạn cần nhập dữ liệu
vào nối tiếp theo từng bit. Tổng cộng có 16 bit được nhập vào tại một thời điểm. MAX7219
chỉ cần 3 chân từ Vi điều khiển để kết nối với các chân DIN, LOAD và CLK của IC.
2. Các tính năng chính
 Tốc độ giao tiếp đạt tới 10MHz
 Điều khiển phân đoạn led;
 Có thể giải mã hoặc không giải mã ký tự được chọn;
 150uA Ở chế độ ngủ (Dữ liệu gửi lại);
 Có thể điều khiển độ sáng tự động hoặc thủ công;
 Điều khiển màn hình cathode chung;
3. Sơ đồ ghép nối với vi điều khiển:

Chân DIN – Sẽ được nối với chân MOSI


LOAD – Được nối với CS
CLK – Chân cấp clock từ Master
IV. Thiết kế khối xử lý và mô phỏng trên proteus
1.Các linh kiện sử dụng trong bài mô phỏng
 Vi xử lý: STM32F103C6 – thay cho STM32F103C8T6 ( do proteus không hỗ trợ )
 IC: MAX7219
 LED : 8 LED 7 đoạn
2.Sơ đồ
Sơ đồ nguyên lý như trong hình.
File hex sau khi được xuất ra từ Keil C, sẽ được nạp vào vi điều khiển, sử dụng tần số 72MHz
V. Thuật toán
Tại cùng một thời điểm. IC MAX7219 có thể nhận cùng lúc tối đa 16bit dữ liệu, nên ta sẽ
dùng giao thức SPI truyền cùng lúc 8bit địa chỉ của thanh ghi cần tác động, và giá trị muốn
truyền vào những thanh ghi đó
Các thanh ghi trong IC MAX7219 và địa chỉ của chúng:
Hàm truyền dữ liệu vào thanh ghi qua giao thức SPI

Lưu đồ thuật toán để hiện thị giá trị từ -999 đến 9999

You might also like