7814|11

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

stm32封装的查询方式的I2c库,已在多个器件上成功运用. [复制链接]

带超时和出错重复发送方式,重复次数超过规定次数后复位I2C.

i2clock.c和i2clock.h为利用ucossII的信号量保证I2C重入的时序正确,不要删除即可.
相关链接:https://bbs.eeworld.com.cn/upfiles/img/200812/2008121510647247.rar
此帖出自stm32/stm8论坛

最新回复

                                     详情 回复 发表于 2008-12-30 17:27
点赞 关注
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

“关于stm32的I2C不得不说的事...”

STM32的I2C就不能按常规来看,我初也搞了一天,博客上还有两篇关于STM32 I2C的贴,一个就是认为它不合理,是不合常理。
但STM32的I2C是好使的,习惯就好了。
此帖出自stm32/stm8论坛
 
 

回复

20

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

感觉它不好用是因为你还不熟悉它,熟悉了它你就会知道它

说STM32的I2C“它不合理,不合常理”,LS能说具体一点吗?常理是什么?

对不起,我不是抬杠,只想讨论技术问题。
此帖出自stm32/stm8论坛
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 

I2C协议的权威是飞利浦、NXP.

标签: 无标签

关于STM32-I2C不合理看法

//-------------------------------------
//《 关于STM32 I2C不合理的看法 》
// netjob 2008-08-22
//-------------------------------------
1. 关于 SCL时钟设置的处理。

在软件模拟年代,SCL是50%的PWM, 就是说 SCL低周期:SCL 高周期=1:1,
这是我们一贯的认识与做法。

而实在ATMEL与NXP的 ARM 中的I2C也是如此对待。只不过ATMEL叫TWI.

由于ATMEL公司本身也生产I2C的FLASH和SPI FLASH ; 我们有理由
相信这种1:1是可行可靠的。

我们知道I2C是NXP(菲利普半导体)的专利 ,它应该是权威了,
但我们仔细看NXP的ARM7, 它的I2C 时钟高、低周期 是可变的。
我们可以设1:1,也可以设1:2 等等。虽然NXP 手册上是使用1:1的设计。


简单的说: SCL时钟高低周期比例定了下来(1:1),那么周期越长
I2C的速度就越慢。 

例如:
I2C的时钟是48MHZ,要I2C工作200KHZ, 我们只要 把计算出的周期
写入I2C寄存器就可以了。
方法: 48,000,000/(200,000*2)=120;
也就是说把时钟分频【120】,I2C 就可以工作200KHZ了。


 而ST公司的STM32名堂就来了,它来了什么 保准模式,快速模式,
 周期比例有什么 1:2 、 16:9 。
 还搞了个SCL时钟最大上升时间,它也分模式,STM32的I2C设置中
 就要输入这项内容。
 
  而ST公司确实是把简单的问题复杂化了。
  
2。关于状态位的查询与清除
  
 这个事实上是很简单,但说起来比较麻烦。
 
 在I2C协议中,我们都要根据标志位来判断分析I2C总线上发生的事情。
 例如START发送完毕了,数据发送完毕了等等。
 
 ATMEL公司
 ATMEL的TWI可以说 非常精简。 
 程序只要关心的标志:
 TXRDY: 发送保持寄存器就绪 
 RXRDY: 接收保持寄存器就绪
 TXCOMP: 传输完成
 NXP公司
 NXP的I2C可以说 非常高效。它的每个状态标志位都有相应的清标志位 ,
 这样当I2C总线上发生的事情触发对应的标志置位后,我们可以人为的清除它。
 而且它的标志位很统一,用一个【中断事件标志位】来表示,详细内容可以访问
 内容寄存器。
 
 ATMEL公司和NXP公司的I2C都只有【一个】 状态寄存器。
 
 而ST公司呢,STM32要操作【两个】状态寄存器,判断这两个寄存器的标志位。
 标志名目繁多,不同事件要查询不同标志位;也没有相应的清除标志位。
 这也是我们最担心的,我们不知到底这个标志是新的事件产生的还是老的标志没被清除。
 虽然STM32告诉了我们每个标志的清除方法。
 
 我的STM32初学者笔记有完整的初始化和读写函数代码,大家可以参考参考。


相关链接:http://blog.ednchina.com/netjob/151567/message.aspx
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 

楼上的非常有道理,这个还不算.就算...

                                 I2C操作不友好.但做的库完全可以屏蔽这点,只要I2C是好的.但STM32的I2C库,感觉还是不好用.
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 

ding

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

7
 

"ST公司确实是把简单的问题复杂化了"

好处:给用户留出的可控制方法更多
坏处:操作太烦冗,如果不是对它非常熟悉的话很容易出错
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

8
 

呵呵,有利有弊,需要仔细看DataSheet了

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

9
 

算了吧

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 

楼上慎言

                                 听说肯定是好用,但用起来麻烦,这个应该是真的
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 

I2C硬件本身没有大问题

最多使用界面不太友好,库做的不好。或者根本不成其为库。对于不关心通信规范和细节的童鞋会尤其觉得。

我知道大多数懒人跟我一样,希望能有个函数,只需要我指明地址,接收/发送数据的指针以及数据长度,就可以直接用了。这样就方便啦,哈?

xjw说得对,要自己仔细看datasheet。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 

算了吧

                                  
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表