我们打开我们的核心板原理图可以看到这四根引脚分别接在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这个是省电模式