DS1807 bao gồm hai chiết áp kỹ thuật số logarit (POTS) để điều chỉnh âm lượng âm thanh. Mỗi nồi có 64 mức âm lượng cộng với cài đặt tắt tiếng. Mức âm lượng của mỗi nồi được đặt trên giao diện nối tiếp I2C hai dây. Chúng tôi sẽ chỉ cho bạn cách kết nối và giao diện DS1807 dưới đây.
Chiết áp âm lượng âm thanh DS1807 I2C (Digikey # DS1807 + -nd, $ 3,04)
Kết nối
Bus Pirate.
DS1807 (PIN #)
Gnd.
GND (1)
Gnd.
A2 (2)
Gnd.
A1 (3)
Gnd.
A0 (4)
Gnd.
AGND (11)
SDA.
SDA (12)
Cái đồng hồ
SCL (13)
+ 5Volts.
VCC (14)
Chúng tôi đã kết nối DS1807 với công cụ giao diện nối tiếp của Pirate Universal Universal như trong bảng, các hiệu trưởng cơ bản tương tự áp dụng cho bất kỳ cấu hình tùy chỉnh nào. Chúng tôi đã sử dụng nguồn điện 5Volt của Pirate Bus, nhưng DS1807 cũng sẽ hoạt động ở 3,3Volts. I2C yêu cầu điện trở kéo lên trên mỗi đường tín hiệu, chúng tôi đã sử dụng điện trở trên tàu của Bus được kết nối với nguồn điện 5Volt trên bo mạch.
Kết nối DS1807 với nguồn âm thanh như được hiển thị trên trang 3 của biểu dữ liệu. Kết nối tín hiệu âm thanh thô với pin H và kết nối pin l với mặt đất, tín hiệu âm thanh suy giảm sẽ đến từ chân W.
Giao thoa
Đầu tiên, hãy thiết lập tên cướp biển cho chế độ I2C và kích hoạt nguồn điện 5Volt. Chúng tôi đã bao gồm thủ tục này trong bài đăng cuối cùng của chúng tôi.
I2C> v .
Với nguồn điện được cấu hình, hãy kiểm tra màn hình điện áp (V) để đảm bảo nguồn cung cấp 5Volt đang hoạt động và 5Volts có mặt tại các điện trở kéo lên.
I2C> (0) <- Liệt kê các macro có sẵn Menu Menu.Macro Tìm kiếm địa chỉ 1.7bit. I2C> (1) <- Chạy tìm kiếm địa chỉ XXX tìm kiếm không gian địa chỉ 7 bit I2C. Tìm thấy các thiết bị tại: 0x50 0x51 0x52 <Địa chỉ quan trọng I2C >.
Macro tìm kiếm địa chỉ của Bus Pirate là một cách nhanh chóng để xác định vị trí các thiết bị I2C mà không cần kiểm tra biểu dữ liệu. 0x50 là một địa chỉ ghi I2C vì bit cuối cùng là 0, 0x51 là địa chỉ đọc (Bit cuối cùng 1). 0x52 có lẽ là một địa chỉ ghi nhóm / toàn cầu vì nó không có địa chỉ đọc tương ứng.
Chúng tôi cũng có thể tìm ra địa chỉ từ bảng dữ liệu: Địa chỉ cơ sở là 0101 cộng với ba địa chỉ chọn bit (A0-2, tất cả đều có căn cứ, 000) và bit ghi hoặc đọc (0 hoặc 1) cho 0B01010000 (0x50).
I2C> [0x51 R R] <- Đọc các giá trị POT Điều kiện khởi động 210 I2C 220 I2C Viết: 0x51 GOT ACK: Có <-Device đọc địa chỉ 230 I2C Đọc: 0x3f <-pot0 230 I2C Đọc: 0x3f <-pot1 Điều kiện dừng 240 I2C I2C >.
Đầu tiên, chúng tôi đọc các giá trị chiết áp khi khởi động. [Vấn đề Điều kiện khởi động I2C, 0x51 là địa chỉ đọc thiết bị, “R R” đọc hai byte và] phát hành lệnh dừng I2C. Giá trị khởi động mặc định là 63 (0x3f), một vị trí ở trên Mute (Datasheet trang 2).
I2C> [0x50 0b10101001 0] <- Viết POT0 Điều kiện khởi động 210 I2C 220 I2C Viết: 0x50 GOT ACK: Có <-ds1807 Viết địa chỉ 220 I2C Viết: 0xA9 GOT ACK: Có <-Pot0 Write Command 220 I2C Viết: 0x00 GOT ACK: Có <-Volume để đặt Điều kiện dừng 240 I2C I2C> [0x50 0b10101010 64] <- Viết POT1 Điều kiện khởi động 210 I2C 220 I2C Viết: 0x50 GOT ACK: Có <-ds1807 Viết địa chỉ 220 I2C Viết: 0xAA GOT ACK: Có <-POT1 Ghi lệnh 220 I2C Viết: 0x40 GOT ACK: Có <-Volume để đặt Điều kiện dừng 240 I2C I2C> [0x51 r r] <- Đọc các giá trị Quay lại để xác minh Điều kiện khởi động 210 I2C 220 I2C Viết: 0x51 GOT ACK: Có <-DS1807 ĐỊA CHỈ ĐỌC 230 I2C Đọc: 0x00 <-Pot0 giá trị 230 I2C Đọc: 0x40 <-Pot1 giá trị Điều kiện dừng 240 I2C I2C >.
Tiếp theo, chúng tôi cập nhật từng nồi có một lệnh riêng. 0x50 là địa chỉ ghi DS1807, 0B10101001 (0xA9) là lệnh cập nhật POT0 và 0 đặt âm lượng thành đầy đủ. Trình tự tiếp theo sử dụng lệnh CẬP NHẬT POT1, 0B1010101010 (0xAA) và đặt âm lượng để tắt tiếng (64, 0x40). Cuối cùng, chúng tôi sử dụng quy trình đọc để xác minh rằng các giá trị là chính xác.
I2C> [0x50 0xA9 64 0] <- Viết cả hai giá trị POT Điều kiện khởi động 210 I2C 220 I2C Viết: 0x50 GOT ACK: Có 220 I2C VIẾT: 0xA9 GOT ACK: Có <-Update Pot0 Command 220 I2C Viết: 0x40 GOT ACK: Có <-Pot0 giá trị 220 I2C Viết: 0x00 GOT ACK: Có <-Pot1 giá trị Điều kiện dừng 240 I2C I2C> [0x51 r r] <- Đọc các giá trị Quay lại Điều kiện khởi động 210 I2C 220 I2C Viết: 0x51 GOT ACK: Có 230 I2C Đọc: 0x40 <-Pot0 giá trị 230 I2C Đọc: 0x00 <-pot1 Giá trị Điều kiện dừng 240 I2C I2C >.
Lệnh nồi 0 cũng có thể được sử dụng để đặt cả hai giá trị chiết áp với một lệnh. Sử dụng lệnh POT0 UPDATE (0B10101001, 0xA9) và gửi giá trị POT1 (0) theo giá trị POT0 (64).
I2C> [0x50 0b10101111 0x20] <- Cập nhật cả hai chậu có cùng giá trị Điều kiện khởi động 210 I2C 220 I2C Viết: 0x50 GOT ACK: Có 220 I2C Viết: 0xaf Got Ack: Có