嵌入式
AD5270介绍
- AD5270_5271是一种单通道1%误差,且1024位的数字单通道数字可变电阻器。AD5270 / AD5271包含一个串行接口(SYNC,SCLK,DIN和SDO),它与SPI接口标准兼容,以及大多数DSP。 该器件允许通过串行接口将数据写入每个寄存器。
- 对于AD5270 / AD5271,移位寄存器的宽度为16位。该16位字有两个未使用的位,它们应该设置为零,然后是四个控制位,10个RDAC数据位(请注意,只适用于AD5271,RDAC寄存器数据位较低两个RDAC数据位不关心是否被读取从或写入)。 数据首先加载MSB(位15)。 四控制位决定了软件命令。
- 写序列开始于将SYNC线拉低。 SYNC引脚必须保持低电平,直到从DIN引脚加载完整的数据字为止。当SYNC为高电平时,AD5270 / AD5271不需要连续的SCLK。为了尽量减少数字输入缓冲器的功耗,请将所有串行接口引脚靠近VDD电源轨。
移位寄存器和时序图
时序图
控制码设置
RDAC寄存器直接控制数字变阻器擦拭器的位置。
AD5270 / AD5271包含一组50-TP可编程的存储器寄存器,这些寄存器可以使滑动器位置保持不变。
位名称 | 功能描述 |
---|---|
C0 | 50-TP程序启用,0 =禁止50-TP程序(默认),1 =使能50-TP程序的设备 |
C1 | RDAC寄存器写保护 0 =在50-TP存储器中默认冻结值的游标位置1,1 =允许通过数字接口更新刮水器位置 |
C2 | R性能使能,0 =启用RDAC电阻容差校准(默认),1 =禁用RDAC电阻容差校准 |
C3 | 50-TP存储器程序成功位,0 =熔丝程序命令不成功(默认),1 =熔丝程序命令成功 |
在写数据时主要设置的为控制码C0,故每次写数据都要将C0置一。
本次单片机使用的是stm32F103。
在使用stm32F103驱动AD5270时首先需要向AD5270寄存器写入0x1C03,目的是开启滑动器位置的数字接口使能,同时更新50-TP存储器内容。
代码
void AD5270_write(u16 data)
{
u8 i;
u16 buff;
AD5270_SCLK_H();
AD5270_SYNC_H();
Delay(10);
AD5270_SCLK_L();
Delay(10);
AD5270_SYNC_L();
Delay(10);
AD5270_SCLK_H();
for ( i=0 ; i<16; i++ )
{
AD5270_SCLK_H();
if( data & 0x8000 )
{
AD5270_DATA_H() ; //输入1
}
else
{
AD5270_DATA_L(); //输入0
}
data <<= 1;
Delay(10);
AD5270_SCLK_L();
Delay(10);
}
AD5270_SYNC_H();
Delay(10);
AD5270_SCLK_H();
}
void AD5270init(void)
{
u8 i;
AD5270_write(0x1C03); //写控制寄存器,表示下面操作为向5270写数据(范围0x0400-0x07FF)
Delay(10000); //初始化控制寄存器需要稳定,必须延迟较长时间(可根据实际情况改变时间长短)
AD5270_write(0x400);//表示等于输入0,AD5270的数据输入从0x400开始,因为每次都需要将控制吗C0置一,表示写数据。
}
输入数据0x500 代表将0x100写入RDAC寄存器; 滑动器移动到1/4满刻度位置。