Site icon TAPIT

Mở rộng bộ nhớ STM32 với QSPI Flash MT25QL128: Ghép nối phần cứng, cấu hình ngoại vi

Nằm trong chuỗi bài viết hướng dẫn mở rộng bộ nhớ vi điều khiển STM32. Bài viết này sẽ cung cấp các thông tin tổng quan về giao tiếp QSPI, các thông số của QSPI Flash MT25QL128 cũng như hướng dẫn cấu hình ngoại vi QSPI của vi điều khiển STM32 trên giao diện CubeMX.

Các bài viết liên quan nên đọc trước:
IC nhớ FLASH,SDRAM và mô hình bộ nhớ của vi điều khiển khi sử dụng bộ nhớ ngoài
Sử dụng Linker Script trong khai báo, cấu hình sử dụng bộ nhớ ngoài -VĐK STM32 

Tổng quan về giao tiếp QSPI


Hình 1: Chân điều khiển, chân lệnh và data của QSPI Flash


Hình 2: Các chân và chức năng của từng chân trên QSPI Flash


Hình 3: Quá trình đọc dữ liệu QSPI Flash

Các thông số của QSPI Flash

– Trong giao tiếp QSPI, ta cần phải chú ý đến 1 số tham số trong Datasheet để có thể cấu hình chính xác trong STM32CubeMX như Clock, không gian nhớ, Dummy cycles.
– Trong bài hướng dẫn này, tác giả sử dụng board STM32F746-DISCO với bộ nhớ QSPI Flash MT25QL128ABA và để sử dụng ta phải tham khảo datasheet cho chip Flash này [1]. IC nhớ này có các tham số sau:

Hình 4: Tần số hoạt động của chip QSPI Flash MT25QL128

Hình 5: Dung lượng nhớ của chip MT25QL128

Hình 6: Chip select high time của chip QSPI Flash MT25QL128

Hình 7: Bảng Dummy Cycle cho chế độ STR

– Ở trong project này, QSPI Flash chạy ở tần số 100MHz (gần 133MHz), chế độ “QUAD OUTPUT FAST READ”. Để đảm bảo dữ liệu ổn định nhất, tác giả sử dụng thông số là 10 dummy clock cycles.
– Qua phần này, ta đã nắm được 1 số thông số của 1 bộ nhớ QSPI và cách đọc chúng trong Datasheet.

Cấu hình ngoại vi cho QSPI Flash
– Ở phần này, ta sẽ đi cụ thể từng tham số và cách cấu hình trong giao diện CubeMX để STM32 giao tiếp được với QSPI Flash.
– Đầu tiên, ta kích hoạt ngoại vi QSPI với chế độ “Bank1 with Quad SPI Lines” như hình 8 dưới:

Hình 8: Kích hoạt ngoại vi QSPI

– Cấu hình các tham số ở tab “Parameter Settings”:

Hình 9: Cấu hình tab “Parameter Settings”

Hình 10: Clock Mode “High”

Hình 11: Cấu hình chân QSPI Flash cho STM32F746NGH6U DISCO

Hình 12: Sơ đồ nguyên lý nối chân tại bộ nhớ QSPI Flash

Hình 13: Sơ đồ nguyên lý nối chân tại vi điều khiển

Ngoài ra, ta nên tách các hàm khởi động thành các cặp file “.c/.h” bằng cách chọn option như ở hình 14:

Hình 14: Tách thư viện cấu hình cho ngoại vi thành cặp file “.c/.h”

Để hiểu rõ thêm về phần cấu hình ngoại vi, các bạn tham khảo thêm bài hướng dẫn của ST [2] và bài hướng dẫn cấu hình trực tiếp thanh ghi cho ngoại vi QSPI [3]

 

Các nội dung liên quan đến chế độ hoạt động của QSPI Flash, các hàm hỗ trợ của thư viện STM32 HAL sẽ được trình bày tại phần tiếp theo.

Tài liệu tham khảo:
[1]  https://datasheetspdf.com/pdf-file/1225530/Micron/MT25QL128ABA/1
[2] https://www.st.com/resource/en/application_note/an4760-quadspi-interface-on-stm32-microcontrollers-and-microprocessors–stmicroelectronics.pdf
[3] https://vivonomicon.com/2020/08/08/bare-metal-stm32-programming-part-12-using-quad-spi-flash-memory/

 

Tìm hiểu thêm:
Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32
Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32
[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]
Fanpage Cộng đồng Kỹ thuật TAPIT: TAPIT – Learning, Research and Sharing Community

 

Nhóm tác giả
Ng.Q.Phương
Ng.H.N.Thương
Ng.H.Phúc