STM32F103C8T6 – Thiết kế phần cứng

Tài liệu tham khảo AN2586, đây là tài liệu do ST cung cấp:
https://www.st.com/content/ccc/resource/…164185.pdf
Nguồn:
VĐK yêu cầu nguồn đầu vào từ 2v đến 3v6 (VDD). Bên trong chip có mạch ổn áp để tạo ra điện áp 1v8. Khối thời gian thực và Backup Registers có thể được cấp nguồn từ chân VBAT khi mất nguồn VDD.

* Về cơ bản:
– Nếu sử dụng ADC thì VDD cần trong khoảng 2v4 đến 3v6
– Nếu không sử dụng ADC thì VDD trong khoảng 2v đến 3v6
– Các chân VDD phải được nối tụ decoupling, (mỗi chân VDD nối với 1 tụ 104 Ceramic) và trên mạch cần có thêm 1 tụ giá trị từ 4.7uF đến 10uF Tantalum hoặc Ceramic (không phải mỗi chân cần 1 tụ loại Tantalum hoặc Ceramic nhé).
– Chân VBAT có thể được nối với PIN bên ngoài (nguồn của pin, VBAT từ 1v8 đến 3v6). Nếu không sử dụng pin ngoài thì nên nối thêm 1 tụ decoupling loại Ceramic 104.
– Chân VDDA phải được kết nối với cặp tụ decoupling: 1 tụ Ceramic 104 và 1 tụ Tantalum hoặc Ceramic giá trị 1uF
– Chân VREF+ có thể kết nối với VDDA; nếu sử dụng nguồn tham chiếu khác thì cần 1 cặp tụ decoupling nối với chân này: 1 tụ Ceramic 104 và 1 tụ Ceramic giá trị 1uF. VREF cần trong khoảng từ 2v4 đến VDDA.
– Các biện pháp phòng ngừa bổ sung:
+ VDDA có thể nối với VDD qua ferrite bead.
+ VREF+ có thể nối với VDDA thông qua một điện trở 4K7

Mạch reset:
STM32 không cần thêm bất kỳ mạch reset bên ngoài nào.
Để có thể hoạt động tốt hơn thì có thể thêm tụ 104 như hình:

Thông thường trong thiết kế mình hay sử dụng cặp điện trở 10K và tụ C104:

Clock
Theo ST thì nên dùng mạch với thạch anh như hình:

– Thực tế mình dùng mạch này và vẫn thấy chạy tốt:

BOOT
STM32F103C8T6 có 3 chế độ BOOT:

– Chân BOOT0 = 0:
Boot từ Flash. Thực thi chương trình do người dùng viết code nạp vào.
– Chân BOOT0 = 1 và BOOT1 = 0:
Chạy chương trình từ bộ nhớ hệ thống: chương trình bootloader của hãng ST
– Chân BOOT0 = 1 và BOOT1 = 1:
Chạy chương trình từ RAM.
Với thiết kế thông thường thì có thể nối chân BOOT0 qua 1 điện trở 10K xuống GND để khi cấp nguồn chip sẽ chạy chương trình người dùng nạp vào luôn:

Nếu cần dùng đầy đủ các chế độ BOOT thì theo ST dùng mạch:

Hoặc cũng có thể nối thẳng chân BOOT0 với GND để khi cấp nguồn chip sẽ chạy chương trình chính luôn.
Mình hay dùng mạch số 1 nhất: Chân BOOT0 nối qua điện trở 10K xuống GND

Có thể tham khảo thêm về cách layout trong tài liệu của ST mình đã gửi ở phía trên
Đọc thì thấy có vẻ phức tạp nhưng mình thấy con này khá “dễ tính”, thiết kế đơn giản không cần cầu kỳ cũng vẫn chạy.
(Trước mình thử với cái mạch hạ áp từ 5V xuống 3V dùng đi ốt zener cũng vẫn chạy tốt không vấn đề gì cả).
Đây là 1 schematic khá đơn giản mà mình đang dùng

Link schematic PDF:
http://vidieukhien.org/stm32f103c8t6-schematic