|
-
-
- #include "control_wm8731.h"
- #include "Wire.h"
-
- #define WM8731_I2C_ADDR 0x1A
-
-
- #define WM8731_REG_LLINEIN 0
- #define WM8731_REG_RLINEIN 1
- #define WM8731_REG_LHEADOUT 2
- #define WM8731_REG_RHEADOUT 3
- #define WM8731_REG_ANALOG 4
- #define WM8731_REG_DIGITAL 5
- #define WM8731_REG_POWERDOWN 6
- #define WM8731_REG_INTERFACE 7
- #define WM8731_REG_SAMPLING 8
- #define WM8731_REG_ACTIVE 9
- #define WM8731_REG_RESET 15
-
- bool AudioControlWM8731::enable(void)
- {
- Wire.begin();
- delay(5);
-
-
- write(WM8731_REG_INTERFACE, 0x02);
- write(WM8731_REG_SAMPLING, 0x20);
-
-
-
-
-
- write(WM8731_REG_DIGITAL, 0x08);
- write(WM8731_REG_ANALOG, 0x00);
-
- write(WM8731_REG_POWERDOWN, 0x00);
-
- write(WM8731_REG_LHEADOUT, 0x80);
- write(WM8731_REG_RHEADOUT, 0x80);
-
- delay(100);
-
- write(WM8731_REG_ACTIVE, 1);
- delay(5);
- write(WM8731_REG_DIGITAL, 0x00);
- write(WM8731_REG_ANALOG, 0x10);
-
- return true;
- }
-
-
- bool AudioControlWM8731::write(unsigned int reg, unsigned int val)
- {
- Wire.beginTransmission(WM8731_I2C_ADDR);
- Wire.write((reg << 1) | ((val >> 8) & 1));
- Wire.write(val & 0xFF);
- Wire.endTransmission();
- return true;
- }
-
- bool AudioControlWM8731::volumeInteger(unsigned int n)
- {
-
-
-
- if (n > 127) n = 127;
-
-
- write(WM8731_REG_LHEADOUT, n | 0x180);
- write(WM8731_REG_RHEADOUT, n | 0x80);
- return true;
- }
-
-
-
-
-
-
- bool AudioControlWM8731master::enable(void)
- {
- Wire.begin();
- delay(5);
-
-
- write(WM8731_REG_INTERFACE, 0x42);
- write(WM8731_REG_SAMPLING, 0x20);
-
-
-
-
-
- write(WM8731_REG_DIGITAL, 0x08);
- write(WM8731_REG_ANALOG, 0x00);
-
- write(WM8731_REG_POWERDOWN, 0x00);
-
- write(WM8731_REG_LHEADOUT, 0x80);
- write(WM8731_REG_RHEADOUT, 0x80);
-
- delay(100);
-
- write(WM8731_REG_ACTIVE, 1);
- delay(5);
- write(WM8731_REG_DIGITAL, 0x00);
- write(WM8731_REG_ANALOG, 0x10);
-
- return true;
- }
-
-
|