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

[复制链接]
5275|42
xzhihui 发表于 2016-2-18 20:34 | 显示全部楼层
用逻辑分析仪,找问题很快的
Ketose 发表于 2016-2-18 20:56 | 显示全部楼层
F4,F7,硬件I2C读MPU都没有问题。
家有20亩地 发表于 2016-2-18 22:22 | 显示全部楼层
前一 段时间用了407 ,cpu也跑168M, 移值一个二线的协议(不是I2C,但速度也不是很快),也是gpio  模拟的,一直出问题,无意中将SPEED 设置为最高就OK了,一直忙也没去研究为什么。。或者你也试试。。。GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  -->Speed 改成最大  ?
  
df_flying 发表于 2016-2-19 08:58 | 显示全部楼层
慢慢来 调程序得耐住性子,用示波器看看相应引脚有没有波形,还有,F1和F4的速度最好不要用72和168来做对比,整体程序F4要快的多,GPIO模拟建议将II2的延迟改大点,不过F4的硬件IIC相对F3要好的多
lyhstudio 发表于 2016-2-19 11:17 | 显示全部楼层
加个上拉电阻试试。
泰山特曲123 发表于 2016-2-19 12:03 来自手机 | 显示全部楼层
上网买个30多的逻辑分析仪,看看波形,一清二楚
 楼主| qq8605578 发表于 2016-2-19 14:11 | 显示全部楼层
小小小小白 发表于 2016-2-19 14:04
可以,把project发给我吧

给个邮箱地址
 楼主| qq8605578 发表于 2016-2-19 20:23 | 显示全部楼层
家有20亩地 发表于 2016-2-18 22:22
前一 段时间用了407 ,cpu也跑168M, 移值一个二线的协议(不是I2C,但速度也不是很快),也是gpio  模拟的,一 ...

也试过了,还是不好使。。。我再找找原因吧。。
 楼主| qq8605578 发表于 2016-2-19 20:24 | 显示全部楼层
df_flying 发表于 2016-2-19 08:58
慢慢来 调程序得耐住性子,用示波器看看相应引脚有没有波形,还有,F1和F4的速度最好不要用72和168来做对比 ...

今天延时那个地方都改成3000了,还是不行。。快崩溃了,一个i2c忙了三天了,,,其他功能都调试ok了。就差这个地方了。。:'(
 楼主| qq8605578 发表于 2016-2-19 20:26 | 显示全部楼层
家有20亩地 发表于 2016-2-18 22:22
前一 段时间用了407 ,cpu也跑168M, 移值一个二线的协议(不是I2C,但速度也不是很快),也是gpio  模拟的,一 ...

方便把你io的配置贴出来么?我是感觉我的sda_read是一直读不到。。io的方向也切换了
 楼主| qq8605578 发表于 2016-2-19 20:28 | 显示全部楼层
Ketose 发表于 2016-2-18 20:56
F4,F7,硬件I2C读MPU都没有问题。

不知道为啥,我硬件i2c在线调试好了之后可以读,但读着读着数据就错了。重上电就卡住了,这读的速度还不算高的情况下。。
df_flying 发表于 2016-2-19 21:01 | 显示全部楼层
模拟IO时引脚有波形吗?感觉初始配置怪怪的。硬件IIC读着数据错了,是不是其他中断程序引起的?正常应该不会啊,单独读写这个传感器试试先
huangqi412 发表于 2016-2-19 21:14 来自手机 | 显示全部楼层
示波器。。。没示波器搞个屁 有示波器不用更搞个屁
海中水 发表于 2016-2-20 09:11 | 显示全部楼层
我可以调试,我已经调试通过了IIC总线,上面挂两个设备。
 楼主| qq8605578 发表于 2016-2-20 16:03 | 显示全部楼层
huangqi412 发表于 2016-2-19 21:14
示波器。。。没示波器搞个屁 有示波器不用更搞个屁

多谢。还是用示波器找到了问题。。还是io的配置问题
 楼主| 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这块的问题。再次感谢小小小小白,昨天也帮我调试。谢谢大家。
Mancherstun 发表于 2016-2-21 13:26 | 显示全部楼层
iic有bug,用模拟的吧
Alisa_song 发表于 2016-4-25 11:36 | 显示全部楼层
请问有人用过stm32f030的硬件i2C的中断方式调试过的吗?
huangqi412 发表于 2016-4-26 16:37 来自手机 | 显示全部楼层
示波器  示波器  示波器  没有示波器的电工强烈建议揍老板一顿 有示波器不用的电工强烈建议老板叫齐全公司揍一顿  几千块的示波器能产生非常大的干活效率  有逻辑仪当然更好 不过一般都是示波器凑合看个大概人眼解码
wahahaheihei 发表于 2016-4-26 21:01 | 显示全部楼层
delay需要根据不同的时钟进行配置的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部