打印
[STM32F1]

血的经历告诉大家,慎用stm32的硬件iic

[复制链接]
楼主: 摩天轮1111
手机看帖
扫描二维码
随时随地手机跟帖
21
摩天轮1111|  楼主 | 2016-2-21 01:25 | 只看该作者 回帖奖励 |倒序浏览
nametony 发表于 2016-2-20 22:01
自己遇到问题, 自己解决不了, 就劝人家慎用, 实在好讨厌!
如果你摆出了事实证明STM32硬件I2C有问题, 那是立 ...

中断读取是中断读取,我说了,我光板硬件跑几天也不带出问题的,我是说当有外部中断要打断你这个iic的中断的时候,各种齐齐啪啪的问题就出现了,你可以试试,我iic也是放在中断里面读取的,我用的还是mpu6050的int引脚外部触发的200hz中断,这个中断里面读取dmp,耗时700us,我还是dma读取的,意味着我这个读取只要开了个头,就不怕被打断,它相当于外设自己在读数收数,但是问题就是我有个15khz的中断要去打断我刚刚的那个有iic的中断,在这种情况下,就会出现意想不到的的问题,各种各样,解决一个出来新的,所以我说慎用,有问题肯定有解决办法,但是会搞死你,

使用特权

评论回复
22
IversonCar| | 2016-2-21 09:34 | 只看该作者
我用的时候驱动mpu6050是没有问题的,但是问题是速度快了就不行了

使用特权

评论回复
23
runningwzf| | 2016-2-21 11:49 | 只看该作者
从来不用硬件I2C的人飘过
主要是移植太麻烦,模拟I2C的,只要重新定义以下引脚即可,爽YY啊

使用特权

评论回复
24
Mancherstun| | 2016-2-21 13:23 | 只看该作者
那iic有这些bug,该如何解决呢
如果用模拟的话如何提高速度呢

使用特权

评论回复
25
zgy8864| | 2016-2-21 18:54 | 只看该作者
我一直都 是用IO摸拟,其实是IO摸拟也是很好用的,而且在不同的芯片间也方便移植,只是速度可能稍慢点。

使用特权

评论回复
26
LguoFu| | 2016-2-22 09:33 | 只看该作者
摩天轮1111 发表于 2016-2-20 11:45
我现在测试的是模拟iic,这里打断用的是30us长的中断,我没有测试更长的,打断频率是15khz,你要是出问题 ...

你的意思是I2C操作放中断里?

使用特权

评论回复
27
Ketose| | 2016-2-22 13:45 | 只看该作者
长知识了。。。。

使用特权

评论回复
28
besovideo| | 2016-2-22 14:22 | 只看该作者
挖晕,还有这问题?就像当年的BF有SPI BUG历史一样,这些其实都正常。

使用特权

评论回复
29
fhpzxq| | 2016-2-24 22:26 | 只看该作者
我也遇到过,郁闷得很,这么火的芯片开始根本不会怀疑

使用特权

评论回复
30
duhemayi| | 2016-2-25 08:19 | 只看该作者
学习!

使用特权

评论回复
31
狼牙0354| | 2016-2-25 08:47 | 只看该作者
早就听说STM32的硬件I2C有问题

使用特权

评论回复
32
liuyimao485812| | 2016-2-25 09:48 | 只看该作者
STM32 的iic本身就存在问题。

使用特权

评论回复
33
ereck| | 2016-2-25 16:56 | 只看该作者
说了一长条不如上些代码看看清楚明白

使用特权

评论回复
34
码客_Mark| | 2016-2-25 19:12 | 只看该作者
换MPU6500吧,SPI速度爽死,还没bug

使用特权

评论回复
35
zhlcd| | 2016-2-25 21:02 | 只看该作者
其实我想说, 硬件I2C 其实就是软件I2C的实现!

软件I2C是理论+协议。  然后厂家就按这个白皮书做出硬件的I2C.   专利就是飞利浦的I2C 了。
如果你够土豪,你就用一个超便宜的MCU来软件I2C. 然后再通过一个40M速度的硬件SPI口来与主CPU通信。呵呵!

就是软件I2C, 按他的白皮书协议, 它是时序也不能被打乱!否则照样出问题!

硬件,软件I2C都是一回事,  只是 ST公司的I2C 有 BUG! 我一直认为ST公司设计这个I2C的工程师当时是喝多了或者被女朋友甩了!呵呵!
你看像其他公司的硬件I2C那个有问题?  NXP,ATMEL,TI,MICROCHIP,FREESCAL.....

使用特权

评论回复
36
Bermanrep| | 2016-2-26 09:10 | 只看该作者
st公司不是有这个bug的解决方案了吗

使用特权

评论回复
37
我是一个小毛驴| | 2016-2-26 09:22 | 只看该作者
金融小数 发表于 2016-2-19 17:17
用ST的硬件IIC时,千万不要用中断和DMA。用轮询就OK

轮询??这个stm32f103(m3内核)的IIC我知道有bug,我接下来有个项目用的是stm32f0系列的,是M0内核,不知道在硬件IIC上,是否有这样的问题

使用特权

评论回复
38
Amigo_cai| | 2016-2-26 09:30 | 只看该作者
我用303的时候都是正常的,没出现过问题,用的也还行

使用特权

评论回复
39
摩天轮1111|  楼主 | 2016-2-26 15:09 | 只看该作者
Amigo_cai 发表于 2016-2-26 09:30
我用303的时候都是正常的,没出现过问题,用的也还行

f3和f0系列的我之前有认真看过手册,iic模块是完全重新设计的了,没有了这种麻烦事应该是很正常的

使用特权

评论回复
40
摩天轮1111|  楼主 | 2016-2-26 15:11 | 只看该作者
Bermanrep 发表于 2016-2-26 09:10
st公司不是有这个bug的解决方案了吗

实话说,解决方案不能算是解决方案,只是不断的会有新问题出现,要你不断的擦屁股,我不可能iic中断优先级最高对吧,我用dma方式它一样不能随便被中断打断,现在软件模拟的,可以任意被我现在用的15khz的中断打断

使用特权

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

本版积分规则