JZ2440 裸機驅動 第14章 ADC和觸摸屏介面

来源:http://www.cnblogs.com/sz189981/archive/2017/10/24/7721949.html
-Advertisement-
Play Games

瞭解S3C2410/S3C2440和觸摸屏的結構; 瞭解電阻觸摸屏的工作原理和等效電路圖; 瞭解S3C2410/S3C2440觸摸屏控制器的多種工作模式; 掌握S3C2410/S3C2440 ADC和觸摸屏的編程方法; ...


本章目標:     瞭解S3C2410/S3C2440和觸摸屏的結構;     瞭解電阻觸摸屏的工作原理和等效電路圖;     瞭解S3C2410/S3C2440觸摸屏控制器的多種工作模式;     掌握S3C2410/S3C2440 ADC和觸摸屏的編程方法; 14.1 ADC和觸摸屏硬體介紹及使用 14.1.1 S3C2410/S3C2440      S3C2410/S3C2440  的ADC可以接收8個通道的模擬信號輸入,並將它們轉換 為10位的二進位數據。在2.5MHz的A/D轉換時鐘下,最大的轉化速率可達500K SPS(SPS:samples per second,每秒的採樣次數)。     S3C2410/S3C2440   都提供觸摸屏的介面,不過它們有所不同。S3C2410的 觸摸屏介面向外提供4個控制信號引腳(nYPON、YMON、nXPON、XMON)和2 個模擬信號輸入引腳(AIN[7]、AIN[5]),這6個引腳通過4個晶體管與觸摸屏的4個 引腳相連。而S3C2440提供了與觸摸屏直接連接的4個引腳,不需要外接晶體管。     S3C2410/S3C2440 ADC和觸摸屏介面有如下特性:         ·解析度:10位;         ·微分線性度誤差:±1.0LSB;         ·積分線性度誤差:±2.0LSB;         ·最大轉換速率    :500KSPS;         ·低功耗;         ·供電電壓            :3.3V;         ·輸入模擬電壓範圍:0~3.3V;         ·片上採樣保持功能;         ·普通轉換模式;         ·分離的x/y軸坐標轉換模式;         ·自動(連續)x/y軸坐標轉換模式;         ·等待中斷模式。     ADC和觸摸屏介面結構如圖14.1、14.2所示。      從圖14.1、14.2可知,ADC和觸摸屏介面只有一個ADC轉換器,可以通過設置寄存器來選擇對 哪路模擬信號(多大8路)進行採樣。圖中有兩個中斷信號:INT_ADC、INT_TC,前者表示A/D轉換 器已經轉換完畢,後者表示觸摸屏被按下了。     對於S3C2410,在使用觸摸屏時,AIN[7]和AIN[5]被用來測量XP、YP的電平,只剩下AIN[6]、 AIN[4:0]共6個引腳用於一般的ADC輸入。     對於S3C2440,在使用觸摸屏時,引腳XP、XM、YP、YM被用於和觸摸屏直接相連,只剩下 AIN[3:0]共4個引腳用於一般的ADC輸入。     當不使用觸摸屏時,XP、XM、YP、YM這4個引腳也可以用於一般的ADC輸入。     S3C2410與觸摸屏的連接比S3C2440複雜,需要增加幾個外接晶體管,如圖14.3所示。 14.1.2 S3C2410/S3C2440 ADC介面的使用方法     ADC的啟動方式有兩種:手工啟動、讀結果時就自動地啟動下一次轉換。也有兩種方法獲 知當前轉換是否結束:查詢狀態位、轉換結束時發出中斷。     ADC的操作只涉及到3個寄存器:ADCCON、ADCTSC、ADCDAT0。下麵介紹它們的用 法,有關觸摸屏的數據位將在14.1.3小節介紹。     這兩個寄存器的格式如表14.1、14.2所示。          ADC的使用分為4個步驟: (1)設置ADCCON寄存器,選擇輸入信號通道,設置A/D轉換器的時鐘。     使能A/D轉換器時鐘的預分頻功能時,A/D時鐘的計算公式如下:         A/D時鐘 = PCLK / (PRSCVL + 1);     註意:A/D時鐘最大為2.5MHz,並且應該小於PCLK的1/5. (2)設置ADCTSC寄存器,使用設為普通轉換模式,不使用觸摸屏功能。     ADCTSC寄存器多用於觸摸屏,對於普通ADC,使用它的預設值即可,或設置其位[2] 為0。ADCTSC寄存器的格式在14.13小節介紹。 (3)設置ADCCON寄存器,啟動A/D轉換。     如果設置READ_START位,則讀轉換數據(讀ADCDAT0寄存器)時即啟動下一次 轉換;否則,可以通過設置ENABLE_START位來啟動AD轉換。 (4)轉換結束時,讀取ADCDAT0寄存器獲得數值。     如果使用查詢方式,則可以不斷讀取ADCCON寄存器的ECFLG位來確定轉換是否結束; 否則可以使用INT_ADC中斷,發生INT_ADC中斷時表示轉換結束。 14.1.3 觸摸屏原理及介面 1. 電阻觸摸屏原理     觸摸屏的種類有很多,比如超聲波觸摸屏、紅外觸摸屏、電容觸摸屏、電阻觸摸屏等。 電阻觸摸屏由於造價低廉,在電氣上可以直接接入用戶的系統中而得到大量使用。電阻 觸摸屏有幾種類型,比如“四線”、“五線”和“八線”。線越多,精度就越高,溫度漂移也越 少,但基本的操作是一樣的。它本質上是個電阻分壓器,將矩形區域中觸摸點(x、y)的物 理位置轉換為代表x坐標和y坐標的電壓。     S3C2410/S3C2440 的觸摸屏介面可以驅動四線電阻觸摸屏,四線電阻觸摸屏的等效 電路如圖14.4所示。圖中粗線表示相互絕緣的兩層導電層,當按壓時,它們在觸電處相連; 不同的觸點在x、y方向上的分壓值不同,將這兩個分壓值經過A/D轉換後即可得到x、y坐標。     下麵根據其等效電路說明觸摸屏的工作過程。 (1)平時觸摸屏沒有被按下時,等效電路如圖14.5所示。

     S4、S5閉合,S1、S2、S3斷開,即YM接地、XP上拉、XP和YP作為模擬輸入(對CPU而 言)、XM高阻。     平時觸摸屏沒有按下時,由於上拉電阻的關係,Y_ADC為高電平:當x軸和y軸受擠壓而接觸 導通後,Y_ADC的電壓由於連通道y軸接地而變為低電平,此低電平可作為中斷觸發信號來通知 CPU發生“Pen Down”事件,在S3C2410/S3C2440中,稱為等待中斷模式。 (2)採樣X_ADC電壓,得到x坐標,等效電路如圖14.6所示。

     S1、S3閉合,S2、S4、S5斷開,即XP接上電源、XM接地、YP作為模擬輸入(對CPU 而言)、YM高阻、XP禁止上拉。這時,YP即X_ADC就是x軸的分壓點,進行AD轉換後 就得到x坐標。 (3)採樣Y_ADC電壓,得到y坐標,等效電路如圖14.7所示。
     S2、S4閉合,S1、S3、S5斷開,即YP接電源、YM接地、XP作為模擬輸入(對CPU 而言)、XM高阻、XP禁止上拉。這時,XP即Y_ADC就是y軸的分壓點,進行AD轉換後 就得到y坐標。 2.S3C2410/S3C2440觸摸屏介面     與上面描述的觸摸屏工作過程的3個步驟對應,觸摸屏控制器也有4種工作模式。 (1)等待中斷模式(Waiting for Interrupt Mode)     設置ADCTSC寄存器位0xD3即可令觸摸屏控制器處於這種模式。這時,它在等待觸摸 屏被按下。當觸摸屏被按下時,觸摸屏控制器將發出INT_TC中斷信號,此時觸摸屏控制 器要轉入以下兩種工作模式中的一種,以讀取x、y坐標。     對於S3C2410,當觸摸屏被按下或鬆開時,都產生INT_TC中斷信號。     對於S3C2440,可以設置ADCTSC寄存器的位[8]為0或1,表示等待按下中斷或鬆開中斷。 (2)分離的x/y軸坐標轉換模式(Separate X/Y Position Conversion Mode)     這分別對應上述觸摸屏工作過程的第2、3步驟。設置ADCTSC寄存器為0x69進入x軸 坐標轉換模式,x坐標值轉換完畢後被寫入ADCDAT0,然後發出INT_ADC中斷;相似地, 設置ADCTSC寄存器位0x9a進入y軸坐標轉換模式,y坐標值轉換完畢後被寫入ADCDAT1, 然後發出INT_ADC中斷。
 (3)自動(連續)x/y軸坐標轉換模式     上述觸摸屏的工作過程2、3可以合併成一個步驟,設置ADCTSC寄存器為0x0C,進入 自動x/y軸坐標轉換模式,觸摸屏控制器就會自動轉換觸摸點的x、y坐標值,並分別寫入 ADCDAT0、ADCDAT1寄存器中,然後發出INT_ADC中斷。 (4)普通轉換模式     不使用觸摸屏時,觸摸屏控制器處於這種模式。在這種模式下,可以通過設置ADCCON 寄存器啟動普通的A/D轉換,轉換完成時數據被寫入ADCDAT0寄存器中。     14.1.2小節講述ADC介面就是工作於這種模式。     ADCTSC寄存器被用來選擇觸摸屏的工作模式,它的格式如表14.3所示。
     註意:① 處於等待中斷模式時,XP_SEN必須設為1(XP接模擬輸入)、PULL_UP必須設為0(使能上拉)。                  ② AUTO_PST設為1時,必須處於自動x/y軸坐標轉換模式下。     對於S3C2410,當觸摸屏控制器處於等待中斷模式時,觸摸屏被按下時可以不斷發出INT_TC 中斷信號以便進入自動x/y軸坐標轉換模式轉換x、y坐標。發出中斷信號的間隔可以通過ADCDLY 寄存器來設置。     對於S3C2440,當CPU處於休眠模式時,觸摸屏被按下時可以不斷發出INT_TC中斷信號以喚 醒CPU。發出中斷信號的間隔可以通過ADCDLY寄存器來設置。     另外,對於普通轉換模式、分離的x/y軸坐標轉換模式、自動x/y軸坐標轉換模式,都可以通過 ADCDLY寄存器來設置採樣的延時時間。     ADCDLY寄存器格式如表14.4所示,在等待中斷模式時,延時時鐘為X-tal(3.68MHz),其他情況 為PCLK,可以如圖14.8所示。

     ADCDAT1寄存器的格式如表14.5所示。它與ADCDAT0寄存器格式相似,ADCDAT1 寄存器中保存y坐標值;而ADCDAT0中保存x坐標值或普通AD轉換值。 14.2 ADC和觸摸屏操作實例 14.2.1 硬體設計     本開發板中,模擬輸入引腳AIN0、AIN1外接可調電阻器,電路圖如圖14.9所示。      圖中兩個電阻可調,程式將通過AIN0、AIN1這兩個通道採集、轉換電壓值。     觸摸屏的介面是標準的,它的電路圖如圖14.4所示。 14.2.2 程式設計     本實常式序將提供一個菜單,可以從中選擇測試ADC或觸摸屏。當測試ADC是,程式 不斷測量AIN0、1的電壓,併在串口上顯示出來。當測試觸摸屏時,只是測試觸筆按下、 鬆開的事件,並且把按下時的採集到的x,y坐標列印出來,它們只是原始的數據。     本實例的源碼在/work/hardware/adc_ts目錄下,主要文件為adc_ts.c。main.c文件 通過串口輸出兩個菜單共用戶選擇是測試ADC還是觸摸屏,它們分別對應adc_ts.c中的 Test_ADC、Test_Ts函數。 14.2.3 測試ADC的代碼詳解 1.ADC主入口函數Test_Adc     ADC測試函數Test_Adc代碼如下:
 1 行號
 2 94行  /*
 3 95行   *測試ADC
 4 96行   *通過AD轉換,測量可變電阻的電壓值
 5 97行   */
 6 98行  void Test_Adc(void)
 7 99行  {
 8 100行    float vo10, vo11;
 9 101行    int t0, t1;
10 102行
11 103行    printf("Measuring the voltage of AIN0 and AIN1, press any key to exit\n\r");
12 104行    while(!awaitkey(0))    //串口無輸入,則不斷測試
13 105行    {
14 106行        vo10 = ((float)ReadAdc(0)*3.3)/1024.0;    //計算電壓值
15 107行        vo11 = ((fooat)ReadAdc(1)*3.3)/1024.0;    //計算電壓值
16 108行        t0   = (vo10 - (int)vo10)*1000;   //計算小數部分,程式中的printf無法列印浮點數
17 109行        t1   = (vo11 - (int)voll)*1000;   //計算小數部分,程式中的printf無法列印浮點數
18 110行        printf("AIN0 = %d.%-3dV AIN1 = %d.%-3dV\r", (int)vo10, t0, (int)vo11, t1);
19 111行    }
20 112行    printf("\n");
21 113行 }
22 114行
Test_Adc()     第106、107行先調用ReadAdc函數發起AD轉換,返回10位轉換數值(最大為1023); 然後計算實際的電壓值。 2.ReadAdc函數:設置、啟動ADC,獲取轉換結果     ADC操作核心函數ReadAdc,代碼如下:
 1 68行 /*
 2 69行  *使用查詢方式讀取AD轉換值
 3 70行  *輸入參數:
 4 71行  *    ch:模擬信號通道,取值為0~7
 5 72行  */
 6 73行 static int ReadAdc(int ch)
 7 74行 {
 8 75行    //選擇模擬通道,使能預分頻功能,設置AD轉換器時鐘 = PCLK/(49+1)
 9 76行    ADCCON = PRESCALE_EN | PRSCVL(49) | ADC_INPUT(ch);
10 77行
11 78行    //清除位[2],設為普通轉換模式
12 79行    ADCTSC &= ~(1 << 2);
13 80行    
14 81行    //設置位[0]為1,啟動AD轉換
15 82行    ADCCON |= ADC_START;
16 83行
17 84行    //當AD轉換真正開始時,位[0]會自動清0
18 85行    while(ADCCON & ADC_START);
19 86行
20 87行    //檢測位[15],當它為1時表示轉換結束
21 88行    while(!(ADCCON & ADC_ENDCVT));
22 89行
23 90行    //讀取數據
24 91行    return (ADCDAT0 & 0x3ff);
25 92行 }
ReadAdc()     程式與前面介紹的ADC的4個步驟一一對應。     (1)第76行選擇模擬通道,使能預分頻功能,設置AD轉換器的時鐘。     本程式中,PCLK為50MHz,所以AD轉換器的時鐘為50MHz/(49+1) = 1MHz,小於 最大AD時鐘2.5MHz。     (2)第79行參考ADCTSC寄存器格式表14.3。     (3)ADC的啟動方式有兩種,如果使用“讀啟動”(此時ADCCON寄存器位[1]被設為 1),則讀一下ADCDAT0寄存器即可啟動;如果使用手動方式,設置ADCCON寄存器位[0]即可 啟動。     (4)第88行迴圈檢測方式,也可以使用中斷方式,當AD轉換結束時,ADC會發出 INT_ADC中斷信號。     (5)最後,第91行讀取ADCDAT0即可得到轉換的數據(低10位有效數據)。 14.2.4 測試觸摸屏代碼詳解     觸摸屏的操作稍微複雜,下麵將流程圖和控制狀態轉換圖合併一起(14.10),以便 後面的代碼分析。
  1.觸摸屏的主入口函數Test_Ts     Test_Ts函數進行初始化、開啟ADC中斷之後,就不再參與觸摸屏的操作,這都通過中 斷服務程式來完成。代碼如下:
 1 187行/*
 2 188行 *測試觸摸屏,列印觸點坐標
 3 189行 */
 4 190行 void Test_Ts(void)
 5 191行 {
 6 192行    isr_handle_array[ISR_ADC_OFT] = AdcTsIntHandle;    //設置ADC中斷服務程式
 7 193行    INTMSK    &= ~BIT_ADC;                             //開啟ADC總中斷
 8 194行    INTSUBMSK &= ~(BIT_SUB_TC);               //開啟INT_TC中斷,即觸摸屏按下或鬆開時產生中斷
 9 195行    INTSUBMSK &= ~(BIT_SUB_ADC);              //開啟INT_ADC中斷,即AD轉換結束時產生中斷
10 196行    
11 197行    //使能預分頻功能,設置AD轉換器的時鐘 = PCLK/(49+1)
12 198行    ADCCON = PRESCALE_EN | PRSCVL(49);
13 199行
14 200行    /*採樣延時時間 = (1/3.6864M) * 50000 = 13.65ms
15 201行     *即按下觸摸屏後,13.5ms後才採樣
16 202行     */
17 203行    ADCDLY = 50000;
18 204行
19 205行    wait_down_int();    /*進入“等待中斷模式”,等待觸摸屏被按下*/
20 206行
21 207行    printf("Touch the screen to test, press any key to exit\n\r");
22 208行    getc();
23 209行
24 210行    //屏蔽ADC中斷
25 211行    INTSUBMSK |= BIT_SUB_TC;
26 212行    INTSUBMSK |= BIT_SUB_ADC;
27 213行    INTMSK    |= BIT_ADC;
28 214行 }
Test_Ts()     第192行設置ADC中斷處理函數。     本程式中,PCLK為50MHz,所以AD轉換器的時鐘為50MHz/(49+1) = 1MHz,小於最大AD轉換時鐘2.5MHz。     第205行調用巨集wait_down_int(),令觸摸屏控制器進入“等待中斷模式”,等待觸摸屏被按下。     wait_down_int()、wait_up_int()、mode_auto_xy()都是巨集定義,用於設置觸摸屏進入 “等待Pen Down中斷模式”、“等待Pen Up中斷模式”、“自動x/y軸坐標轉換模式”。讀者可 以參考14.1.3節的“S3C2410/S3C2440觸摸屏介面”理解這些代碼。     需要註意以下幾點:     (1)對於S3C2410,ADCTSC的位[8]屬於保留位,只能設為0;             當處於“等待中斷模式”時,無論“Pend Down”中斷還是“Pen Up”中斷都可以檢測到。     (2)對於S3C2440,ADCTSC的位[8]為0、1時分別表示等待Pen Down中斷或Pen Up 中斷。     (3)要進入“自動x/y軸坐標轉換模式”,XP、XM、YP、YM的狀態不必理會,觸摸屏在 採樣時會自動控制它們。     這些巨集的定義如下:
/*設置進入等待中斷模式,XP_PU、XP_Dis、XM_Dis、YP_Dis、YM_En
 *(1)對於S3C2410,位[8]只能為0,所以只能使用下麵的wait_down_int;
 *    它既等待Pen Down中斷,也等待Pen Up中斷。
 *(2)對於S3C2440,位[8]為0、1時分別表示等待Pen Down中斷或Pen Up中斷
 */
/*進入“等待中斷模式”,等待觸摸屏被按下*/
#define wait_down_int()    { ADCTSC = DOWN_INT | XP_PULL_UP_EN | \
                                      XP_AIN | XM_HIZ | YP_AIN | YM_GND | \
                                      XP_PST(WAIT_INT_MODE); }
/*進入“等待中斷模式”,等待觸摸屏被鬆開*/
#define wait_up_int()      { ADCTSC = UP_INT   | XP_PULL_UP_EN | \
                                      XP_AIN | XM_HIZ | YP_AIN | YM_GND | \
                                      XP_PST(WAIT_INT_MODE); }

/*進入自動x/y軸坐標轉換模式*/
#define mode_auto_xy()     { ADCTSC = CONVERT_AUTO | XP_PULL_UP_DIS | \
                                      XP_PST(NOP_MODE); }
    然後,程式就在第208行等待串口輸入,以退出等待。等待期間,完全通過中斷來驅 動觸摸屏的操作。     最後,退出時,第211~213行屏蔽ADC中斷。 2.觸摸屏中斷處理函數:轉換觸摸屏的工作模式     從圖14.10可知,執行Test_Ts函數之後,觸摸屏控制器處於“等待Pen Down中斷模 式”。這時,如果按下觸摸屏,則發生INT_TC中斷,進入AdcTsIntHandle中斷處理函數。 它很簡單,只是判斷當前中斷是否是INT_TC還是INT_ADC,然後分別調用它們的中斷 服務程式,代碼如下:
 1 174行/*
 2 175行 *ADC,觸摸屏的中斷服務函數
 3 176行 *對於INT_TC、INT_ADC中斷,分別調用它們的處理程式
 4 177行 */
 5 178行 void AdcTsIntHandle(void)
 6 179行 {
 7 180行    if(SUBSRCPND & BIT_SUB_TC)
 8 181行        Isr_Tc();
 9 182行
10 183行    if(SUBSRCPND & BIT_SUB_ADC)
11 184行        Isr_Adc();
12 185行 }
AdcTsIntHandle()  INT_TC的中斷服務程式Isr_Tc代碼如下:
 1 115行 /*
 2 116行  *INT_TC的中斷服務程式
 3 117行  *按下時,進入自動x/y軸坐標轉換模式
 4 118行  *鬆開始,進入等待中斷模式,再次等待INT_TC中斷
 5 119行  */
 6 120行 static void Isr_Tc(void)
 7 121行 {
 8 122行    if(ADCDAT0 & 0x8000)                //鬆開中斷
 9 123行    {
10 124行        printf("\nStylus Up!!\n");
11 125行        wait_down_int();                /*進入“等待中斷模式”,等待按下*/
12 126行    }
13 127行    else                                //按下中斷
14 128行    {
15 129行        printf("\nStylus Down: ");
16 130行
17 131行        mode_auto_xy();                /*進入自動x/y軸坐標轉換模式*/
18 132行
19 133行        /*設置位[0]為1,啟動AD轉換
20 134行         *註意:ADCDLY為50000,PCLK = 50MHz
21 135行         *     要經過(1/50MHz) * 50000 = 1ms之後才開始轉換x坐標
22 136行         *     再經過1ms之後才開始轉換y坐標
23 137行         */
24 138行        ADCCON |= ADC_START;
25 139行    }
26 140行
27 141行    //清除INT_TC中斷
28 142行    SUBSRCPND |= BIT_SUB_TC;
29 143行    SRCPND    |= BIT_ADC;
30 144行    INTPND    |= BIT_ADC;
31 145行 }
Isr_Tc()     第122行首先判斷是按下還是鬆開中斷,如果是鬆開中斷,表示觸碰完成。     第125行中通過wait_down_int()巨集令觸摸屏控制器進入“等待Pen Down 中斷模式”,等待下一次操作。     如果是按下中斷,則在131行通過mode_auto_xy()巨集令觸摸屏控制器進入 “自動x/y軸坐標轉換模式”,然後在138行啟動AD轉換。也可以使用“分離的x/y 軸坐標轉換模式”手動地分別轉換x、y坐標。 3. 在ADC中斷處理函數中獲取x、y坐標     在“自動x/y軸坐標轉換模式”下,x、y坐標都轉換完畢之後,產生INT_ADC 中斷,進入AdcTsIntHandle中斷處理函數,它進而調用INT_ADC的中斷服務 程式Isr_Adc,代碼如下:
 1 148行 /*
 2 149行  *INT_ADC的中斷服務程式
 3 150行  *AD轉換結束時發生中斷
 4 151行  *先讀取x\y坐標值,再進入等待中斷模式
 5 152行  */
 6 153行 static void Isr_Adc(void)
 7 154行 {
 8 155行    //列印x、y坐標值
 9 156行    printf("xdata = %4d, ydata = %4d\r\n", (int)(ADCDAT0 & 0x3ff), (int)(ADCDAT1 & 0x3ff));
10 157行    
11 158行    /*判斷是2410還是2440*/
12 159行    if((GSTATUS1 == 0x32410000) || (GSTATUS1 == 0x32410002))
13 160行    {    //S3C2410
14 161行        wait_down_int();    /*進入“等待中斷模式”,等待觸摸屏鬆開*/
15 162行    }
16 163行    else
17 164行    {    //S3C2440
18 165行        wait_up_int();       /*進入“等待中斷模式”,等待觸摸屏鬆開*/
19 166行    }
20 167行
21 168行    //清除INT_ADC中斷
22 169行    SUBSRCPND |= BIT_SUB_ADC;
23 170行    SRCPND    |= BIT_ADC;
24 171行    INTPND    |= BIT_ADC;
25 172行 }
Isr_Adc()     首先,第156行從ADCDAT0、ADCDAT1寄存器中讀出x、y坐標值,並列印出來。     然後,通過第161或165行(對於S3C2410)或158行(對於S3C2440)令觸摸屏控制器 進入“等待Pen Up中斷模式”,等待觸摸屏鬆開。     S3C2410的觸摸屏控制器既等待PenDown中斷,也等待Pen Up中斷;     S3C2440觸摸屏中斷器可以分開設置:等待按下或等待鬆開。 14.2.5 實例測試     本程式在main函數中通過串口輸出一個菜單,用於選擇測試ADC或觸摸屏。操作步驟 如下:     (1)使用串口將開發板的COM0和PC的串口相連,打開PC上的串口工具 並設置其波 特率為115200、8N1。     (2)生成可執行程式,adc_ts_2410或adc_ts_2440,燒入NAND Flash後運行。                在ADC_TS目錄下執行“make”命令,生成adc_ts.bin。     (3)在PC上串口工具可以看到如下菜單:         #### Test ADC and Touch Screem ####         [A] Test ADC         [B] Test Touch Screen         Enter your selection:     (4)輸入"A"以測試ADC,可以看到如下字樣:         Measuring the voltage of AIN0 and AIN1,press any key to exit         AIN0 = 1.102V    AIN1 = 1.108V         然後使用螺絲刀調整可變電阻ADJ0、ADJ1,可以在串口工具上看到它們的電壓值不斷變化。         最後,按任意鍵退回選擇菜單。     (5)輸入“T”以測試觸摸屏,可以看到如下字樣:         Touch the screem to test, press any key to exit         點擊觸摸屏可以在串口工具上看到觸點坐標,可以看到類似下麵字樣:         Stylus Down: xdata = 489, ydata =516         鬆開觸摸屏時可以看到如下提示:         Stylus Up!!         最後按任意鍵返回選擇菜單。         註意:觸摸屏的實際使用中還要考慮初始校正、去抖動、拖曳等功能。 附:代碼: 鏈接: https://pan.baidu.com/s/1kV24a9L 密碼: tfab
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 環境: Windows server 2008 r2 Standard +SqlServer2008R2 內網環境需要升級為SQL server 2012 升級安裝時提示版本不支持 網上查詢相關問題, 必須是SQL server2008 r2 sp1以上及需要安裝Sp2補丁包才能升級為SQL ser ...
  • 今天遇到了一個問題 就是要批量更新資料庫中 某個欄位的值,需要首先需要找到都哪些表裡包含了這個欄位 ,整理了下麵這個語句 方便查詢 SELECT DISTINCT t.table_name, c.COLUMN_NAMEFROM information_schema.TABLES tINNER JOI ...
  • 一、前言 我們在登錄mysql的時候經常會看到一句警告: Warning: Using a password on the command line interface can be insecure. 這讓人看著很不舒服,並且當在寫腳本的時候這個警告輸出到屏幕上更讓人感覺難受。 二、解決辦法 這個 ...
  • SQL Server日常維護常用的一些腳本整理。 1.sql server開啟clr許可權: 2.查詢資料庫大小 3.資料庫日誌壓縮 4.查看資料庫連接用戶 5.查看當前占用 cpu 資源最高的會話和其中執行的語句(及時CPU) 6.查看緩存中重用次數少,占用記憶體大的查詢語句(當前緩存中未釋放的)-- ...
  • 直接上語句 查所有資料庫占用空間大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size, concat(truncate(sum(index_length)/1024/1024... ...
  • 查詢速度慢的原因 1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程式設計的缺陷) 2、I/O 吞吐量小,形成了瓶頸效應。 3、沒有創建計算列導致查詢不優化。 4、記憶體不足 5、網路速度慢 6、查詢出的數據量過大(可採用多次查詢,其他的方法降低數據量) 7、鎖或者死鎖(這是查詢慢最常見的問題 ...
  • 13.2 TFT LCD顯示實例 13.2.1 程式設計 本實例的目的是從串口輸出一個菜單,從中選擇各種方法進行測試,比如畫線、 畫圓、顯示單色、使用調色板等。 13.2.2代碼詳解 本實例源碼在/work/hardware/lcd目錄下,與LCD相關的代碼有3個文件:lcddrv.c、 frame ...
  • 瞭解LCD顯示器的介面及時序; 掌握S3C2410/S3C2440 LCD控制器的使用方法; 瞭解幀緩衝區的概念,掌握如何設置幀緩衝區來顯示圖像; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...