OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8599|回复: 11

关于MPU650例程移植问题

[复制链接]

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-12-2
在线时间
0 小时
发表于 2015-3-14 20:29:08 | 显示全部楼层 |阅读模式
5金钱
学完原子哥STM32F407的MPU6050例程后,就像用个实验室的MPU6050模块试试。先是接到PB8、PB9引脚试试,结果不成功。可能是因为那两个引脚已经连接了板子上的MPU6050吧。然后我又试了一下PB6、PB7;PF1、PF0,这两对接口分别是I2C1的SCL、SDA和I2C2的SCL和SDA。但还是不行,到底是什么原因啊?  我用的是原子哥的例程,只将myiic.c 和myiic.h里关于IO PB8、9改为了PF0、1。。。
[mw_shl_code=c,true]#ifndef __MYIIC_H #define __MYIIC_H #include "sys.h" #define SDA_IN() {GPIOB->MODER&=~(3<<(0*2));GPIOB->MODER|=0<<0*2;} #define SDA_OUT() {GPIOB->MODER&=~(3<<(0*2));GPIOB->MODER|=1<<0*2;} //IO??×÷???? #define IIC_SCL PFout(1) #define IIC_SDA PFout(0) #define READ_SDA PFin(0) void IIC_Init(void); void IIC_Start(void); void IIC_Stop(void); void IIC_Send_Byte(u8 txd); u8 IIC_Read_Byte(unsigned char ack);//IIC????????×??? u8 IIC_Wait_Ack(void); void IIC_Ack(void); void IIC_NAck(void); void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data); u8 IIC_Read_One_Byte(u8 daddr,u8 addr); #endif [/mw_shl_code]
[mw_shl_code=c,true]#include "myiic.h" #include "delay.h" void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOF, &GPIO_InitStructure); IIC_SCL=1; IIC_SDA=1; } 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;//STOP:when CLK is high DATA change form low to high 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; 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; } [/mw_shl_code]


最佳答案

查看完整内容[请看2#楼]

用杜邦线连接MPU6050的模块确实会有的时候出现问题,遇到过和这个帖子相同的问题http://www.openedv.com/posts/list/48217.htm
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2014-3-5
在线时间
65 小时
发表于 2015-3-14 20:29:09 | 显示全部楼层
用杜邦线连接MPU6050的模块确实会有的时候出现问题,遇到过和这个帖子相同的问题http://www.openedv.com/posts/list/48217.htm
急不来总有障碍客观的存在...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-14 23:15:58 | 显示全部楼层
你硬件是我们的开发板么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-12-2
在线时间
0 小时
 楼主| 发表于 2015-3-15 10:15:25 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
是的,STM32F407 Explorer开发板。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-16 00:15:13 | 显示全部楼层
回复【3楼】Lzero:
---------------------------------
那你直接下载我们例程就可以了啊,为啥还要移植呢?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2015-3-23
在线时间
0 小时
发表于 2015-3-23 19:24:48 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
同学,你的问题解决没有啊?就是用原子哥的程序,但是自己外接一片MPU6050,那个程序该怎么改呢???
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-23 23:49:35 | 显示全部楼层
回复【5楼】281777824@qq.com:
---------------------------------
我的没问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-12-2
在线时间
0 小时
 楼主| 发表于 2015-3-27 20:37:42 | 显示全部楼层
回复【5楼】281777824@qq.com:
---------------------------------
没有,我以为外接MPU6050模块,只需把myiic.c的GPIO初始化和myiic.h相应的部分修改一下就可以了,但是结果不行,读不出数据。。。你试过吗,成功吗?
回复

使用道具 举报

6

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-12-2
在线时间
0 小时
 楼主| 发表于 2015-3-27 20:39:25 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥你外接MPU6050试过吗?不是应该把你例程里myiic.c的GPIO初始化部分以及myiic.h相应部分修改一下就可以吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-27 22:23:10 | 显示全部楼层
回复【8楼】Lzero:
---------------------------------
试过,但是接线长会有问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2015-3-28 15:53:08 | 显示全部楼层
我当初移植到STM32F103C8T6都可以的哦
但是是直接插到画的板子上
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-30 18:48:24 | 显示全部楼层
回复【12楼】Lzero:
---------------------------------
你可以下载他们例程试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

14

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2015-6-8
在线时间
6 小时
发表于 2015-7-21 12:30:43 | 显示全部楼层
看到你的这片文章了,你GPIOB那应该是GPIOF 你忘记改了,杜邦线没问题好使!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 00:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表