基于 NXP QN9080 平台 PAW3335 调试步骤详解

基于 NXP QN9080 平台 PAW3335 调试步骤详解

  • 前言

首先,一个鼠标,它最关键、最重要的一个功能就是鼠标光标的移动,光标的移动主要与 sensor 的工作有关,把 sensor 采集到的坐标值传输到电脑端,实现光标的移动。

这个过程理解起来并不难,在调试过程中也让人觉得简单而往往会犯一些很细节的错误。细节性错误会让你摸不着头脑,所以调试过程必须严格按照规格书要求去实现,

以避免后期开发发生产品不良的现象。本文以 NXP QN9080 平台为例子给大家进行讲解。


  • 环境搭建

2.1 SDK 及软件下载

本文基于 NXP QN9080 IC,SDK 和软件可在 NXP 官网 https://mcuxpresso.nxp.com 下载。

2.2 硬件

本文基于 QN9080 官方板进行开发,官方板下图所示:

  • 开发软件

SDK 支持 IAR、Keil、MCUXpreeso IDE 三种开发软件、本文以 IAR 为开发环境作为介绍。

  • 鼠标传感器介绍

本文中所介绍的是由 PixArt Imaging 公司推出的新型低功耗游戏导航芯片 PAW3335DB-TZDU,适用于有线和无线游戏应用。它拥有最新的最先进的低功耗架构和自动电源

管理模式,使其成为电池操作的、功率敏感的无线游戏设备的理想选择。它提供了出色的游戏体验,具有高速和高分辨率的特点,即使在低功耗模式,以满足玩家的需求。

它封装在一个 8 针交错双直插式封装 (DIP) 中,设计用于 LOAC-LSG1 镜头,以实现最佳性能。

PAW3335 的 CPI 最高可达 16000,电源功耗相当低,对于无线游戏鼠标来说是非常适用的。

PAW3335DB-TZDU 基于光学导航技术,通过光学获取连续的表面图像(帧),并通过数学方法确定运动的方向和幅度,来测量位置的变化。PAW3335DB-TZDU 包含一个

图像采集系统 (IAS)、一个数字信号处理器 (DSP) 和一个三线串口。该系统通过透镜和照明系统获取显微表面图像。这些图像由 DSP 处理,以确定运动的方向和距离。

DSP 计算 AX 和 AY 的相对位移值。外部微控制器读取并转换来自芯片串口的 AX 和 AY 信息到 PS2、USB 或 RF 信号,然后将它们发送给主机 PC。

下图是 PAW3335 的引脚功能描述:

在硬件环境搭建中,要严格按照每个引脚功能来连接,规格书中已经提供出了官方参考原理图,我们只要按照同样的连接方式就可以了。


对于原理图中所给出的元件值,我们也要一一对应,参考图中所用的是SPI通信方式。在规格书中提供了红外二极管的电阻推荐值,能够兼容百分之一的误差值。

在 R1 的电阻选值中,我们要注意到一个细节,随着R1的电阻值不同,对应的 SPI 时钟频率值也是不同的。比

如要实现 8K Report Rate,硬件上要把R1的电阻值改为 240 Ω,才能符合条件。

在调试过程中,还需要考虑到一个非常重要的点:时序要求。考虑到它们所需要满足的最大、最小时序要求,必须严格按照规格书来调试,

如果时序不满足要求,sensor 是无法正常工作的。


时序要求对于不同芯片来说,通常所用的 delay 中对应的数值会有所不同,因为不同的芯片它的时钟值会有所不同,我们可以通过对一个普通 IO 进行电平延时的拉高拉低,

再用逻辑分析仪或者示波器进行测量来得出每部分的时序。
在完成了硬件环境搭建和时序要求之后,即可按照规格书进行软件开发,这必须按照规格书规规矩矩地进行调试,

在上电初始化中,有很多个寄存器需要进行初始化相关部分可以参考规格书:

第一部分是上电的初始化配置:


第二部分是加载上电初始化寄存器配置:

其中,完成主要部分的初始化后,还需要读取寄存器 0x20 的时间间隔为 1ms,直到 0x0F 被读取到 55ms,

这个寄存器读取时间间隔必须以 1ms 的时间间隔执行,时间间隔为 +/-1%。



在上电初始化完成后,就可以直接读取坐标了,这必须先确保初始化过程和 SPI 规格符合规格书要求。

除了上电序列,规格书中还给出了断电序列,在此不加以描述。

规格书中有对 SPI 通信部分的描述,如信号描述、运动位定时、芯片选择操作、以及 SPI 读写操作中的时序要求和通信过程描述等。

在本文中,QN9080 关于 PAW3335 的代码调试中,主要分为以下部分:

第一部分是 IO 的初始化以及片选高低的配置,动作位 motion 的读 IO 电平设置以及延时函数的声明等。

第二部分是 SPI 读写函数的调用,本文中所用的是阻塞式函数

SPI_MasterTransferBlocking(SENSOR_SPI_MASTER, &xfer);但在实际的产测过程中,这个函数并不适用,会发生一些产品不良的情况,本文只是以此为例。

如果用在产测中,需要用到 SPI_WriteData 函数,这些函数在 fsl_spi.c 头文件中均有说明。


读写函数参数说明:第一个表示成主机向从机传输的地址或数据,第二个是从机寄存器向主机传输数据,也即是读取到的数值,第三个是数据长度,

第四个表示一个布尔值,决定了主机到从机数据传输过程是否已经结束,如果为 false,说明传输还未结束,传输结束为 true。

下面分别是读函数、写函数的具体代码,读写过程和时序可从规格书中获取:

以上是读函数,主机向从机发送一个地址,从机将这个地址指向的寄存器值传送回主机。

以上是写函数,写函数中包含了写入的寄存器地址以及要写入的值,按照时序要求,我们会先写入寄存器的地址,

传输给从机,然后再将需要写入的值传输到从机的寄存器地址中。


PAW3335 的 IO、SPI 配置初始化函数如上,通过对片选脚的拉高来达到重置过程,对一些时钟的使能,SPI 相位、极性、数据传输方向、波特率值、

以及主机 SPI 初始化函数调用等,然后是上电序列函数的调用,对寄存器 0x5B 进行写值主要是因为实际应用中,sensor 刚上电的时候坐标值可能是任意情况的,

需要通过实际情况来对这个寄存器进行写值操作,来达到正常使用。最后是 sensor 的坐标值获取函数,对应规格书中的突发模式操作,

在完成上电初始化之后,即可进行坐标值的读取,芯片会对以下 12 个 Byte 进行报告,

只需把这些从寄存器读回来的值进行保存传输,即可把数值打包给电脑端:

下面是 QN9080 中具体使用的代码部分:

可以通过规格书上的相关操作后,读取到坐标值,包含鼠标 X 的高八位、低八位,以及 Y 的高八位、低八位。


PAW3335 的功能非常丰富,还有原始数据抓取操作,是一种从单个帧下载完整数组原始数据值的方法。一旦 rawdata 抓取被启用,下一个完整的帧图像

将被存储到内存,可通过一系列对寄存器操作的过程来实现。

其次是无线模式电源管理,可实现不同模式下的低功耗状态:


通用升降切断设置万能升力切断设置,适用于所有 PixArt 标准游戏表面。当与 LOAC 镜头配合时,lift-cut 可设置为 1mm 和 2mm,根据下表的寄存器设置。

请注意,根据推荐的上电顺序启动传感器时,电梯切断默认设置为 1mm。

规格书部分还包含了寄存器列表,对各个寄存器功能的描述,以及各个寄存器的使用方法,写值操作对应的功能等,非常实用。
 
下图为 PAW3335 调试结果实测:

以上则是对 PAW3335 调试过程的全部讲解了,对于这个 sensor,我们也有相关产品对此有相当多的开发,

可以搜索 QN9080 相关博文进行订阅关注,QN9080 全家桶,你值得拥有。后续我还会给大家推出技术博文,欢迎订阅关注我的博文。

  • 参考资料

【1】《 QN908x user manual 》

【2】PAW3335DB-TZDU-DS-R1.12-270619.pdf

 

 

技术文档

类型标题档案
硬件Datasheet

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论