打印
[STM32F4]

有偿找人帮调试一个i2c程序

[复制链接]
楼主: qq8605578
手机看帖
扫描二维码
随时随地手机跟帖
21
xzhihui| | 2016-2-18 20:34 | 只看该作者 回帖奖励 |倒序浏览
用逻辑分析仪,找问题很快的

使用特权

评论回复
22
Ketose| | 2016-2-18 20:56 | 只看该作者
F4,F7,硬件I2C读MPU都没有问题。

使用特权

评论回复
23
家有20亩地| | 2016-2-18 22:22 | 只看该作者
前一 段时间用了407 ,cpu也跑168M, 移值一个二线的协议(不是I2C,但速度也不是很快),也是gpio  模拟的,一直出问题,无意中将SPEED 设置为最高就OK了,一直忙也没去研究为什么。。或者你也试试。。。GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  -->Speed 改成最大  ?
  

使用特权

评论回复
24
df_flying| | 2016-2-19 08:58 | 只看该作者
慢慢来 调程序得耐住性子,用示波器看看相应引脚有没有波形,还有,F1和F4的速度最好不要用72和168来做对比,整体程序F4要快的多,GPIO模拟建议将II2的延迟改大点,不过F4的硬件IIC相对F3要好的多

使用特权

评论回复
25
lyhstudio| | 2016-2-19 11:17 | 只看该作者
加个上拉电阻试试。

使用特权

评论回复
26
泰山特曲123| | 2016-2-19 12:03 | 只看该作者
上网买个30多的逻辑分析仪,看看波形,一清二楚

使用特权

评论回复
27
qq8605578|  楼主 | 2016-2-19 14:11 | 只看该作者
小小小小白 发表于 2016-2-19 14:04
可以,把project发给我吧

给个邮箱地址

使用特权

评论回复
28
qq8605578|  楼主 | 2016-2-19 20:23 | 只看该作者
家有20亩地 发表于 2016-2-18 22:22
前一 段时间用了407 ,cpu也跑168M, 移值一个二线的协议(不是I2C,但速度也不是很快),也是gpio  模拟的,一 ...

也试过了,还是不好使。。。我再找找原因吧。。

使用特权

评论回复
29
qq8605578|  楼主 | 2016-2-19 20:24 | 只看该作者
df_flying 发表于 2016-2-19 08:58
慢慢来 调程序得耐住性子,用示波器看看相应引脚有没有波形,还有,F1和F4的速度最好不要用72和168来做对比 ...

今天延时那个地方都改成3000了,还是不行。。快崩溃了,一个i2c忙了三天了,,,其他功能都调试ok了。就差这个地方了。。:'(

使用特权

评论回复
30
qq8605578|  楼主 | 2016-2-19 20:26 | 只看该作者
家有20亩地 发表于 2016-2-18 22:22
前一 段时间用了407 ,cpu也跑168M, 移值一个二线的协议(不是I2C,但速度也不是很快),也是gpio  模拟的,一 ...

方便把你io的配置贴出来么?我是感觉我的sda_read是一直读不到。。io的方向也切换了

使用特权

评论回复
31
qq8605578|  楼主 | 2016-2-19 20:28 | 只看该作者
Ketose 发表于 2016-2-18 20:56
F4,F7,硬件I2C读MPU都没有问题。

不知道为啥,我硬件i2c在线调试好了之后可以读,但读着读着数据就错了。重上电就卡住了,这读的速度还不算高的情况下。。

使用特权

评论回复
32
df_flying| | 2016-2-19 21:01 | 只看该作者
模拟IO时引脚有波形吗?感觉初始配置怪怪的。硬件IIC读着数据错了,是不是其他中断程序引起的?正常应该不会啊,单独读写这个传感器试试先

使用特权

评论回复
33
huangqi412| | 2016-2-19 21:14 | 只看该作者
示波器。。。没示波器搞个屁 有示波器不用更搞个屁

使用特权

评论回复
34
海中水| | 2016-2-20 09:11 | 只看该作者
我可以调试,我已经调试通过了IIC总线,上面挂两个设备。

使用特权

评论回复
35
qq8605578|  楼主 | 2016-2-20 16:03 | 只看该作者
huangqi412 发表于 2016-2-19 21:14
示波器。。。没示波器搞个屁 有示波器不用更搞个屁

多谢。还是用示波器找到了问题。。还是io的配置问题

使用特权

评论回复
36
qq8605578|  楼主 | 2016-2-20 16:09 | 只看该作者
#define SCL_H          GPIO_SetBits(GPIOB , GPIO_Pin_6)   
#define SCL_L          GPIO_ResetBits(GPIOB , GPIO_Pin_6)
   
#define SDA_H          GPIO_SetBits(GPIOB , GPIO_Pin_7)   
#define SDA_L          GPIO_ResetBits(GPIOB , GPIO_Pin_7)

#define SCL_read      GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_6) */
#define SDA_read      GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_7)
#define SDA_IN()  {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=0<<7*2;}       
#define SDA_OUT() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=1<<7*2;}

i2c本身的程序是没什么问题的,主要的问题还是出在了io的配置上面。
之前的sda和scl是用寄存器的方式置0置1,但实际上没有用,后来用示波器一步一步的查的,IO输入输出没问题后程序的读写是没什么问题了。我外接了mpu9250的模块,200hz正常读取了,但板子上本身焊接的9150读出来的全是7f,磁力计的配置没有写进去。原因还在找,感谢这两天大家给我提的建议,顺利的解决的i2c这块的问题。再次感谢小小小小白,昨天也帮我调试。谢谢大家。

使用特权

评论回复
37
Mancherstun| | 2016-2-21 13:26 | 只看该作者
iic有bug,用模拟的吧

使用特权

评论回复
38
Alisa_song| | 2016-4-25 11:36 | 只看该作者
请问有人用过stm32f030的硬件i2C的中断方式调试过的吗?

使用特权

评论回复
39
huangqi412| | 2016-4-26 16:37 | 只看该作者
示波器  示波器  示波器  没有示波器的电工强烈建议揍老板一顿 有示波器不用的电工强烈建议老板叫齐全公司揍一顿  几千块的示波器能产生非常大的干活效率  有逻辑仪当然更好 不过一般都是示波器凑合看个大概人眼解码

使用特权

评论回复
40
wahahaheihei| | 2016-4-26 21:01 | 只看该作者
delay需要根据不同的时钟进行配置的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则