基于ARM9的三轴加速度传感器动作识别装置设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于ARM9的三轴加速度传感器动作识别装置设计摘要:该装置以ARM9为核心,采用linux操作系统,驱动飞思卡尔的三轴陀螺仪mma7660fc传感器采集外部动作的数据。加以算法分析处理,即可得到方向的角度变化、震动、敲击的外部信息。该装置可用于MP3、PDA、MID、智能手机等各种手持电子设备的人性化智能控制。关键字:三轴加速度传感器、linux操作系统、ARM9ARM9-basedthree-axisaccelerationsensordevicedesignedtoidentifytheactionAbstract:ThedevicetoARM9core,usinglinuxoperatingsystem,driversofthree-axisgyroscopemma7660fcFreescalesensordataacquisitionexternalaction.Toalgorithmanalysisandprocessing,canbeobtainedbychangingtheangleoforientation,vibration,percussionexternalinformation.ThedevicecanbeusedforMP3,PDA,MID,smartphonesandotherhandheldelectronicdevices,humanintelligentcontrol.Keywords:three-axisaccelerometer,linuxoperatingsystem,ARM90引言随着电子消费品性能和功能的不断发展,消费者对产品的各种人性化的操作的需求也不断提高,因此,在手持设备等便携电子产品上使用各种智能传感器采集外部各种信息,并用于完善设备本身功能的控制,使其更加人性化,具有现实意义。1装置概述该装置由ARM9处理器结合linux操作系统,通过i2c总线驱动,获取ma7660fc采集外部动作:设备被转动方向的变化和角度的大小,和速度的快慢,震动或被敲击的数据,并进行适当的算法处理,提取出有用的控制信息。其硬件原理图如图1所示,其软件系统结构如图2所示。图1I2CconnectiontoMCU3软件设计3.1驱动核心代码分析……staticstructtimer_list*sensor_timer;staticstructwork_structsensor_work_q;……//定时器中断服务程序staticvoidsensor_timer_handler(unsignedlongdata){//调度工作队列if(schedule_work(&sensor_work_q)==0){sensor_dbg(cannotschedulework!!!\n);}}……//注册一个内核定时器staticvoidsensor_timer_registertimer(structtimer_list*ptimer,unsignedinttimeover){init_timer(ptimer);ptimer-expires=jiffies+msecs_to_jiffies(timeover);ptimer-data=(unsignedlong)NULL;ptimer-function=sensor_timer_handler;add_timer(ptimer);}……//定时器中断底半部处理函数staticvoidsensor_fetch_thread(structwork_struct*work){mma7660_sensor_get_accel();sensor_timer_registertimer(sensor_timer,sensor_duration);}int__inittcc_sensor_init(void){……//初始化工作队列并将工作队列与处理函数绑定INIT_WORK(&sensor_work_q,sensor_fetch_thread);return0;}3.2测试应用程序分析……#includelinux/i2c.h#includelinux/i2c-dev.h……intmain(intargc,char**argv){//打开设备文件fd=open(/dev/sensor,O_RDWR);……//读数据xyz数据ret=read(fd,&calib_data,sizeof(calib_data));……//读取加速度数据ioctl(fd,IOCTL_SENSOR_GET_DATA_ACCEL,&accel);……//设置采样时间ioctl(fd,IOCTL_SENSOR_SET_DELAY_ACCEL,&delay_time);……//读取驱动状态标志位ioctl(fd,IOCTL_SENSOR_GET_STATE_ACCEL,&accel.resolution);……//设置加速度值ioctl(fd,IOCTL_SENSOR_SET_CALIB_ACCEL,&accel);……//设置状态标志位ioctl(fd,IOCTL_SENSOR_SET_STATE_ACCEL,&set_state_flag);……}图2LinuxI2C体系结构参考文献:【1】宋宝华设备驱动开发详解(第二版)【2】Linux设备驱动程序(第三版)【3】3-AxisOrientation/MotionDetectionSensordatasheetsheetofFreescaleSemiconductorclienti2c设备驱动i2c_devI2C核心AlgorithmI2C适配器与s3c2440适配器硬件相关的代码应用程序I2c适配器Mma7660fc

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功