c语言sscanf函数的用法是什么
317
2022-10-28
同步队列串行接口QSPI的应用
传输控制组的任意一个。当QSPI传输启动时,QSPI模块将从起始点开始依次发送准备好的数据直到结束点,整个过程无需CPU干预。典型的QSPI传输流程如图2所示,其中QP为传输队列指针,指向即将传输的数据。
2.1 ADS7843工作模式
2.2 ADS7843的数字接口
ADS7843的数字接口包括片选CS、串行数据输入DIN、串行数据输出DOUT、时钟输入DCLK、中断信号PENIRQ五个引脚,能与具有串行接口的微控制器或数字信号处理器进行数据交换。处理器与ADS7843之间需要24个串行时钟周期才能完成一次完整的转换。前8个时钟周期用于向ADS7843提供一个控制字节,该控制字节组成如下:
S位为“1”时表明控制字节的开始;A[2:0]用于选择量化通道,“001”选择X通道,“101”选择Y通道;MODE位为“1”时选择8位量化精度,为“0”时选择12位量化精度;SER/DFR位为“1”时选择单端模式,为“0”时选择差分模式;PD[1:0]用于选择一种省电模式。控制字传输完后,接下来的16个时钟周期用于传输量化后的坐标数据。
ADS7843数字接口还有以下特点:片选低电平有效,时钟空闲时为低电平,时钟的上升沿采样串行数据。
3 基于ColdFire处理器QSPI接口的触摸屏驱动设计
触摸屏控制芯片ADS7843与ColdFire系列处理器的硬件连接图如图4所示。
ADS7843数字接口的4个引脚与COLDFire处理器QS-PI模块对应引脚相连,中断信号引脚PENIRQ与处理器外部中断引脚IRQ4相连。注意,需要10kΩ上拉电阻。
3.2 软件设计
从触摸发生到获取触摸点坐标的过程如下:触摸发生时,ADS7843会通过PENIRQ引脚触发一个中断,在中断子程序中首先应延迟10~20 ms以去除抖动带来的影响,然后向ADS7843发送控制字获取X、Y坐标。
获取一个坐标的值需要向ADS7843输入24个时钟周期。对QSPI模块来说,可以把这24个周期作为3次8位的传输队列,或1次8位、1次16位的传输队列。这里选择3次8位传输队列的方式。QSPI初始化代码如下:
其中,QSPI_QMR和QSPI_QWR为QSPI寄存器QMR和QWR的地址。获胜X坐标函数代码如下:
获取Y坐标函数代码同获取X坐标函数代码基本一致,只需要将发送给ADS7843的控制命令修改为0xD0,表示选择Y通道,12位精度,差分模式。
为观察QSPI模块与ADS7843是否能正确地进行通信,使用Agilent1673G逻辑分析仪对4个引脚的时序进行了捕捉。图5显示了读取X坐标时的时序图,4个引脚从上到下依次是片选CS、串行时钟DCLK、串行数据输入DIN、串行数据输出DOUT。从图中可以清楚地看到,在前8个时钟周期,处理器向ADS7843输入了控制字;在第10个时钟处,ADS7843开始输出12位的量化数据;最后3个时钟,ADS7843将输出线拉低。
结 语
QSPI模块的队列机制加快了数据传输速度,减少了CPU的干预。除此之外,该模块提供了对时钟有效电平、采样沿、片选电平、传输数据位数等的自由配置,使其能灵活地与各种具有串行接口的设备进行通信。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~