背景
在放大电路中,我们需要增益可调,因此引入可变电阻。这里以MAX5401为例,介绍可变电阻驱动。
电路图
如上电路图所示,通过更改R1阻值,则可以更改电路放大倍数。
芯片驱动
MAX5401共有8个引脚,其中DIN和SCLK是控制引脚,其控制时序图如下:
其中控制的阻值变化是W到L的阻值,而W到H的阻值是100K减去控制的阻值。
驱动代码
void MyMAX5401::SendData(uint8_t Data)
{
digitalWrite(pin_SCLK,0);
digitalWrite(pin_CS,1);
delayMicroseconds(1);
digitalWrite(pin_CS,0);
delayMicroseconds(1);
//完成了片选
uint8_t DataCopy = Data;
for(uint8_t i = 0; i < 8; ++ i)
{
if((DataCopy & 0X80) != 0)
{
digitalWrite(pin_DIN,1);
digitalWrite(pin_SCLK,0);
delayMicroseconds(1);
digitalWrite(pin_SCLK,1);
delayMicroseconds(1);
}
else
{
digitalWrite(pin_DIN,0);
digitalWrite(pin_SCLK,0);
delayMicroseconds(1);
digitalWrite(pin_SCLK,1);
delayMicroseconds(1);
}
DataCopy <<= 1;
}
digitalWrite(pin_CS,1);
digitalWrite(pin_SCLK,0);
delayMicroseconds(1);
//取消片选
}