ADI的BF561双核DSP怎么做开发,我来说一说(十六)触摸屏的设计
作者的话
ADI的双核DSP,最早的一颗是Blackfin系列的BF561,这颗DSP我用了很久,比较熟悉,且写过一些给新手的教程。
硬件准备
ADZS-BF561-EZKIT开发板:ADI原厂评估板
AD-ICE20000仿真器:ADI现阶段性能最好的DSP仿真器
产品链接:https://item.taobao.com/item.htm?id=753233120844
软件准备
Visual DSP++5.1.2
CCES2.11.1
硬件环境的搭建
程序实现的功能
利用 ADSP-BF561 处理器串行 SPI 总线接口单元与触摸屏模数转换芯片的无缝 连接,通过对转换芯片内部寄存器读操作,来获取触点坐标。
电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(ITO 氧化铟,透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层,它的内表面也涂有一层 ITO 涂层,在它们之间有许多细小的(小于 1/1000 英寸)的透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器侦测到这一接触并计算出(X,Y)的位置。 电阻式触摸屏分为四线电阻屏和五线电阻屏。
系统硬件介绍:
系统触摸屏采用 3.5 寸四线电阻式触摸屏,ADS7843 是一个内置 12 位模数转换、低导通电阻模拟开关的串行接口芯片,供电电压 2.7~5V,参考电压 VREF 为 1V~+VCC,转换电压的输入范围为 0~VREF,最高转换速率为 125kHz。转换器有 4 路模拟信号输入通道和独特的在线低阻开关,它允许由未选中的输入通道为外部线路提供电源和地。靠这样的输入结构和参考电压设定,ADS7843 能极大地消除内部开关电阻带来的转换误差。
在硬件设计上,ADS7843 位于 TFT 控制板上,通过 TFT 接口上的 FPC 连接线,与 BF561 的 SPI 接口连接。SPI 接口的片选使用 PF2 脚,通过配置 CPLD 寄存器分配选通设备。
ADS7843 的内部结构及参考电压模式选择:
ADS7843 之所以能实现对触摸屏的控制,是因为其内部结构很容易实现电极电压的切换,并能进行快速 A/D 转换。
图示为其内部结构,A2~A0 和 SER/为控制寄存器中的控制位,用来进行开关切换和参考电压的选择。
ADS7843 支持两种参考电压输入模式:
一种是参考电压固定为 VREF,另一种采取差动模式,参考电压来自驱动电极。这两种模式分别如图 4(a)、(b)所示。
采用图(b)的差动模式可以消除开关导通压降带来的影响。下表两种参考电压输入模式所对应的内部开关状况。
参考电压非差动输入模式(SER/DFR=“1”):
参考电压非差动输入模式(SER/DFR=“1”):
ADS7843 的控制字:
ADS7843 读取转换数据过程:
硬件连接方法 X+、X-和 Y+、Y-之间横排和竖排连接电阻式触摸屏,ADS7843 中断脚连 CPLD 的 I/O 上,CPLD 内部中断控制器统一管理中断源,并将中断信号输出端连接处理器 PF 管脚,从而触发 PF 中断。为了节约 I/O 资源将所有的设备都挂在一个 SPI 的片选线上,由 CPLD 内部 SPI 片选控制器分配给不同的设备。这样达到了实现 ADSP-BF561 处理器扩展 I/O 资源的目的。SPI 的其他信号线 SPI_SCLK,MOSI,MISO 等信号线为几个设备共用。
核心代码分析
void ADS_READ(void) //读函数
{
ADS_SEND(0x98); //启动转换选择通道 Y,8位 A/D 模式
udelay(0xff); //等待转换
ADS_RY(); //读 Y 轴转换数据
udelay(0xff);
ADS_SEND(0xd8); //启动转换选择通道 X,8位 A/D 模式
udelay(0xff); //等待转换
ADS_RX(); //读 X 轴转换数据
printf(“\nXdata is %d,”,Xdat[0] ); //打 X 印坐标
printf(“Ydata is %d\n”,Ydat[0] ); //打印 Y 坐标
}
运行结果