1. 程式人生 > >觸控式螢幕驅動之編寫驅動程式

觸控式螢幕驅動之編寫驅動程式

我們開啟我們的核心板原理圖可以看到這四根引腳分別接在xadcAIN2,3,4,5上面

搜尋發現不需要配置什麼暫存器

我們看一看晶片手冊上的觸控式螢幕那一章,我們的工作就是閱讀那一章然後弄清楚那裡面的東西就可以了

先來看一看核心自帶的觸控式螢幕驅動做了什麼事情

ts.clock = clk_get(dev, "adc");
if (IS_ERR(ts.clock)) {
dev_err(dev, "cannot get adc clock source\n");
return -ENOENT;
}


clk_enable(ts.clock);

}

這裡有個使能時鐘的函式

幹嘛用的呢,我們進去看一看

這裡我們需要了解一個知識,在核心啟動的時候,為了省電,會把一些不相關的模組給關掉,怎麼關掉了,就是設定clkcon或者是(Clock Gating Control Register),我們要用之前必須把他們開啟

這個clk_get 和clk_enable就是把這個給使能起來

The 10-bit or 12-bit CMOS Analog to Digital Converter (ADC) comprises of 10-channel analog inputs. It converts 
the analog input signal into 10-bit or 12-bit binary digital codes at a maximum conversion rate of 1MSPS with 
5MHz A/D converter clock. A/D converter operates with on-chip sample-and-hold function. ADC supports low 
power mode.  
這一段英文的核心思想就是說:這裡說的就是這裡面有個10位或者是12的mos ADC轉換器 最大工作頻率是5M

Power Supply Voltage: 3.3V 最大輸入電壓是3.3v 如果是3.3V的話輸入進來就是10個一,如果是0的話就是0個0

每個刻度就是3.3v/10位  10位的話就是1024 就是3.3V/1024 最小刻度是3mv

接著往下看 


上圖就是ADC與觸控式螢幕介面的模組

10:1是什麼意思呢,就是10路輸入,選擇一路出來。10路里面可以選擇一路進行ADC轉換

然後是我們的ADC轉換時間

7.4.1  A/D CONVERSION TIME 
When the PCLK frequency is 66MHz and the prescaler value is 65, total 12-bit conversion time is as follows. 
• 
A/D converter freq. = 66MHz/(65+1) = 1MHz 
• 
Conversion time = 1/(1MHz / 5cycles) = 1/200kHz = 5us 


如果PCLK是66MHZ,我們之前不是說過ADC最大頻率是5MZ嗎,我們肯定要設定分頻係數,把這個頻率給降低下來

然後下面就是它提供的兩個例子 the prescaler value is 65 如果這個分頻係數是65的話,那麼ADC的工作頻率就是A/D converter freq. = 66MHz/(65+1) = 1MHz 

轉換時間就需要Conversion time = 1/(1MHz / 5cycles) = 1/200kHz = 5us  1MHZ的5個週期 就是5us 

This A/D converter was designed to operate at maximum 5MHz clock, so the conversion rate can go up to 1MSPS.

如果你工作2.5M的話,你就把這個2.5M給帶進去,就可以算出來1s中可以轉換1M次

然後我們在往下看




上圖是觸控式螢幕介面模式

第一個是正常的轉換模式(Normal Conversion Mode),正常轉換模式就是一般的ADC操作,比如說你想測量某個電壓。

第二種就是分離的xy座標轉換模式(Separate X/Y Position Conversion Mode) 這兩種模式分為兩個部分。一種是測量X座標,一種是測量Y座標。

進入X座標模式需要採取的措施是

1.設定0x69到TSCONn暫存器

2.通過設定TSADCCONn開始轉換

3.X座標轉換結束後能被中斷給通知

4.從TSDATXn讀出座標轉換資料

Y座標差不多

第三種是 自動的聯絡的XY轉換模式(Auto (Sequential) X/Y Position Conversion Mode)

當你進入這個模式之後,它會自動的幫你即轉換x座標也轉換Y座標

第四種就是等待中斷模式,就是等待按下產生中斷模式

我們按下觸控式螢幕,你想讓它產生中斷,你就要讓它處於等待中斷模式

它幹嘛勒 觸控式螢幕會產生INT_PENn這個中斷,當觸控筆按下的時候。怎麼進入這個模式呢

The value of TSCONn[7:0] should be '0xd3' , 讓這個值等於0xd3

standby mode這個是省電模式