Âm thanh & Loa DIY

PCM5102A với Raspberry Pi qua I2S: cấu hình dtoverlay, kiểm tra bằng aplay

Cimo 9 phút đọc

Nối module PCM5102A với Raspberry Pi qua I2S với Pi làm master cấp BCK/LRCK, DAC chạy PLL từ BCK nên không cần MCLK; cấu hình dtoverlay=hifiberry-dac trong config.txt và kiểm tra bằng aplay -l, aplay -L.

PCM5102A với Raspberry Pi qua I2S: cấu hình dtoverlay, kiểm tra bằng aplay
Mục lục
  1. Nguyên lý clock: vì sao không cần MCLK?
  2. Ví dụ: tính tần số BCK cho nhạc 48 kHz
  3. Đấu nối phần cứng
  4. Cấu hình dtoverlay trong config.txt
  5. Kiểm tra bằng aplay và phát file test
  6. Ví dụ: kịch bản kiểm tra khi aplay không thấy card
  7. Lỗi thường gặp và cách khoanh vùng
  8. Câu hỏi thường gặp
  9. Tôi có cần nối thêm dây MCLK từ Pi không?
  10. dtoverlay=hifiberry-dac có phải do TI cung cấp không?
  11. Tôi đang dùng bản OS cũ thì sửa config.txt ở đâu?
  12. aplay thấy card nhưng ứng dụng phát nhạc vẫn xuất ra HDMI thì sao?

Bạn hoàn toàn có thể nối module PCM5102A với Raspberry Pi qua I2S chỉ bằng ba đường tín hiệu BCK, LRCK và DATA, cộng thêm mass chung và nguồn cho module — không cần đường MCLK (master clock, xung nhịp hệ thống riêng). Lý do nằm ở chính con chip: theo Texas Instruments, PCM5102A có PLL (vòng khóa pha) nội dùng BCK làm tham chiếu để tự sinh xung hệ thống bên trong, và trong cấu hình này Raspberry Pi đóng vai trò I2S master, tức bên cấp BCK và LRCK cho DAC. Bài này hướng dẫn cấu hình dtoverlay trên Raspberry Pi OS, cách kiểm tra bằng aplay -l và aplay -L, và quy trình xử lý khi không thấy card âm thanh. Nếu chưa rõ thông số gốc của chip, hãy đọc trước bài PCM5102A là gì? Thông số, nguyên lý và ứng dụng.

Ảnh minh họa AI: dây nối giữa header GPIO của máy tính nhúng đơn board và module DAC I2S trên bàn làm việc

Nguyên lý clock: vì sao không cần MCLK?

I2S (Inter-IC Sound) là giao tiếp âm thanh số đồng bộ gồm BCK (xung theo từng bit dữ liệu), LRCK (xung theo từng khung mẫu, phân biệt kênh trái/phải, còn gọi là WS) và DATA (dữ liệu nối tiếp). Trong một liên kết I2S luôn phải có một bên master tạo ra BCK và LRCK; bên còn lại là slave, nhận clock và khóa theo đó. Nếu cả hai bên cùng làm master hoặc không bên nào cấp clock, kết quả là im lặng hoặc tiếng méo hoàn toàn.

Với Raspberry Pi và PCM5102A, cấu hình thông dụng là Pi làm master: ngoại vi I2S của Pi phát BCK và LRCK, dữ liệu chảy từ Pi sang chân DIN của DAC. PCM5102A khi đó không cần MCLK vì PLL nội của nó khóa theo BCK để sinh xung hệ thống cho bộ chuyển đổi — cơ chế được giải thích kỹ trong bài Chế độ PLL của PCM5102A: khi nào không cần MCLK. Chip hỗ trợ tần số lấy mẫu 8–384 kHz, mức ngõ ra 2,1 Vrms ground-centered (trung tâm ở mass, không cần tụ chặn DC ở ngõ ra chip) và SNR điển hình 112 dB theo datasheet TI.

Ví dụ: tính tần số BCK cho nhạc 48 kHz

Ví dụ: với file nhạc có tần số lấy mẫu fs = 48 kHz, phát stereo (2 kênh) và mỗi slot dữ liệu rộng 32 bit, BCK cần là 48.000 × 2 × 32 = 3.072.000 Hz, tức 3,072 MHz. Công thức tổng quát là BCK = fs × số kênh × độ rộng slot. Con số này giúp bạn kiểm tra nhanh bằng máy hiện sóng hoặc logic analyzer (thiết bị ghi lại tín hiệu số theo thời gian) nếu có: thấy BCK xấp xỉ 3,072 MHz và LRCK đúng 48 kHz khi phát file 48 kHz nghĩa là Pi đang cấp clock đúng vai master; không thấy xung nào thì lỗi nằm ở cấu hình hoặc dây nối trước khi nghi ngờ DAC.

Đấu nối phần cứng

Trên header 40 chân của các đời Pi phổ biến, các chân I2S thường dùng là: BCK ở GPIO 18 (chân vật lý 12), LRCK ở GPIO 19 (chân vật lý 35) và DATA ra ở GPIO 21 (chân vật lý 40) nối vào chân DIN của module DAC. Nối thêm mass của Pi với mass của module, và cấp nguồn cho module theo đúng tài liệu của module đó (điện áp và chân cấp ghi trên board; không suy đoán từ board khác). Giữ dây I2S ngắn, tránh chạy song song dài với dây nguồn xung.

Hai điểm phải đối chiếu trên module cụ thể của bạn: nhãn chân trên lụa in (silkscreen) của module — một số module ghi BCK/LRCK/DIN, số khác ghi SCK/WS/DATA với ý nghĩa tương đương nhưng thứ tự chân khác nhau — và trạng thái các chân cấu hình cứng của PCM5102A như định dạng dữ liệu và chế độ PLL, vốn do nhà sản xuất module đặt sẵn bằng điện trở kéo lên/xuống. Bài này không giả định một sơ đồ chân module cụ thể vì các bản module trên thị trường không đồng nhất.

Cấu hình dtoverlay trong config.txt

Môi trường áp dụng: Raspberry Pi OS. Đường dẫn file cấu hình khởi động khác nhau theo phiên bản hệ điều hành: trên Raspberry Pi OS Bookworm (bản hiện hành gần đây), file nằm ở /boot/firmware/config.txt; trên các bản cũ hơn, file nằm ở /boot/config.txt. Sửa nhầm file ở đường dẫn cũ trên hệ Bookworm là lỗi rất thường gặp vì file đó không còn được đọc lúc khởi động. Cấu hình dưới đây là mẫu tham khảo, cần đối chiếu với bản OS và file overlays/README thực tế trên máy của bạn trước khi áp dụng.

Overlay dùng cho cấu hình này là dtoverlay=hifiberry-dac. Cần nói rõ: đây là overlay có sẵn trong firmware Raspberry Pi (tài liệu overlays/README của Raspberry Pi ghi "Name: hifiberry-dac — Configures the HifiBerry DAC audio cards", lệnh nạp dtoverlay=hifiberry-dac), không phải overlay do TI phát hành. Nó được cộng đồng dùng lại cho nhiều module DAC I2S đơn giản dùng PCM5102A vì card HiFiBerry DAC gốc cũng xây trên họ chip này và cùng mô hình Pi làm master, DAC không cần cấu hình qua I2C. Đừng nhầm với hifiberry-dacplus, vốn dành cho dòng DAC+ dùng chip khác và có điều khiển riêng.

# Mo file dung voi ban OS cua ban:
# Bookworm:  sudo nano /boot/firmware/config.txt
# Ban cu:    sudo nano /boot/config.txt

# Them vao cuoi file:
dtoverlay=hifiberry-dac

# Neu muon tat am thanh onboard de DAC thanh card mac dinh,
# co the binh luan dong sau (them dau # o dau dong):
# dtparam=audio=on

Sau khi lưu file, khởi động lại Pi bằng sudo reboot. Overlay sẽ yêu cầu kernel nạp driver âm thanh tương ứng và đăng ký một card ALSA (Advanced Linux Sound Architecture — lớp âm thanh của Linux) cho DAC. Việc tắt âm thanh onboard là tùy chọn: giữ lại thì DAC thường xuất hiện ở chỉ số card cao hơn, tắt đi thì DAC dễ trở thành thiết bị mặc định; chọn theo cách bạn quản lý thiết bị phát của mình, không phải điều kiện bắt buộc để DAC hoạt động.

Kiểm tra bằng aplay và phát file test

Sau khi Pi khởi động lại, kiểm tra theo thứ tự sau trong terminal:

aplay -l
aplay -L
speaker-test -c 2 -t wav
aplay /duong/dan/file-test.wav

aplay -l liệt kê các card phát phần cứng mà ALSA nhận được; kết quả đạt yêu cầu là thấy một card có tên liên quan tới HiFiBerry DAC / pcm5102a (tên và chỉ số card hiển thị có thể khác nhau theo phiên bản OS và việc bạn có tắt âm thanh onboard hay không). aplay -L liệt kê các thiết bị phát logic, gồm cả thiết bị default — dùng nó để biết nên trỏ ứng dụng phát nhạc vào đâu. Lệnh speaker-test -c 2 -t wav phát giọng đọc luân phiên kênh trái/phải, giúp xác nhận luôn cả việc có bị đảo kênh do đấu nhầm LRCK/DATA hay không. Cuối cùng, phát một file WAV test có tần số lấy mẫu phổ biến như 44,1 kHz hoặc 48 kHz bằng aplay để nghe trọn vẹn qua ngõ ra analog của module vào ampli hoặc tai nghe qua ampli phù hợp.

Ví dụ: kịch bản kiểm tra khi aplay không thấy card

Ví dụ: bạn khởi động lại, chạy aplay -l và chỉ thấy card âm thanh onboard, không thấy DAC. Đừng tháo dây ngay; hãy đi từng bước: (1) Kiểm tra bạn đã sửa đúng file config.txt của bản OS đang chạy — mở lại file theo đúng đường dẫn Bookworm hoặc bản cũ và xác nhận dòng dtoverlay=hifiberry-dac còn đó, không bị gõ thừa khoảng trắng quanh dấu bằng. (2) Kiểm tra overlay có tồn tại trên hệ bằng cách xem file README trong thư mục overlays cạnh config.txt, tìm mục hifiberry-dac. (3) Khởi động lại lần nữa sau khi chắc chắn đã lưu file, vì overlay chỉ nạp lúc boot. (4) Nếu vẫn không thấy card, kiểm tra dây BCK/LRCK/DATA và nguồn module: driver có thể đăng ký card nhưng phát sẽ im lặng nếu thiếu clock hoặc module không có nguồn — hai lỗi này khác nhau, và aplay -l chỉ trả lời được lỗi thứ nhất. (5) Cuối cùng mới thử thay dây và kiểm tra module trên một nguồn I2S khác đã biết tốt, ví dụ theo hướng dẫn ở bài PCM5102A với ESP32-S3 qua I2S.

Lỗi thường gặp và cách khoanh vùng

Triệu chứngNguyên nhân có thểCách kiểm tra
aplay -l không có DACSai đường dẫn config.txt, gõ sai tên overlay, chưa rebootMở lại đúng file, đối chiếu overlays/README, reboot
Có card nhưng không có tiếngSai chân DATA/LRCK, module thiếu nguồn, ampli chưa chọn đúng ngõ vàoĐo nguồn module, soát lại nhãn chân, thử speaker-test
Tiếng bị đảo kênh trái/phảiĐấu nhầm hoặc cấu hình kênh trong phần mềm phátspeaker-test -c 2 -t wav để nghe thông báo kênh
Có tiếng xì khi không phát nhạcNhiễu nguồn hoặc vòng mass giữa Pi, DAC và ampliCấp nguồn sạch hơn cho module, kiểm tra dây mass và dây tín hiệu

Một lưu ý về mức tín hiệu: ngõ ra 2,1 Vrms của PCM5102A là mức line-level đầy đủ, tương đương ngõ ra của đầu CD. Nối thẳng vào ngõ vào line của ampli là đúng; đừng nối trực tiếp vào tai nghe trở kháng thấp hay loa không qua ampli, và giảm âm lượng ở lần phát thử đầu tiên để tránh bất ngờ.

Câu hỏi thường gặp

Tôi có cần nối thêm dây MCLK từ Pi không?

Không, trong cấu hình này thì không. Pi cấp BCK và LRCK, còn PCM5102A dùng PLL nội khóa theo BCK để tự sinh xung hệ thống. Đường MCLK chỉ cần trong các thiết kế dùng nguồn clock ngoài riêng, nằm ngoài phạm vi cấu hình cơ bản này.

dtoverlay=hifiberry-dac có phải do TI cung cấp không?

Không. Đây là overlay trong firmware của Raspberry Pi cho dòng card HiFiBerry DAC, được dùng lại cho module PCM5102A vì cùng mô hình hoạt động. Tên overlay và cách nạp được ghi trong tài liệu overlays/README đi kèm firmware Raspberry Pi.

Tôi đang dùng bản OS cũ thì sửa config.txt ở đâu?

Trên các bản trước Bookworm, file nằm ở /boot/config.txt; trên Bookworm, file chuyển sang /boot/firmware/config.txt. Hãy kiểm tra cả hai đường dẫn trên máy của bạn và sửa file mà hệ đang thực sự dùng, đồng thời đối chiếu lại sau mỗi lần nâng cấp OS lớn.

aplay thấy card nhưng ứng dụng phát nhạc vẫn xuất ra HDMI thì sao?

Đó là vấn đề chọn thiết bị mặc định, không phải lỗi phần cứng. Dùng aplay -L để xem danh sách thiết bị logic, rồi chọn DAC làm mặc định trong cấu hình ALSA hoặc trong phần cài đặt của ứng dụng phát, theo tài liệu của đúng bản OS bạn đang dùng.

Tóm lại, mô hình Pi làm master, DAC chạy PLL từ BCK giúp việc ghép PCM5102A vào Raspberry Pi gọn còn ba dây tín hiệu; phần dễ sai nhất không nằm ở phần cứng mà ở đúng file config.txt và đúng tên overlay. Cần thêm module DAC hoặc linh kiện cho hệ thống nghe nhạc DIY của mình, bạn có thể tham khảo tại Cimo.vn.

#pcm5102a raspberry pi i2s
Chia sẻ bài viết
Facebook
Cimo
Cimo
Cimo - Mọi thứ bạn cần với mức giá tốt nhất

Bài viết liên quan

Tất cả danh mục
Flash Sale
Ưu đãi hôm nay
Đấu giá