基于MTK平台核心板的智能巡检仪研发
扫描二维码
随时随地手机看文章
引 言
台湾联发科技股份有限公司(MTK)提供的完整的手机、平板产品解决方案在国内市场占有率很高[1]。MTK 相比高通平台准入门槛低,拥有更大的用户群体,更多的开放资料可供参考。MTK chipsets 高集成套片方案和turnkey“交钥匙”政策使得手机及相关二次开发的工作量大大降低,使 MTK 平台在除手机以外的专业领域中应用成为可能。
目前,移动智能设备的开发往往侧重于特定的应用领域, 如车载平台、射频识别、智能网关等[2]。在某一领域,这些设备往往功能相近、硬件系统相似,如果将处理器、射频模块、存储器、通信模块、电源管理等底层通用的模块集成在一起, 封装成一个大的“芯片”,并将常用接口引出,则整机的设计工作将大大简化,而这个大芯片我们称其为“核心板”。平台核心板实物图如图 1 所示。将核心板作为一个独立模块分离出来,用户只需要添加显示屏、按键、传感器等外设,利用核心板搭载的安卓智能操作系统接上电池就能工作,这种“核心板+ 外设扩展”搭积木式的设计模式不仅降低了硬件的开发难度, 还提高了整机的稳定性和可维护性。
1 巡检仪设计方案
1.1 核心板选型
某煤矿安全管理项目需要开发一款手持巡检记录仪,要求具有“三违”现场取证、下井作业人员识别卡检测、巡更轨迹信息记录、井下设备资产管理、蓝牙通信、WiFi 语音通话、图片视频采集及无线传输功能 [3]。根据上述功能需求,本文采取“核心板 + 外设扩展”的思路来实现。本设计采用MTK 手机平台、MT6572 处理器及苏州煜瑛微电子公司生产的YYW-M-6572 型核心板,该产品具有集成度高、功能完善、体积小、功耗低的优点。核心板主要由MT6627 WiFi/ GPS/BT/FM 四合一通信 芯片、MT6572 CPU、MT6166 RF Transceiver 射频模块、MT6323 电源管理芯片、AW3210 充电管理芯片、SKY77590 功放芯片、存储芯片构成。其功能模块示意图如图 2 所示, 有GPIO、UART、SPI、I2C、USB 等常用接口,且具有 WiFi、蓝牙、GSM 等常用通信模块,具有很强的可扩展性。
巡检记录仪的外设扩展部分除了可进行通用的LCD 及电容触摸屏CTP、5M 自动对焦摄像头等基础外设扩展,还可针对井下设备资产管理和人员身份识别而采用非接触式的RFID 自动射频识别技术,分别采用了 2.4 GHz NORDIC nRF24LE1 芯片和 13.56 MHz NXP MFRC522 射频芯片[4]。
1.2 扩展外设选型
2.4 G 无线传输模式在无遮挡的环境下, 识别距离大约为几十米,能满足设备信息动态管理的要求。读卡芯片采用 NRF24LE1 芯片, 对应的射频卡为有源卡, 内部也采用NRF24LE1 芯片,由纽扣电池供电。由于芯片内置高速单片机, 数据接收发送程序固化在芯片内部,采用UART 接口接收上位机指令,读卡器能对射频卡进行读写操作[5]。
人员识别采用 13.56 MHz 的短距离射频识别。卡片为采用无线感应方式供电的无源卡, 兼容 ISO/IEC14443A 及MIFARE 协议,价格低廉,应用广泛。读卡芯片采用NXP 公司生产的MFRC522 芯片,具有低电压、低功耗、小尺寸、低成本等优点, 兼容 ISO/IEC14443A 及MIFARE 模式。采用SPI 接口与上位机通信[6]。巡检仪整机设计方案图如图 3 所示。
2 软件设计
MTK 提供的 Turn key Solution 模式将芯片与手机开发所需的软件平台乃至第三方软件捆绑销售,提供了较健全的多媒体平台解决方案。MTK 源代码由核心板供应商提供,目前推荐使用Ubuntu 10.04 搭建MTK android 编译环境[7,8]。
安卓智能手机客户端应用程序是用Java 作为编程语言, 通过Eclipse 创建开发,使用Java 开发包 JDK 及安卓 ADT 进行软件开发和调试 [9]。软件开发的主要工作是调试 UART 和SPI 接口的驱动程序。下面分四步简单介绍SPI 驱动开发及应用测试步骤:
在 SPI 驱动中,有两个重要的结构,分别为 spi_device 与spi_driver。Spi_device 板信息用spi_board_info 结构体来描述,它描述了SPI 外设(RC522 模块)使用的主机控制器序号、片选信号、数据比特率、传输方式等。因此要先填充structspi_board_info 这个结构体。注册SPI 设备与驱动,通过 SPI 总线实现数据读写。这里注册一个混合设备 :misc_ register(&rc522_misc_device);在 read,write 操作里都会调 用 到 WriteRawRC(unsigned char Address,unsigned char value)函数,在这个函数里才真正实现了通过 SPI 对RC522寄存器的读写操作。
3 添加定时器
为了节省 CPU 资源,需要添加一个定时器,每隔一定的时间读卡一次。把 pi_register_driver(&rc522_driver)和misc_register(&rc522_misc_device)放 进 rfid_rc522_init() 函数即可进行编译调试。
编译 rc522 驱动程序, 并通过adb usb 把生成的 rfid_ rc522.ko copy 到 /system 目录下, 然后 insmodrfid_rc522.ko, 这样驱动就以模块的形式加载进了内核系统。加载成功后,在/dev 目录下就会有rfid_rc522_dev 目录。
4 应用程序测试
驱 动 中 的 write函 数 为 rc522_write(structfile*filp, constchar*buf,size_tcount,loff_t*f_pos);用户空间的应用程序write函数为 write(rc522_fd,bufpw1,sizeof(bufpw1));应用程序中的write函数通过调用操作系统中的核心函数sys_ write(unsignedintfd,constchar*buf,size_tcount)来实现二者的联系,而 sys_write()函数又对驱动中的 rc522_write() 进行了封装。
结 语
本文介绍了一种基于核心板的快速产品开发方案,使用MTK 平台核心板运行Andriod 4.4.2 操作系统。充分利用了手机平台的高可靠性、电源管理的智能性,使得产品的设计周期缩短,可靠性增强。用户只需要在手机系统的架构上做调整, 专注软件设计而不必担心硬件的可行性 [10]。这为各专业领域移动智能设备的开发提供了新思路,特别适用于需要通信功能的手机平台,同时也为掌握手机设计技术的行业用户打破了行业技术壁垒,可以充分利用市场上成熟的手机生产供应链, 具有较高的推广价值[11]。