L3G4200D三轴数字陀螺仪在Linux下的I2C驱动设计

合集下载

基于Linux平台信号处理驱动程序设计

基于Linux平台信号处理驱动程序设计
t e dee to h tc in,i iilz to fPCIde ie i rv r,i t ra e o ie n pp iai n s fwae, i e r to r — n taiai n o vc n d ie n e fc fdrv r a d a l to o c t r ntrup in p o
1 引言
随着 计 算 机技 术 的快 速发 展 , 别 是 多 核处 理 特
G A实现 , 内部 框 图如 图 1 示 。数字 下变 频 之后 其 所 的基带 复数信号 由通 用计算 机 处理 。A 和 A 2是 D1 D 两个独立 的 I 6位模 数 转换 器 , 它们 分 别对 输 入 的模
频采 样方案 , 使用 数 字下 变频 获 得 基带 信 号 , 用 并 采 采样 率为 4 MH 。对 于 A 1和 A 2通 道 , 0 z D D 由于采 样 率符合带通 采 样定 理 , 字下 变频 的 N O可 以使 用 数 C 10、 、 、 ~l0的简单系数 , 大大节省 了计 算资源 , 数字 下 变频 的数据经 过 FR滤波 器后 是 由 IQ组 成 的复 数 I 、
陈 明 李 重 阳
( 西安 电子 工程研 究所 西安 700 ) 1 1 0
【 摘要 】 本文在介绍 L u i x系统 P I n C 总线驱动程序的 实现方法基础上 , 结合具体项 目讨论 了驱动程
序 中 P I 备 的检测 、 始化 、 动程序 和应 用程 序 的接 口、 动 的 中断处理 等 , 实现 了数 字 下 变 C设 初 驱 驱 并
c s i g o ii g a e dic s e e sn fdrvn r s u s d,a h aa ta s si n fo b s b n o Liux p afr i mp e n e fe nd t e d t r n miso r m a e a d t n lto m s i lme t d a r t d g tldo o v rin. De in o u rv r s man y p e e t d. i i wn c n e so a sg fPCI b s d ie si il r s n e Ke ywo d r s:Li u n x OS;PCIbu ;DDC;DMA;d vc rv r s e ie d ie

linux i2c 读写函数

linux i2c 读写函数

linux i2c 读写函数在Linux中,I2C是一种常用的通信接口,它可以用于I2C总线设备之间的通信。

I2C的读写操作是通过内核提供的I2C读写函数来完成的。

I2C读写函数的核心是i2c_transfer()函数,该函数可以完成I2C设备的读写操作。

函数的定义如下:int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num);其中,adap是I2C总线的适配器,msgs是I2C数据结构体,num 是I2C数据结构体的个数。

i2c_msg结构体定义如下:struct i2c_msg {__u16 addr; /* I2C设备地址 */__u16 flags; /* I2C消息标志 */__u16 len; /* 数据长度 */__u8 *buf; /* 数据缓冲区 */};其中,addr是I2C设备地址,flags是消息标志,指定了读写操作,len是数据长度,buf是数据缓冲区。

I2C读写函数的使用过程如下:1. 初始化I2C适配器和I2C设备地址;2. 填写I2C数据结构体;3. 调用i2c_transfer()函数进行I2C读写操作;4. 根据返回值判断操作是否成功。

除了i2c_transfer()函数之外,还有一些常用的I2C读写函数,如i2c_master_send()和i2c_master_recv()函数,它们可以分别用于I2C主设备的发送和接收操作。

它们的使用方法与i2c_transfer()函数类似。

总之,在Linux中进行I2C读写操作是非常方便的,只需要调用相应的I2C读写函数,就可以完成数据的读写操作。

Linux步进电机驱动的设计(完全)

Linux步进电机驱动的设计(完全)
பைடு நூலகம்
11.3 步进电机驱动的设计
#include <linux/iobuf.h> #include <linux/major.h> #include <linux/blkdev.h> #include <linux/capability.h> #include <linux/smp_lock.h> #include <asm/uaccess.h> #include <asm/hardware.h> #include <asm/arch/cpu_s3c2410.h> #include <asm/io.h> #include <linux/vmalloc.h> #define ELECTROMOTOR_MAJOR 140 #define ELECTROMOTOR_6 (ELECTROMOTOR_1 + 6) #define ELECTROMOTOR_7 (ELECTROMOTOR_1 + 7) #define electromotor_sle (*(volatile unsigned long *)ELECTROMOTOR_GPACON) #define electromotor_sle_data (*(volatile unsigned long *)ELECTROMOTOR_GPADATA) devfs_handle_t devfs_electromotor;
11.2 嵌入式Linux步进电机的驱动
• 11.2.1 步进电机设备驱动程序设计流程 基于操作系统的驱动程序调用过程如图11.2所示。
11.2 嵌入式Linux步进电机的驱动
– 编写模块程序的时候,必须提供两个函数,一个是int init_module(void), 供insmod在加载此模块的时候自 动调用,负责进行设备驱动程序的初始化工作。 init_module函数返回0以表示初始化成功,返回负数表 示失败。另一个函数是void cleanup_module (void), 在模块被卸载时调用,负责进行设备驱动程序的清除 工作。 – 在成功的向系统注册了设备驱动程序后(调用 register_chrdev成功后), 就可以用mknod命令来把 设备映射为一个特别文件,其它程序使用这个设备的 时候,只要对此特别文件进行操作就行了。 – 在内核升级到2.4版本后,系统提供了两个新的函数 devfs_register和devfs_unregister,用于设备的注册与 卸载。

i2c_rtc_rx8025驱动总结

i2c_rtc_rx8025驱动总结

ARM : at91-sam9x5ekLinux内核:linux-2.6.39时钟芯片:rx8025 SA/NB第一种方法:Rx8025驱动程序在该linux内核中已经包含,路径为:drivers/rtc/rtc-rx8025.c所以在内核中增加驱动只需要配置即可:1.执行make ARCH=arm menuconfig 进入菜单选项,选择RTC配置,选中EPSONRX-8025SA/NB,同时一定要去掉cpu自带的时钟。

2.i2c support 需要选中I2C Hardware Bus support中GPIO-based bitbanging I2C,否则,即使rtc驱动正确,也不能使用,提示:drivers/rtc/hctosys.c: unable to open rtc device (rtc0)。

问题源自,驱动配置正确,I2C驱动没有加载正确,udevd不能创建rtc0设备节点3.在arch/arm/mach-at91/board-sam9x5ek.c中添加信息,注意此处的name名称要与驱动程序中id_table中的名称保持一致。

而在linux某些匹配机制中,设备名称是与驱动名称相一致。

如果名称不能正确匹配,系统是不会执行probe函数的。

另外需要注意的是i2c地址,手册上给出的地址一般都是带有读写位的,而程序中的地址需要把最后一位的读写位去掉,取前面的7位。

Rx8025的地址为0x64,相应的程序中的地址应该为0x32。

否则会提示对寄存器的操作失败。

4.驱动正确配置后,生成相应的文件/dev/i2c-0/dev/rtc0/sys/bus/i2c/drivers/rtc-rx8025/sys/bus/i2c/drivers/0-0032。

linux下iic(i2c)读写AT24C02

linux下iic(i2c)读写AT24C02

/jammy_lee/linux下iic(i2c)读写AT24C02linux驱动2010-02-09 16:02:03 阅读955 评论3 字号:大中小订阅linux内核上已有iic的驱动,因此只需要对该iic设备文件进行读写则能够控制外围的iic器件。

这里以AT24C02为对象,编写一个简单的读写应用程序。

iic设备文件在我的开发板上/dev/i2c/0 ,打开文件为可读写。

AT24C02的器件地址为0x50 ,既是iic总线上从器件的地址,每次只读写一字节数据。

/************************************************************///文件名:app_at24c02.c//功能:测试linux下iic读写at24c02程序//使用说明: (1)// (2)// (3)// (4)//作者:jammy-lee//日期:2010-02-08/************************************************************///包含头文件#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/ioctl.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/select.h>#include <sys/time.h>#include <errno.h>//宏定义#define Address 0x50 //at24c02地址#define I2C_RETRIES 0x0701#define I2C_TIMEOUT 0x0702#define I2C_SLAVE 0x0703 //IIC从器件的地址设置#define I2C_BUS_MODE 0x0780typedef unsigned char uint8;uint8 rbuf[8] = {0x00}; //读出缓存uint8 wbuf[8] = {0x01,0x05,0x06,0x04,0x01,0x01,0x03,0x0d}; //写入缓存int fd = -1;//函数声明static uint8 AT24C02_Init(void);static uint8 i2c_write(int fd, uint8 reg, uint8 val);static uint8 i2c_read(int fd, uint8 reg, uint8 *val);static uint8 printarray(uint8 Array[], uint8 Num);//at24c02初始化static uint8 AT24C02_Init(void){fd = open("/dev/i2c/0", O_RDWR); //允许读写if(fd < 0){perror("Can't open /dev/nrf24l01 \n"); //打开iic设备文件失败exit(1);}printf("open /dev/i2c/0 success !\n"); //打开iic设备文件成功if(ioctl(fd, I2C_SLAVE, Address)<0) { //设置iic从器件地址printf("fail to set i2c device slave address!\n");close(fd);return -1;}printf("set slave address to 0x%x success!\n", Address);if(ioctl(fd, I2C_BUS_MODE, 1)<0) //设置iic总线模式printf("set bus mode fail!\n");elseprintf("set bus mode ok!\n");return(1);}/*uint8 AT24C02_Write(uint8 *nData, uint8 Reg, uint8 Num){write(fd, &Reg, 1); //usleep(100); //延时100uswrite(fd, nData, Num);usleep(1000*4); //延时4msreturn(1);}uint8 AT24C02_Read(uint8 nData[], uint8 Reg, uint8 Num) {write(fd, &Reg, 1);usleep(100); //延时100usread(fd, nData, Num);usleep(1000*4); //延时4msreturn(1);}*///at24c02写入一字节static uint8 i2c_write(int fd, uint8 reg, uint8 val){int retries;uint8 data[2];data[0] = reg;data[1] = val;for(retries=5; retries; retries--) {if(write(fd, data, 2)==2)return 0;usleep(1000*10);}return -1;}//at24c02读取一字节static uint8 i2c_read(int fd, uint8 reg, uint8 *val){int retries;for(retries=5; retries; retries--)if(write(fd, &reg, 1)==1)if(read(fd, val, 1)==1)return 0;return -1;}//输出数组static uint8 printarray(uint8 Array[], uint8 Num) {uint8 i;for(i=0;i<Num;i++){printf("Data [%d] is %d \n", i ,Array[i]);}return(1);}//主函数int main(int argc, char *argv[]){int i;AT24C02_Init();usleep(1000*100);for(i=0; i<sizeof(rbuf); i++)if(i2c_read(fd, i, &rbuf[i]))break;printarray(rbuf ,8);printf("Before Write Data \n"); sleep(1);for(i=0; i<sizeof(rbuf); i++)if(i2c_write(fd, i, wbuf[i]))break;printarray(wbuf ,8);printf("Writing Data \n");sleep(1);for(i=0; i<sizeof(rbuf); i++)if(i2c_read(fd, i, &rbuf[i]))break;printarray(rbuf ,8);printf("After Write Data \n");close(fd);}。

MWC飞行控制器设置说明书

MWC飞行控制器设置说明书

感谢选用克瑞斯MWC系列飞控!本手册将引导您从零开始,逐步安装、调整和飞行,并提供一些基本技巧,让您可以轻松掌握此高性价比飞控的使用经验。

本手册将会根据MWC程序的升级进行相应更新,如有需要,请打印出来阅读。

MWC对遥控器的功能有一定要求,通道数不少于5个,其中一个为两段式或者三段式开关,需要有通道中立点和行程调整功能。

从未使用过的MWC,需按照以下步骤设置和安装好,才能开始飞行时的调试:1.烧写Bootloader到飞控上的单片机,让飞控可以自由导入程序;2.用Arduino编辑MWC程序,然后用FTDI工具把程序上传到飞控;3.安装到机架上,接好所有相关的连接线;4.飞行前用MWC GUI配置程序,对飞控进行基本设置;5.外场飞行时用电脑、蓝牙模块或者LCD模块来调整PID及其他参数。

接下来将按照以上步骤开始配置您的飞控。

1.烧写Bootloader,我们已经在测试时烧好飞控的Bootloader,否则拿到手也启动不了,更没办法刷程序,所以您不必再理会这个。

如果您的Bootloader出现问题,导致无法启动飞控,请与我们联系。

2.请先准备好以下驱动和程序:以下驱动和程序都可以用于苹果MacOS、Linux与Windows操作系统,我们以Windows 7/32bit为例进行说明。

FTDI工具驱动,FTDI是一种USB转TTL电平的信号转换工具,我们用它来上传需要的程序到飞控,调试时也会用到。

驱动下载后需要手动安装,安装好以后,电脑会出现一个COM口:例如本机上分配到的是COM3,在不同电脑上分配到的端口可能会不一样,但不影响使用。

请务必完成此安装步骤,否则无法上传程序到飞控。

下载地址:/Drivers/CDM/CDM20814_WHQL_Certified.zipMWC程序源代码。

MWC程序升级较为频繁,每次更新都会出现实用的新功能,或者某方面性能得到提高,方便我们随时享用最好的效果。

下载过来的MWC程序包,包括源代码和GUI配置程序两部分,请解压文件。

Linux设备驱动程序设计入门.doc

深入浅出Linux设备驱动编程之引言目前,Linux软件工程师大致可分为两个层次:(1)Linux应用软件工程师(Application Software Engineer):主要利用C库函数和Linux API进行应用软件的编写;(2)Linux固件工程师(Firmware Engineer):主要进行Bootloader、Linux的移植及Linux设备驱动程序的设计。

一般而言,固件工程师的要求要高于应用软件工程师的层次,而其中的Linux设备驱动编程又是Linux 程序设计中比较复杂的部分,究其原因,主要包括如下几个方面:(1)设备驱动属于Linux内核的部分,编写Linux设备驱动需要有一定的Linux操作系统内核基础;(2)编写Linux设备驱动需要对硬件的原理有相当的了解,大多数情况下我们是针对一个特定的嵌入式硬件平台编写驱动的;(3)Linux设备驱动中广泛涉及到多进程并发的同步、互斥等控制,容易出现bug;(4)由于属于内核的一部分,Linux设备驱动的调试也相当复杂。

目前,市面上的Linux设备驱动程序参考书籍非常稀缺,少有的经典是由Linux社区的三位领导者Jonathan Corbet、Alessandro Rubini、Greg Kroah-Hartman编写的《Linux Device Drivers》(目前该书已经出版到第3版,中文译本由中国电力出版社出版)。

该书将Linux设备驱动编写技术进行了较系统的展现,但是该书所列举实例的背景过于复杂,使得读者需要将过多的精力投放于对例子背景的理解上,很难完全集中精力于Linux驱动程序本身。

往往需要将此书翻来覆去地研读许多遍,才能有较深的体会。

(《Linux Device Drivers》中英文版封面)本文将仍然秉承《Linux Device Drivers》一书以实例为主的风格,但是实例的背景将非常简单,以求使读者能将集中精力于Linux设备驱动本身,理解Linux内核模块、Linux设备驱动的结构、Linux设备驱动中的并发控制等内容。

Linux设备驱动开发流程(转)

Linux设备驱动开发流程(转)⼀、Linux设备的分类字符设备、块设备、⽹络设备,三种设备之间的区别是数据的交互模式,分别为:字节流、数据块、数据包。

⼆、VFS核⼼结构体VFS核⼼结构体定义在"linux/fs.h"头⽂件中。

1、struct inode结构体记录⽂件的属主、访问时间等信息。

当第⼀次打开⽂件的时候由VFS创建并初始化。

当⽂件的所有引⽤都退出后,释放inode; 如果⽤户态有多个⼈同时打开⼀个⽂件,则VFS只需要分配⼀个inode。

2、struct file结构体对应⽤户态的open操作。

如果多次打开同⼀个⽂件,内核会⽣成多个file。

file中记录⽂件的打开⽅式,⽂件内部指针等。

当⽂件彻底关闭时,释放file。

3、struct file_operations结构体该结构体包含若⼲函数指针,这些函数由驱动来实现,并集中到file_operations中,注册到VFS。

驱动⼀般要实现的函数有:openreleasereadwriteunlocked_ioctl驱动可能会实现的有:pollmmapfasyncflushllseek三、字符设备驱动开发流程(1)确定硬件信息要确定硬件的数量,物理地址,中断号等信息;(2)为要⽀持的设备准备⼀个私有结构体内核并不要求必须有私有结构体,但如果驱动⽀持多个设备,最好设计⼀个。

私有结构体完全由驱动⼈员⾃⾏设计,⼀般来说,会把和设备相关的信息写⼊该结构体,⽐如设备的地址等。

(3)为要⽀持的每个设备分配对应的设备号设备号由char驱动分配,要求唯⼀。

⼀般来说,如果char驱动可⽀持多个类似的设备,则应该为这些设备选择⼀个主设备号,然后为每个设备选择⼀个特定的次设备号。

尽量挑选和其他驱动不⼀样的主设备号。

可以看/proc/devices,⽂件中记录了其他驱动选择的主设备号;也可以向内核申请,由内核分配⼀个主设备号。

#define DEV_MAJOR 50...dev_id = MKDEV(DEV_MAJOR, 0);(4)准备file_operations结构体函数集中包括open/release/read/write/unlocked_ioctl等函数,如果驱动⽀持多个设备,在函数中必须能区分⾃⼰访问的是哪个设备。

嵌入式Linux的LCD驱动的设计与实现 精品

嵌入式Linux的LCD驱动的设计与实现LCD Driver based on Linux第一章概述Linux操作系统有许多优点,最重要的就是它的内部实行细节对所有人都是公开的。

以前,操作系统的代码仅仅掌握在少数程序员手里,但是Linux使我们只要具备必要的技术能力,就可以方便的验证、理解、修改、移植操作系统,或者其中的某一部分。

驱动程序在Linux内核中扮演着特殊的角色。

它们使某个特定硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。

用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。

将这些调用映射到作用于实际硬件的设备特有操作上,是驱动程序的主要任务。

这些接口可以使驱动程序独立于内核的其他部分而建立,以模块的形式,在需要时动态的插入到内核中,在不需要时可以移出内核。

显示出了其良好的特性。

由于液晶显示器的大量需求,以及Linux操作系统众多的优点,因此,本题目的设计选择了以Linux作为嵌入式设备的操作系统,对于基于Linux的嵌入式LCD驱动,将会有很好的应用前景。

1.1本课题的研究意义LCD(液晶显示)模块满足了嵌入式系统日益提高的要求,它可以显示汉字、字符和图形,同时还具有低压、低功耗、体积小、重量轻和超薄等很多优点。

随着嵌入式系统的应用越来越广泛,功能也越来越强大,对系统中的人机界面的要求也越来越高,在应用需求的驱使下,许多工作在Linux下的图形界面软件包的开发和移植工作中都涉及到底层LCD驱动的开发问题。

因此在嵌入式系统中开发LCD驱动得以广泛运用随着高性能嵌入式处理器的普及和硬件成本的不断降低,尤其是Arm系列处理器的推出,嵌入式系统的功能也越来越强。

在多媒体应用的推动下,彩色LCD也越来越多地应用到了嵌入式系统中,如新一代掌上电脑(PDA)多采用TFT显示器件,支持彩色图形界面,图片显示和视频媒体播放。

掌上电脑(PDA)的操作系统有微软Window CE, PalmOS等。

两轮平衡小车说明书

电气电子工程学院自主创新作品两轮平衡小车摘要两轮自平衡小车具有体积小、结构简单、运动灵活的特点,适用于狭小和危险的工作空间,在安防和军事上有广泛的应用前景。

两轮自平衡小车是一种两轮左右平衡布置的,像传统倒立摆一样,本身是一种自然不稳定体,其动力学方程具有多变量、非线性、强耦合、时变、参数不确定性等特性,需要施加强有力的控制手段才能使其保持平衡。

本作品采用STM32单片机作为主控制器,用一个陀螺仪传感器来检测车的状态,通过dvr8800控制小车两个电机,来使小车保持平衡状态,通过2.4G模块无线通讯进行遥控来控制小车运行状态。

关键词:智能小车;单片机;陀螺仪。

目录一.前言 (4)一.两轮平衡车的平衡原理 (4)2.1 平衡车的机械结构..........................................................................错误!未定义书签。

2.2 两轮车倾倒原因的受力分析 (4)2.3 平衡的方法 (5)三.系统方案分析与选择论证 (5)3.1 系统方案设计 (5)3.1.1 主控芯片方案 (5)3.1.2 姿态检测传感器方案 (6)3.1.3 电机选择方案 (6)3.2 系统最终方案 (7)四.主要芯片介绍和系统模块硬件设计 (7)4.1.STM32单片机简介(stm32rbt6) (7)4.2.陀螺仪传感器 (8)4.3.TB6612 (8)4.4.编码器 (9)4.5. 主控电路 (9)4.6 电机驱动电路 (10)五.系统软件设计 (11)5.1 PID概述 (11)5.2 数字PID算法 (12)5.3 PID控制器设计 (13)六.硬件电路 (14)七.制作困难 (15)八.结论 (16)九.参考文献 (16)一.前言应用意义。

自平衡车巧妙地利用地心引力使其自身保持平衡,并使得重力本身成为运动动能的提供者,载重越大,行驶动能也就越大,具有环保的特点(胡春亮等,2007)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

( C o l l e g e o f I n f o r ma t i o n a n d C o mm u n i c a t i o n E n g i n e e i r n g ,No r t h U n i v e r s i t y o f C h i n a ,T a i y u a n 0 3 0 0 5 1 ,C h i n a )
a 叶技 2 0 1 4 年 第 2 7 卷 第 2 期
El e c t r o n i c S c i . & Te c h . /Fe b .1 5. 201 4
L 3 G 4 2 0 0 D三 轴 数 字 陀螺 仪在 L i n u x下 的 l 2 C驱 动 设 计
刘 洋 ,黄晋英
轴 数 字 陀螺 仪 实 时 的 高数 数 据 采 集 。 关键词 1 2 C总 线 ;L 3 G 4 2 0 0 D 陀螺 仪 ;设 备 驱 动
中图分类号
T P 2 7 3+. 2 2
文献标识码

文章编号
1 0 0 7~ 7 8 2 0 ( 2 0 1 4 ) 0 2— 1 2 7— 0 4
精 确读 取 。
S C L线 为 高 电平 期 间 , S D A线 由低 电平 向高 电平 的变
化 表示 终止 信号 。S D A线上 的每 个 B y t e必须 为 8位 , 每 B y t e均有 1
个A C K应 答位 。

a t i n g s y s t e m wi t h OMAP 3 5 3 0 a s t h e h a r d wa r e p l a t f o r m . Re a 1 . t i me d i g i t a l hi g h n u mb e r o f d a t a c o l l e c t i o n o f t h e L 3 G4 2 0 0D t h r e e — xi a s g yr o s c o p e i s r e li a z e d u s i n g t h e f a s t mo d e o f L 3 G4 2 0 0D s e n s i n g I z C i n t e r f a c e a n d t h e OM AP 3 5 3 0 h a r d wa r e o u t p u t 1 2 C i n t e r f a c e
L 3 G 4 2 0 0 D是 由意 法 半 导 体 ( S T) , 推 出 的一 款 业
界独 创 、 采 用 一个 感 应 结 构检 测 3条 正交 轴 向运 动 的
三轴数 字 陀 螺 仪 。且 支 持 嵌 入 省 电 和 睡 眠模 式 , 由 2 . 4~ 3 . 6 V的 宽 电源 电压 供 电 。可设 定 全部 量 程 , 其 范 围从 ± 2 5 0~± 2 0 0 0 d p s , 低 量程数 值用 于高 精度 慢 速 运动 测量 , 而 高 量 程则 用 于 测 量 超 快 速 的手 势 和 运

Ke y wo r d s 1 2 C b u s :L 3 G4 2 0 0 D :d e v i c e d iv r e r s
在工 程上 陀螺 仪是 一种 能够 精确 定 位运 动物 体 方 位 的仪 器 , 其 是 现代 航 空 、 航海 、 航 天 和 国防工 业 中广 泛 使用 的一 种 惯性 导航 仪器 , 并对 国家 的工业 、 国防 和 其 他 高科技 的发展 具有 重要 战 略意义 。 在 文 中讨 论 L i n u x操 作 系 统 O MA P 3 5 3 0平 台 的 i 2 C驱 动实 现 , 对设 备无 法直 接 读 取 L i n u x内核 提 出 了 解 决方 案 , 由此 实 现 了对 三周 陀 螺 仪 的数 据 实 时 高 速
扛 机 1 \
t 机 )
风 …. 唧 风 风
X ) ( … … j L_ - // 非 局
叭 机 1 豳
图1 1 2 C 总 线 时序
U . .
1 1 2 C总线的特点及工作协议
1 2 C串行 总 线 由两 根 信 号 线 组 成 : 一 根 双 向传 输
De s i g n o f Dr i v e r s o f L3G4 2 0 0D Thr e e . a x i s Di g i t al Gy r o 1 2 C f o r Li nu x
UU Ya n g . HU AN G J i n y i n g
的数 据线 S D A; 另一 根是 时钟 线 S C L 。i 2 C总线 通 过简 1 . 1 L 3 G4 2 0 0 D 三轴数 字 陀螺仪
单 的结构 便 可实现 半 双工 的 同步数 据传 输 。
I 2 C总线 采 用 一 主 多 从 的 运 行 机 制 , 在 同 一 时 间
( 中北大学 信息 与通信 工程学院 ,山西 太原 0 3 0 0 5 1 )
摘 要 利用O MA P 3 5 3 0为 硬 件 平 台 ,在 L i n u x 操 作 系统 下 ,采 用 I z C总 线 协议 方 式 ,实 现 对 L 3 G 4 2 0 0 D 三 轴 陀 螺
仪的驱动 。以 L 3 G 4 2 0 0 D传感 1 2 C接 1 7 : 具有的快速模式 ,配合 O MA P 3 5 3 0硬 件的外界 i 2 C接 口,实现 了对 L 3 G 4 2 0 0 D三
Ab s t r a c t Th i s p a p e r u s e s 1 2 C b u s p r o t o c o l t o d e s i g n L 3 G 42 0 0D t h r e e — a x i s g y r o s c o p e d iv r e r o n t h e Li n u x o p e r
相关文档
最新文档