2440(ARM9) L3G4200D ADXL345 裸机程序
2013-03-10 20:07
267 查看
花了两天时间,结合以前写的程序2440 MDK 裸机IIC程序 整理出了,这个通过IIC读取AHRS传感器的程序且可以通过VisualScope.exe 这个软件
进行传感器的调试. 至于云台什么的,感觉应该不会太难,我会持续更新我的四轴进度.加速度计:
角速度计:
核心代码:
补充说明 :这个程序的几乎所有内容都可以在我以前的博客中找到 ,iic通信结合 我写的IIC通信程序;ARM9串口通信部分网上可以找的到;L3G4200D
和 ADXL345的初始化部分,可以结合 自带的测试代码;VisualScope 通信部分协议部分 就按我贴 出的这部分程序写就可以了.波特率 9600 串口 1 .
转载请表明出处 2440(ARM9) L3G4200D ADXL345 裸机程序
进行传感器的调试. 至于云台什么的,感觉应该不会太难,我会持续更新我的四轴进度.加速度计:
角速度计:
核心代码:
#include <S3C2440.H> #include "serial.h" #include "iic.h" #include "L3G4200D.h" #include "ADXL345.h" unsigned char data[6]; unsigned char Array[10]; void revise(void); unsigned int CRC16(unsigned char *Array ,unsigned int Len); int main() { unsigned int i; unsigned int temp; // int pitch=0,yaw=0,roll=1; //波特率 0x1a 115200 325 9600 init_uart(325); //程序启动,若输出则串口是正常的 putstring("Serial communication is normal !\r\n"); init_iic(); putstring("Initialize IIC successful !\r\n"); Init_ADXL345(); putstring("Initialize ADXL345 successful !\r\n"); InitL3G4200D() ; putstring("Initialize L3G4200D successful !\r\n"); while(1) { if(0) { Multiple_read_ADXL345(data); //测试加速度计 } else { Multiple_read_L3G4200D(data); //测试角速度计 } /*****************************************多余内容,可删除*********************************/ revise(); //数据校正 //Array[6]=Read24C08_nbyte(SlaveAddress_L3G4200D,0x26,1,); //读取温度,温度地址0x26 Array[6]=0x00; Array[7]=0x00; // 温度是8位的,故这个赋值给0x00 temp=CRC16(Array,8); Array[8]=temp&0x00ff; Array[9]=(temp&0xff00)>>8; /****************************************************************************************/ for(i=0 ; i<10;i++) { //这里是把数据从串口发送出去 sendchar(Array[i]); } } } /****************************************************************** CRC16校验函数 *******************************************************************/ unsigned int CRC16(unsigned char *Array ,unsigned int Len) //len在调用时指定为8就OK { // unsigned char *Rcvbuf ; unsigned int IX,IY,CRC; CRC=0xffff; //set all 1 for(IX=0;IX<Len;IX++) { CRC=CRC^(unsigned int)(Array[IX]); for(IY=0;IY<=7;IY++) { if((CRC&1)!=0) CRC=(CRC>>1)^0xA001; //0xA001是自定义多项式 else CRC=CRC>>1; } } return(CRC); } void revise(void) { unsigned int dis_data; dis_data=(data[1]<<8)+data[0]; //合成数据 //进行修正 Array[0]=dis_data&0x00ff; Array[1]=(dis_data&0xff00)>>8; dis_data=(data[3]<<8)+data[2]; //合成数据 //进行修正 Array[2]=dis_data&0x00ff; Array[3]=(dis_data&0xff00)>>8; Array[4]=data[4]; //把值 给Array数组 Array[5]=data[5]; }
补充说明 :这个程序的几乎所有内容都可以在我以前的博客中找到 ,iic通信结合 我写的IIC通信程序;ARM9串口通信部分网上可以找的到;L3G4200D
和 ADXL345的初始化部分,可以结合 自带的测试代码;VisualScope 通信部分协议部分 就按我贴 出的这部分程序写就可以了.波特率 9600 串口 1 .
转载请表明出处 2440(ARM9) L3G4200D ADXL345 裸机程序
相关文章推荐
- 2440 模拟IIC 可以读取 L3G4200D ,ADXL345
- L3G4200D + ADXL345 卡尔曼滤波
- 十 ARM9(2440)的IIC——理论知识及程序实例
- s3c2440 ARM9 裸机驱动第二篇—2440系统时钟
- 2440 MDK 裸机IIC程序
- 实现测试2440裸机汇编程序
- ARM裸机程序开发20(2440串口总结:寄存器篇)
- L3G4200D + ADXL345 卡尔曼滤波
- 001_<ARM9从裸机到Linux操作系统>____裸机篇____ARM9裸机程序开发环境搭建
- 裸机系列——2440串口通信2程序代码
- ARM9 MINI 2440 裸机实验之----C语言调用汇编函数
- ARM9裸机的UART程序测试
- Mini 2440 LED、按键和蜂鸣器裸机测试程序(C语言)
- ARM裸机程序开发21(2440串口:申嵌源码2440lib.c文件中关于UART的操作)
- S3C2440之裸机程序烧录(eop+Jlink)
- 嵌入式驱动开发笔记(裸机程序篇)---准备工作
- ARM裸机程序开发——ADS集成开发环境配置及调试
- 第017课 LCD原理详解及裸机程序分析
- SPI总线 的使用 和 裸机程序编写
- 4412裸机程序之中断