You are on page 1of 5

Kết nối STM32 và OLED SSD1306

1. SSD 1306:

Thông số quan trọng:


- Điện áp hoạt động: 3-5VDC
- Phân giải: 128x64 pixel
- Chuẩn giao tiếp: Parallel, SPI, I2C (thường dùng I2C)

2. Giao tiếp I2C với SSD1306


1. D2 - SDA: Data signal - cần trở pull-up
2. D0 - SCL: Clock signal - cần trở pull-up
3.D/C - SA0: Slave address

Truyền địa chỉ giao tiếp I2C: 1 byte


0   1   1   1   1   0  (SA0) (R/W#)
- 6 bit đầu cố định
- Bit SA0 định địa chỉ của OLED => max 2 cái
- R/W: lệnh Read hoặc Write
Các bước giao tiếp:

1. Điều kiện bắt đầu được thiết lập bằng cách kéo SDA từ CAO đến THẤP trong
khi SCL vẫn CAO
2. Ngay sau đó Master sẽ gửi 8bit bao gồm 7 bit địa chỉ + 1 bit R/W để quy định
việc đọc hoặc ghi LCD. Chế độ ghi bit R/W = 0
3. Nếu SSD1306 nhận được đúng địa chỉ sẽ kéo SDA xuông 0 để trả lời. (bit
ACK)
4. Sau khi nhận ACK, master truyền 1 byte sau đó gồm bit C0 và D/C + 6 bit 0.
Trong đó:

- Nếu C0 = 0 thì các bit sau đó chỉ chưa dữ liệu.


- Nếu bit D/C = 0 truyền lệnh cho lcd.
- Nếu D/C = 1 truyền dữ liệu cho GDDRAM (hiển thị ra màn hình). Ô
nhớ của GDDRAM tự động tăng khi có dữ liệu.

5. Bit ACK sẽ được tạo ra mỗi khi truyền xong 1 byte dữ liệu
6. Cuối cùng điều kiện dừng được thiết lập bằng cách kéo “SDA in” từ THẤP đến
CAO trong khi “SCL” vẫn ở mức CAO

Write mode: bit R/W = 0


3. Display
Display:
1. 128x64 pixel
2. 8 Page: Page 0 - Page 7, từ trên xuống dưới
3. Mỗi page 128 Seg: Seg 0 - seg 127
4. Mặc định ban đầu SEG 0 - PAGE 0
- Khi ghi 1 byte -> +1 SEG
- Hết 128 SEG -> nhảy xuống PAGE dưới
4. Tập lệnh (đoạn này phức tạp vl, ngồi đọc thư viện nhma chưa hiểu lắm)
Khởi tạo theo flowchart

Tập lệnh: datasheet


5. Thêm thư viện vào project
 Tạo project bằng CubeIDE
 Tham khảo thư viện trên khuenguyencreator :font.c, font.h, ssd1306.c, ssd1306.h

File .c => folder Inc


File .h => folder Src

 Hiển thị văn bản: SSD1306_Puts() => UpdateScreen


 Hiển thị ảnh: SSD1306_Drawbitmap
Phải xuất ảnh ra file bitmap trước, độ phân giải chuyển về 128x64 (Dùng
GIMP hoặc có mấy trang convert ảnh sang bmp trên mạng)

Link tham khảo:


https://khuenguyencreator.com/lap-trinh-stm32-voi-oled-lcd-ssd1306/
https://controllerstech.com/oled-display-using-i2c-stm32/

Datasheet:
https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf

You might also like