STM32---AD5270

STM32---AD5270

嵌入式


  • 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电源轨。
  • 移位寄存器和时序图

    image_1cf4q0jnvteo1tht1oof1rhf1dom9.png-5.7kB

    • 图左边前两位为未使用为设置为零,之后C0-C1为控制码,最后十位D0-D1为数据位。

    STM32---AD5270_第1张图片

                                          时序图
    
  • 控制码设置

    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存储器内容。

代码

 
  
  1. void AD5270_write(u16 data)
  2. {
  3. u8 i;
  4. u16 buff;
  5. AD5270_SCLK_H();
  6. AD5270_SYNC_H();
  7. Delay(10);
  8. AD5270_SCLK_L();
  9. Delay(10);
  10. AD5270_SYNC_L();
  11. Delay(10);
  12. AD5270_SCLK_H();
  13. for ( i=0 ; i<16; i++ )
  14. {
  15. AD5270_SCLK_H();
  16. if( data & 0x8000 )
  17. {
  18. AD5270_DATA_H() ; //输入1
  19. }
  20. else
  21. {
  22. AD5270_DATA_L(); //输入0
  23. }
  24. data <<= 1;
  25. Delay(10);
  26. AD5270_SCLK_L();
  27. Delay(10);
  28. }
  29. AD5270_SYNC_H();
  30. Delay(10);
  31. AD5270_SCLK_H();
  32. }
  33. void AD5270init(void)
  34. {
  35. u8 i;
  36. AD5270_write(0x1C03); //写控制寄存器,表示下面操作为向5270写数据(范围0x0400-0x07FF)
  37. Delay(10000); //初始化控制寄存器需要稳定,必须延迟较长时间(可根据实际情况改变时间长短)
  38. AD5270_write(0x400);//表示等于输入0,AD5270的数据输入从0x400开始,因为每次都需要将控制吗C0置一,表示写数据。
  39. }

输入数据0x500 代表将0x100写入RDAC寄存器; 滑动器移动到1/4满刻度位置。

你可能感兴趣的:(STM32---AD5270)