单片机学习小组
直播中

张辉

7年用户 1319经验值
私信 关注

单片机与数字电阻芯片AD8402芯片之间如何通信?

单片机与数字电阻芯片AD8402芯片之间如何通信

回帖(1)

张茜

2022-2-17 09:51:19


查阅datasheet(文末有下载链接),发现芯片是SPI进行通信,AD8402有两个输出数字电阻的通道,所以我们我们首先要写入通道选择数据,再写入想要输出的电阻数据。
值得注意的是,当片选信号CS回到高电平时,串行输入寄存器中的数据才会基于地址位进行解码,并载入目标DAC寄存器,所以我们写入数据之后还需要将片选信号拉高。
本人调试过的代码如下,使用的是通过单片机的IO口模拟SPI接口时序,与AD8402通信。



void data_write(unsigned char channel,unsigned char data)
{
        unsigned char i=0;
        SCS=0;           
        for(i=0;i<2;i++)
        {
                 
        if((channel&0x02)==2)
            SDO=1;
        else
            SDO=0;
            
        SCK=1;
        channel<<= 1;
        GCC_DELAY(4);
        SCK=0;
        }
       
    for(i=0;i<8;i++)
         {
                
             
                if((data&0x80)==128)
                    SDO=1;
                else
                    SDO=0;
                   
                SCK=1;
                data<<= 1;
                GCC_DELAY(4);
                SCK=0;
                
         }       
        SCS=1;       
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分