?AD/DA基礎知識?
硬件電路:?
?模電運放知識回顧:?
? ?虛短(Virtual Short)
- 定義:運放同相輸入端(+)和反相輸入端(-)的電位近似相等,即V+= V-,仿佛兩個輸入端短路,但實際上并未真正連接(無電流通過),因此稱為 “虛短”。
? 虛斷(Virtual Open)
- 定義:運放同相輸入端和反相輸入端的輸入電流近似為零,即 I+ =?I- ,仿佛兩個輸入端開路,但實際上仍有微弱電流(理想運放忽略),因此稱為 “虛斷”。
eg.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?分析:
?
?DA原理:
T型電阻網絡DA:?
?PWM型DA:
SPI協議:
?這里時序圖以XPT2046為例:
?硬件原理圖:
?
?
引腳定義:?
sbit XPT2046_CS=P3^5;
sbit XPT2046_DCLK=P3^6;
sbit XPT2046_DIN=P3^4;
sbit XPT2046_DOUT=P3^7;
?命令字:
選定對應通道:?
在頭文件里對命令字進行宏定義 :
#define XPT2046_XP_8 0x9c //1001 1;8位1:單端00
#define XPT2046_YP_8 0xDc
#define XPT2046_VBAT_8 0xAc
#define XPT2046_AUX_8 0xEc#define XPT2046_XP_12 0x94 //1001 1;8位1:單端00
#define XPT2046_YP_12 0xD4
#define XPT2046_VBAT_12 0xA4
#define XPT2046_AUX_12 0xE4
?XPT2046讀取AD值:
unsigned int XPT2046_ReadAD(unsigned char Command)//s=1開始檢測,a2a1a0選地址
{unsigned char i;unsigned int ADValue;XPT2046_CS=0;XPT2046_DCLK=0;for(i=0;i<8;i++){XPT2046_DIN=Command&(0x80>>i);XPT2046_DCLK=1;Delayms(1);XPT2046_DCLK=0;}for(i=0;i<16;i++){XPT2046_DCLK=1;Delayms(1);XPT2046_DCLK=0;if(XPT2046_DOUT==1){ADValue|=(0x8000>>i);}}XPT2046_CS=1;if(Command&0x08)//0000 0100{return ADValue>>8;}else{return ADValue>>4;}
}