Trong bài này, mình sẽ hướng dẫn các bạn thiết kế mạch nguyên lý với STM32, cách thiết kế sao cho STM32 hoạt động ổn định và ít lỗi sảy ra nhất có thể.
Bài này nằm trong Serie Học STM32 từ A tới Z
Thiết kế nguồn STM32
Cấu trúc nguồn cấp cho STM32
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 sẽ được cấp nguồn từ chân VBAT khi mất nguồn VDD.
Bộ điều chỉnh điện áp luôn được bật sau khi đặt lại. Nó hoạt động ở ba chế độ khác nhau tùy thuộc vào các chế độ ứng dụng.
● ở chế độ Run, bộ điều chỉnh cấp nguồn đầy đủ cho miền 1,8 V (lõi, bộ nhớ và thiết bị ngoại vi kỹ thuật số)
● ở chế độ Stop, bộ điều chỉnh cung cấp nguồn điện thấp cho miền 1,8 V, để bảo toàn nội dung của thanh ghi và SRAM
● ở chế độ Standby, bộ điều chỉnh bị tắt nguồn. Nội dung của thanh ghi và SRAM bị mất ngoại trừ những nội dung liên quan đến mạch Standby và các thanh ghi Backup.
Cấu trúc nguồn cấp cho STM32 bao gồm:
- VDD – VSS: Cung cấp nguồn cho miền 1.8V và các ngoại vi
- VDDA – VSSA – VREF: Cung cấp nguồn cho bộ chuyển đổi ADC,…
- VBAT: Cung cấp nguồn cho bộ RTC, thanh ghi backup…
Cách cấp nguồn cho STM32
- 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.
- 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, thường sử dụng là pin CMOS). 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.
- VDDA có thể nối với VDD.
- VREF+ có thể nối với VDDA thông qua một điện trở 4K7
Tụ Decoupling là gì?
Decoupling capacitor còn được gọi là tụ decoupling, hoạt động như một loại bình chứa năng lượng. Bạn sẽ thấy lọai tụ này thường được đặt càng gần mạch tích hợp IC trên layout PCB càng tốt. Sau khi được sạc đầy, công việc của nó chỉ đơn giản là chống lại bất kỳ sự thay đổi bất ngờ nào về điện áp đầu vào từ nguồn điện. Khi đặt một tụ decoupling, nó sẽ thực hiện một trong hai việc:
Nếu điện áp đầu vào giảm xuống, thì decoupling capacitor sẽ có thể cung cấp đủ năng lượng cho IC để giữ điện áp ổn định.
Nếu điện áp tăng lên, thì tụ decoupling sẽ có thể hấp thụ năng lượng dư thừa đang cố gắng truyền qua IC, điều này lại giữ cho điện áp ổn định.
Tất cả những điều này là cần thiết vì có rất nhiều nhiễu điện trên bo mạch và nguồn 5V ổn định mà chúng ta nghĩ đã chạy khắp nơi và nhảy lên nhảy xuống khi nó di chuyển từ linh kiện này sang linh kiện khác.
Một số linh kiện như mạch tích hợp IC dựa vào điện áp đầu vào càng ổn định càng tốt, vì vậy khi bạn đặt decoupling capacitor bên cạnh IC, bạn sẽ có thể bảo vệ các chip nhạy cảm đó bằng cách lọc bỏ bất kỳ nhiễu dư thừa nào và tạo ra nguồn năng lượng ổn định. Điều gì sẽ xảy ra nếu bạn không sử dụng tụ decoupling bên cạnh IC? Bạn có thể sẽ gặp rắc rối với một bộ xử lý bắt đầu bỏ qua các hướng dẫn và hoạt động bất thường.
Cách sử dụng tụ decoupling
Sơ đồ dưới đây là một ứng dụng điển hình về sử dụng tụ decoupling
Như bạn có thể thấy, có một tụ điện 10uF, giúp làm mềm mọi thay đổi tần số thấp trong điện áp đầu vào (Ổn định điện áp)
Và sau đó có một tụ điện 0,1uF giúp làm mịn bất kỳ nhiễu tần số cao nào trong mạch. Khi kết hợp hai tụ điện này với nhau sẽ cung cấp điện áp ổn định, không bị gián đoạn cho vi mạch để làm việc.
Khi thiết kế hãy đặt tụ decoupling gần IC nhất có thể, điều này làm giảm sự hao phí trên dây dẫn và giúp tụ có thể đáp ứng được tức thời.
Thiết kế mạch reset STM32
STM32 đã có trở treo cho chân RESET, nghĩa là các bạn không thiết kế mạch reset STM32 vẫn có thể hoạt động được.
Trong thực tế chúng ta sẽ thiết kế thêm nút nhấn và tụ để có thể reset bằng tay mà ko cần ngắt mạch điện.
Thiết kế mạch dao động thạch anh cho STM32
STM32 có thể sử dụng bộ dao động nội HSI bên trong nó, bạn có thể không cần thiết kế mạch dao động.
Để thêm mạch dao động bên ngoài cho STM32 chúng ta có 2 nguồn:
- Nguồn dao động bên ngoài External Clock
- Nguồn dao động thạch anh Crystal
Trong thực thế mình hay sử dụng mạch dao động gồm thạch anh và tụ như sau:
Thiết kế mạch BOOT
STM32 có 2 chân BOOT để chọn chế độ thực thi chương trình
- 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:
Thiết kế mạch nạp
STM32 hỗ trợ 2 chuẩn nạp là J TAG và SWD. Khi thiết kế mạch in cho STM32, chúng ta phải đưa ra các header để có thể nạp chip onboard.
Với mạch JTAG thiết kế như sau:
Với mạch SWD thiết kế như sau
Sơ đồ nguyên lý của mạch Bluepill
Link hướng dẫn của hãng: Hardware design STM32
Kết
Thiết kế mạch cho STM32 hoạt động cũng khá đơn giản, các bạn nhớ làm theo hướng dẫn của mình nhé. Và quan trọng nhất là nguồn cấp cho vi điều khiển cần ổn định và đủ điện áp.
Nếu thấy bài viết này hay, hãy chia sẻ tới những người bạn học hay đồng nghiệp của mình. Và nếu thắc mắc điều gì, hãy để lại bình luận nhé
Và cùng gia nhập những người nghiện lập trình tại đây nhé: Hội anh em nghiện lập trình
Sinh viên khai báo thêm 2 button sử dụng
ngắt ngoài. Button 1 khi bấm sẽ thực hiện ngắt và đếm lên, button 2 khi bấm sẽ thực hiện
đếm xuống. Giá trị hiển thị trên led từ 0-99.giúp em giải code bài này với ạ!!