|
100黑幣
問題描述:AD5174為10位的數字電位器 ,通過單片機IO模擬SPI通訊,數據寫不進AD5174。測量AW兩端的電阻值始終為中間值(5.5K左右),懷疑是SPI通訊問題(寫的數據或者命令不對)。如圖(3)命令4位,數據10位,總共是要發送14位還是16位呢?(我覺得是要發送16位)。命令和數據位是否需要分開發送?如圖(4)發送0x0500(二進制:0000 0101 0000 0000) 0000 01為寫數據命令,后面10位為數據位Data=256,剛好是滿量程1024的1/4,但是芯片的W端(雨刮器)位置沒有變化。
引腳圖:(圖1)
引腳圖.png (118.3 KB, 下載次數: 49)
下載附件
2024-1-17 15:46 上傳
時序圖:(圖2)
時序圖.jpg (92.93 KB, 下載次數: 51)
下載附件
2024-1-17 15:38 上傳
命令字:(圖3)
命令.png (115.7 KB, 下載次數: 56)
下載附件
2024-1-17 15:38 上傳
寫數據:(圖4)
寫數據.png (115.83 KB, 下載次數: 49)
下載附件
2024-1-17 15:38 上傳
程序(SPI通訊部分):
void AD5174_Init(void)
{
AD5174_SPI=1;
AD5174_CS=1;
AD5174_CLK=0;
//AD5174_DI=1;
}
void AD5174_Write(unsigned char temp)
{
unsigned char i;
for(i=0;i<8;i++)
{
if(temp&0x80)
{
AD5174_DI=1;
}
else
{
AD5174_DI=0;
}
delay1us();
AD5174_CLK = 1;
delay5us();
AD5174_CLK = 0;
delay1us();
temp<<= 1; //高位MSB在先
}
}
void main(void)
{
AD5174_Init();
AD5174_CLK = 0;
AD5174_CS = 0;
AD5174_Write(0x0500>>8);
AD5174_Write(0x0500);
AD5174_CS = 1;
AD5174_CLK = 0;
delay5us();
while(1)
{
;
}
}
|
|