完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ADXL_WRITE GY-26的地址 0xE0
void ADXL345_WR_Reg(u8 addr,u8 val) //数据写入 { u8 temp=0; IIC_Start(); IIC_Send_Byte(ADXL_WRITE); temp=IIC_Wait_Ack(); IIC_Send_Byte(addr); temp=IIC_Wait_Ack(); IIC_Send_Byte(val); temp=IIC_Wait_Ack(); IIC_Stop(); } void ADXL345_RD_XYZ(short *x,short *y,short *z) //读取地址为0x00~0x07中的数据 { u8 buf[8]; u8 i; ADXL345_WR_Reg(0x00,0x31);//测试角度命令 delay_ms(50); ADXL345_WR_Reg(0x00,0x35);//测试温度命令 delay_ms(50); IIC_Start(); IIC_Send_Byte(ADXL_WRITE); IIC_Wait_Ack(); IIC_Send_Byte(0x00); IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(ADXL_READ); IIC_Wait_Ack(); for(i=0;i<8;i++) { if(i==7)buf=IIC_Read_Byte(0); else buf=IIC_Read_Byte(1); ËÍACK } IIC_Stop(); *x=(short)(((u16)buf[1]<<8)+buf[2]); *y=(short)(((u16)buf[3]<<8)+buf[4]); *z=(short)(((u16)buf[5]<<8)+buf[6]); } void IIC_Start(void) { SDA_OUT(); IIC_SDA=1; IIC_SCL=1; delay_us(4); IIC_SDA=0;//START:when CLK is high,DATA change form high to low delay_us(4); IIC_SCL=0; } void IIC_Stop(void) { SDA_OUT(); IIC_SCL=0; IIC_SDA=0; delay_us(4); IIC_SCL=1; IIC_SDA=1; delay_us(4); } u8 IIC_Wait_Ack(void) { u8 ucErrtime=0; SDA_IN(); IIC_SDA=1;delay_us(1); IIC_SCL=1;delay_us(1); while(READ_SDA) { ucErrTime++; if(ucErrTime>250) { IIC_Stop(); return 1; } } IIC_SCL=0;//ʱÖÓÊä³ö0 return 0; } void IIC_Ack(void) { IIC_SCL=0; SDA_OUT(); IIC_SDA=0; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0; } void IIC_NAck(void) { IIC_SCL=0; SDA_OUT(); IIC_SDA=1; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0; } void IIC_Send_Byte(u8 txd) { u8 t; SDA_OUT(); IIC_SCL=0; for(t=0;t<8;t++) { IIC_SDA=(txd&0x80)>>7; txd<<=1; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0; delay_us(2); } } u8 IIC_Read_Byte(unsigned char ack) { unsigned char i,receive=0; SDA_IN(); for(i=0;i<8;i++ ) { IIC_SCL=0; delay_us(2); IIC_SCL=1; receive<<=1; if(READ_SDA)receive++; delay_us(1); } if (!ack) IIC_NAck(); else IIC_Ack(); return receive; } IO口配置没有问题,模拟IIC的程序使用别的器件试过,没有问题,不知道哪错了,求大神修改 |
|
相关推荐
2个回答
|
|
帮你顶一下!
|
|
|
|
帮顶一个!!
|
|
|
|
只有小组成员才能发言,加入小组>>
818 浏览 0 评论
1162 浏览 1 评论
2536 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2720 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1114浏览 3评论
198浏览 2评论
465浏览 2评论
382浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
462浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 21:53 , Processed in 1.123393 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号