AD轉換 XPT2046
阿新 • • 發佈:2019-02-17
應用電路
引腳功能描述
控制位命令
控制位元組各位描述
單端模式輸入配置
差分模式輸入配置
掉電和內部參考電壓選擇
應用電路
AIN0:檢測轉換電位器模擬訊號,控制字命令暫存器值為0x94或者0xB4
AIN1:檢測轉換熱敏電阻模擬訊號,控制字命令暫存器值為0xD4
AIN2:要檢測轉換光敏電阻模擬訊號,控制字命令暫存器值為0xA4
AIN3:要檢測轉換AIN3通道上模擬訊號,控制字命令暫存器值為0xE4
數字介面
前 8 個時鐘用來通過DIN引腳輸入控制位元組,接著的 12 個時鐘週期將完成真正的模數轉換,剩下的 3 個多時鐘週期將用來完成被轉換器忽略的最後位元組(DOUT置低)
舉例
sbit DOUT = P3 ^ 7; //輸出
sbit CLK = P3 ^ 6; //時鐘
sbit DIN = P3 ^ 4; //輸入
sbit CS = P3 ^ 5; //片選
void SPI_Write(uchar dat)
{
uchar i;
CLK = 0;
for(i=0; i<8; i++)
{
DIN = dat >> 7; //放置最高位
dat <<= 1;
CLK = 0; //上升沿放置資料
CLK = 1 ;
}
}
uint SPI_Read(void)
{
uint i, dat = 0;
CLK = 0;
for(i = 0; i < 12; i++) //接收12位資料
{
dat <<= 1;
CLK = 1;
CLK = 0;
dat |= DOUT;
}
return dat;
}
uint Read_AD_Data(uchar cmd)
{
uchar i;
uint AD_Value;
CLK = 0;
CS = 0 ;
SPI_Write(cmd);
for(i = 6; i > 0; i--); //延時等待轉換結果
CLK = 1; //傳送一個時鐘週期,清除BUSY
_nop_();
_nop_();
CLK = 0;
_nop_();
_nop_();
AD_Value = SPI_Read();
CS = 1;
return AD_Value;
}