在将touchp的驱动移植到wince5下的时候遇到了一些问题。由于没有这块板子的现成的bsp包,只有一个touchp.cpp的文件(我的前任也还真够苟蛋的)。不过想想这也已经不错了,只有对照电路图和代码慢慢研究了。
我们这块板子的touchp是接在spi上的。TOUCH PANEL是SPI数据接口,板子有SPI接口,但是TOUCH PANEL是SPI DEVICE,要求以外部中断交互数据。
Pin 13, 设置为:data clk--spiclk0
Pin 14, 设置为:data out--spimosi0
Pin 15, 设置为:data in--spimiso0
Pin 16, 设置为:data cs--nss0
Pin 8,  中断请求: eint1
当然首先要配置上述3个pin的对应io为该function。中断也要配置好。接下来就是设置SPCON0和SPPIN0,其中设置SPCON0为master模式。touch的驱动(pdd)层要为上层(mdd层)提供几个ddsi接口:
DdsiTouchPanelGetDeviceCaps
DdsiTouchPanelSetMode
DdsiTouchPanelEnable
DdsiTouchPanelDisable
DdsiTouchPanelAttach
DdsiTouchPanelDetach
DdsiTouchPanelGetPoint
DdsiTouchPanelPowerHandler
上述的eint1为pen down的中断,将电平拉高,在下跳沿的时候触发中断。除此之外还要配置一个timer中断(本驱动中用到了timer1--10ms),它的作用是:当该中断触发的时候真正的去读SPRDAT0中的值。这两个中断在被done之前都要检查pen是否up了。第一个中断(pendown中断)如果done之前pen已经up了,则屏蔽掉timer1中断位,如果没有则启动timer1中断。一般情况下在你还没有up的时候第一个中断已经done了。
pen down的中断没有进行实质的操作,读取数据都是在timer的中断处理中进行的。这个还是比较麻烦的。大致看了下:x和y的数值都要取3次,然后进行比对,看偏差有多大,太大就淘汰了。然后在进行校正。至于对SPSTA0的读取操作,2440的用户手册上写的很清楚。
上述的两个中断处理都是在DdsiTouchPanelGetPoint中实现的,因为在mdd层的ist中如果SYSINT相关的事件到来就会直接去调用DdsiTouchPanelGetPoint。
由于两个中断都会调用一个事件,所以,在处理中断的时候要用到PDRIVER_GLOBALS这个结构体中的关于touchp的touchIrq和timerIrq,这两个值要在platform\common\src\arm\samsung\s3c2440a\intr\intr.c中的OEMInterruptHandler函数中对实际的IRQ处理的时候设置。PDRIVER_GLOBALS的变量直接映射到DRIVER_GLOBALS_PHYSICAL_MEMORY_START这个地址,所以可以直接对其进行赋值和读取操作。
在处理这个问题的时候我真是太土了,首先EINT1的中断配是配了,只是没有拉高。在拉高了之后竟然没有更改中断的触发方式,很明显应该是上升沿或者是下降沿触发的中断。害得我8月15的晚上(昨天)还要加班,还好今天搞定了。果然16的月亮比15的圆啊!

转载于:https://blog.51cto.com/bluefish/58126

SPI-TOUCHP调试(2440a-wince5)相关推荐

  1. RK3288平台 SPI接口调试步骤

    RK3288平台 SPI接口调试步骤 代码路径 drivers/spi/spi.c                             spi驱动框架         drivers/spi/sp ...

  2. SPI/I2S调试心得与经验总结

    一.调试中首先检查SPI使能总线是否正确: 检查时序(现有时钟,后片选拉低),接收时必须有发送才能有时钟 二.对照flash芯片手册查看SPI时序 三.检查状态位 1.查询标志位: 1)while(S ...

  3. (30)SPI接口调试丢数据解决(FPGA不积跬步101)

    1)遇到问题 FPGA与微处理器进行数据交互用到了SPI接口总线,SPI总线已经很成熟了,网上也有好多开源代码.但是,项目开发调试中也遇到SPI通信丢帧验证问题. 2)解决方法 a.设计思路为:SPI ...

  4. android spi串口调试,PIC入门3,SPI通信和串口调试实验

    原标题:PIC入门3,SPI通信和串口调试实验 MSSP模块工作于SPI主控方式,这个可以直接在实验板上执行. 程序: //适合3EPIC实验板,配置PIC的MSSP模块工作于SPI主控方式下, // ...

  5. STM32环境下AS5048A14位磁旋转编码器SPI通讯调试记录——我学到的东西、遇到的问题、解决的过程

    ❤ 2019.3.16 事情是这样的. 在很多天以前,老师接了个项目,问我有没有意向,我谨慎的表达了我对新事物的好奇心,对新知识的求知欲,同时又委婉的表达了我的能力有限的实际情况,然后我以为事情就这么 ...

  6. rv1126平台spi屏调试

    我们使用的rv1126平台,屏ic ST7789,硬件使用6bit,由于不是8bit的,所以显示的颜色没有那么丰富 1.硬件原理图 2.dts配置 &rgb {status = "o ...

  7. BF609 CCES下的SPI驱动调试--就这样被它折磨了一周

    在CCES环境下,ADI 自带了驱动接口函数,为驱动调试省下一大杯子事:但是这为人熟知的SPI,在调试过程中还是遇到了挫折,几度想撞墙: 最大的折磨:死机. 实际的SPI驱动接口是全双工功能的,所以传 ...

  8. SPI,MCP2515调试总结

    转自http://www.xuebuyuan.com/2055253.html MCP2515是一SPI转CAN总线的芯片,对于CPU来说,CPU就是主设备,SPI就是从设备,所以在内核里,MCP25 ...

  9. 定制带有模拟器且支持ActiveSync调试的WINCE5.0 SDK

    目的:生成供Visual Studio和EVC开发WINCE5.0应用程序的SDK,且带有模拟器和直接连接设备的两种调试功能. 软件环境:WINCE5.0 Platform Builder 以下内容针 ...

  10. Nvidia Xavier Nx平台SPI接口调试记录

    1. 前言 现有的硬件使用CS0和CS1在一个SPI上连接一个FRAM和一个TPM模块,在Jetson Nano上运行ok. Xavier NX模块的问题是硬件控制芯片选择信号(CS0)的不同行为. ...

最新文章

  1. 160809230张钊
  2. 深度学习(10)TensorFlow基础操作六: 数学运算
  3. 教程:如何实现Java OAuth 2.0以使用GitHub和Google登录
  4. linux修改组的选项名字为,Linux用户、组及权限管理浅析
  5. 史上最走心的Webpack4.0中级教程——配置之外你应该知道事
  6. 《统计学习方法》读书笔记——感知机(原理+代码实现)
  7. java 存储输入_java将用户输入信息保存至txt文件
  8. arch linux安装和dwm窗口管理器安装
  9. 使用Java快速开发一个新闻爬虫项目
  10. 基于mvc架构的劳务管理系统
  11. 江苏计算机一级考试操作题题库,江苏省计算机一级考试填空题题库
  12. 大法将致:将Windows Server 2016打造成个人办公系统,WIN2016打造成超级WIN10,WIN2016优化设置
  13. jdk1.8 在綫英文+有道翻譯版
  14. (3.6A)不用库函数实现字符串拼接
  15. 计算机内存与外存有什么特点,为什么计算机要分内存与外存,内存与外存各有什么特点?...
  16. STM32MP157C-DK2->Develop on Arm® Cortex®-A7之 C语言开发uart例程
  17. 云宏大讲坛 | 饭局排桌子,排出了分布式资源调度高级规则
  18. 皕杰报表图表钻取超链接
  19. System.nanoTime()
  20. Undistort and Rectify Images based on OpenCV(python)

热门文章

  1. webtop搭建简单知识库粗略介绍
  2. [Android5 系列二] 1. 全实例之控件(Widget)
  3. circle loss代码实现_CenterNet之loss计算代码解析
  4. java笔_JAVA笔试题(基础一)
  5. Hie with the Pie(poj3311)
  6. swagger的使用(com.spring4all)
  7. python restful api_用Python语言写一个restful API
  8. java时间格式化yyyy
  9. 《快速软件开发》概要
  10. Firebug方便分解网页的小工具