打印

请教香主STM32 3.0的库函数有没有IIC的问题?

[复制链接]
5122|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gf86530430|  楼主 | 2010-1-12 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gf86530430 于 2010-1-12 13:59 编辑

请教香主STM32 3.0的库函数有没有IIC的问题?
正准备做个项目希望 香主 给个答复!!
沙发
香水城| | 2010-1-12 14:16 | 只看该作者
嘿嘿,会用就没有问题,不会用就不好说了,:P

使用特权

评论回复
板凳
sinadz| | 2010-1-12 18:37 | 只看该作者
呵呵,确实是这样,调过I2C的肯定问题就不会很大

使用特权

评论回复
地板
sunmonth| | 2010-1-12 20:13 | 只看该作者
香主滑头,等于没说

使用特权

评论回复
5
香水城| | 2010-1-12 21:28 | 只看该作者
香主滑头,等于没说
sunmonth 发表于 2010-1-12 20:13


哈哈,说我滑头?那么你说我应该怎么说才不是滑头,才不是"等于没说"? :$

请大侠指教。

使用特权

评论回复
6
gf86530430|  楼主 | 2010-1-13 08:59 | 只看该作者
2# 香水城

香主我就想问,只用官方的3.0库,函数 读写IIC设备,会不会有2.0库死机问题?
当然IIC设备我是调试过的,应用程序肯定没问题。

使用特权

评论回复
7
gf86530430|  楼主 | 2010-1-13 09:25 | 只看该作者
等待回答!!

使用特权

评论回复
8
sunmonth| | 2010-1-13 10:28 | 只看该作者
必须对3.0库的例子做修改

使用特权

评论回复
9
香水城| | 2010-1-13 10:49 | 只看该作者
官方发布的固件库,不管是哪一个版本,都是经过测试才发布的,对于楼主的问题,简单的回答只有两种:“有问题”或“没有问题”。

如果回答“有问题”,任何人(包括我和你)都会质疑,既然知道有问题为什么还要发布出来,为什么不改正。因此,显然这不是正确的答案。

答案只剩下“没有问题”,但我相信这不是楼主要的答案,否则他没有必要问这个问题,因此才有了我在2楼的回答。

----------------
我上面已经说了,在发布每个版本的库之前,都是经过了严格的测试,在我们这里肯定不会出现所谓死机的问题。但从现实的角度讲,任何软件都可能有漏洞,都可能有想不到的地方,这就要具体情况具体分析;而在不知道楼主的具体环境是什么、不知道楼主具体如何操作如何编程的情况下,我无法回答6楼的问题。

使用特权

评论回复
10
winloop| | 2010-1-13 10:58 | 只看该作者
实际上,在我用过的几款MCU里面,普遍的问题是SPI比I2C都要简单的多,I2C在哪款MCU上都不是那么容易就用明白的,绝大部分出现问题的也都是自己的软件有问题,动不动就怀疑某MCU的I2C接口是不是有问题的,大部分都是功夫没下到位。。。

使用特权

评论回复
11
sunmonth| | 2010-1-13 11:18 | 只看该作者
2.9 I2C peripheral
2.9.1 Some software events must be managed before the current byte is
being transferred
Description
When the EV7, EV7_1, EV6_1, EV2, EV8, and EV3 events are not managed before the
current byte is being transferred, problems may be encountered such as receiving an extra
byte, reading the same data twice or missing data.
Workarounds
When it is not possible to manage the EV7, EV7_1, EV6_1, EV2, EV8, and EV3 events
before the current byte transfer and before the acknowledge pulse when changing the ACK
control bit, it is recommended to:
1. use the I2C with DMA in general, except when the Master is receiving a single byte
2. use I2C interrupts and boost their priorities to the highest one in the application to make
them uninterruptible

使用特权

评论回复
12
xzq1019| | 2010-1-13 11:53 | 只看该作者
sunmonth  的文档是从ST官方网站的勘误表里摘出来的
这段文字至少说明IIC不好用
如果非要用硬件IIC,应用方法有两种
1、用DMA方式,人家说了不适合作为主设备且只接收单字节的情况,而很多应用就需要这个功能
比如我用的PCF8574,要读出状态就要读单个字节
2、用IIC中断方式,且设中断优先级最高。这种方式太可怕,我的所有中断都要被其打断,比如定时器中断被延时了,外部中断响应延时,还有就是容易产生中断的嵌套,中断嵌套是嵌入式系统中容易产生故障很重要一点。
用软件模拟也很好,400KHz对STM32处理器来说完全处理得过来。
用硬件IIC中延时也是死循环中等待,占用的时间与软件是一样的,我现在已经用软件模拟了,从来没有出现过问题。
注:我的一个系统里IIC器件有:PCF8574(IIC转8路IO芯片),AD795G(高速模拟开关),24LC64,还有其它DA器件的控制引脚通过PCF8574的输出引脚来控制的,可以说一旦IIC坏,整个系统就坏了。
再说一句:软件模拟效率不低,希望香主也推荐软件模拟方式。

使用特权

评论回复
13
xsgy123| | 2010-1-13 15:23 | 只看该作者
香主还是想说,会用就没问题,不会用就有问题,呵呵

使用特权

评论回复
14
gf86530430|  楼主 | 2010-1-14 09:10 | 只看该作者
就是说3.0的库也要对其进行相应的改动。
OK我知道了,谢谢楼主及诸位的回答!

使用特权

评论回复
15
zwc| | 2010-1-14 09:34 | 只看该作者
我用3.12的库做I2C,没问题。

使用特权

评论回复
16
sunmonth| | 2010-1-14 09:47 | 只看该作者
15楼,你没试出问题,不等于没问题

使用特权

评论回复
17
xzq1019| | 2010-1-15 01:09 | 只看该作者
支持一句,没试出问题,不等于没问题
我一直觉得IIC有问题,后来我新建了个项目,代码重添进去
两个星期没出问题,我就以为我调好了
谁知过一段时间后又出现了偶而不能用的问题,我好可怕,也好庆幸
产品是用在飞机测控的,万一出了问题,老板不骂死我了!
偶而不能用,最可怕的问题
我现在已经改为软件模拟了,真的很好使,而且自己也可以定义各种故障代码

使用特权

评论回复
18
zhangjunfei| | 2010-1-15 16:45 | 只看该作者
我们没有必要深入了解IIC的原理。我们是应用者。深的原理应该是科学家们的事。这才是工程师的工作

使用特权

评论回复
19
IJK| | 2010-1-15 17:27 | 只看该作者
ST官方的库,用起来容易出问题,即使是最新的库。用论坛的本地工程师写的库,可能会好点。

使用特权

评论回复
20
香水城| | 2010-1-15 17:49 | 只看该作者
我们没有必要深入了解IIC的原理。我们是应用者。深的原理应该是科学家们的事。这才是工程师的工作
zhangjunfei 发表于 2010-1-15 16:45


这位朋友说的是一种理想情况,也是我们努力的目标。但是目前我们还达不到这个水平,我们并不需要你深入了解IIC的原理,但还是需要一些基本知识,毕竟从事MCU的工作还不是完全的没有门槛。

即使是傻瓜相机也还不能做到完全的操作无忧,先不说照片的艺术性和构图,没有一些基本的摄影知识,你还是会拍出曝光不足、曝光过度、成像模糊的照片,不是说有了傻瓜相机之后,人人都能拍出好的照片。

使用特权

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

本版积分规则

5

主题

50

帖子

1

粉丝