打印

贴一个I2C的流程图给新手们

[复制链接]
3246|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aceice|  楼主 | 2008-10-26 21:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近学习匠人的帖子,感触很多~不过我这个也是照着已经写好的补的流程图。以前很少画流程图的,基本上都是在脑海里勾勒,最多是大范围功能上画个草图,还希望高手们指点一下。
部分截图

全版本下载地址
https://bbs.21ic.com/upfiles/img/200712/2007121121226806.pdf
-----------------------------------------------------------
响应921的号召,补充一些东西。
补充截图

PDF下载
https://bbs.21ic.com/upfiles/img/200712/20071212104636931.pdf

相关帖子

沙发
iC921| | 2008-10-27 01:07 | 只看该作者

支持楼的学习精神

“帖”应该为“贴”

改正并增加一点心得就可以发裤子了,呵呵~

使用特权

评论回复
板凳
aceice|  楼主 | 2008-10-27 09:23 | 只看该作者

啥心得?其实I2C这个东西在21IC上炒了很久了,基本属于冷饭

等会我把一些要点做个图,做个补充吧,为了裤子~穷人啊!

使用特权

评论回复
地板
一从陶令| | 2008-10-27 12:22 | 只看该作者

这种I2C流图是I2C调试中出现问题的最主要原因

这种I2C流图是实际设计中出现问题的最主要原因!抱歉我说的比较实在,原因如下:
I2C是直接控制硬件的接口,它必须充分地考虑到不同I2C元件的时序关系,比如:setup/hold/bus free时间等等。在一个8位的单片机上运行,可能程序没有任何问题;但如果移植到POWERPC,或者其它高速CPU上运行,这些时序关系可不一定能满足。

举个例子:很多I2C器件要求连续两次访问之间间隔(bus free time)不小于4.7uS,请问当32位的CPU高速运行时,谁来保证这个参数?

再举个例子:在采样SDA上的NO-ACK时,由于上拉电阻和负载电容的充放电延迟,导致程序中采样时间(从释放SDA到读入SDA值地时间间隔)必须大于RC常数这个量级,否则导致误采样,请问对不同速度的CPU又该如何保证?

结论:驱动级的软件设计应充分理解硬件结构,否则很可能出大问题,即使简单如I2C也是如此!仅供参考

使用特权

评论回复
5
aceice|  楼主 | 2008-10-27 12:31 | 只看该作者

呵呵,谢谢楼上指正

流程图不等同于最后的程序,实际的程序肯定是有很多细节的,包括延时,包括数据线采样等。只是很少做流程图,所以这一些都省略掉了。只列举出基本的时序。
抛砖引玉,还请更多高手指点

使用特权

评论回复
6
iC921| | 2008-10-27 19:19 | 只看该作者

所谓心得不是什么太高的要求

比如你看明白了什么,原来不明白什么现在明白了,如何理解的,讲出来就是了。

使用特权

评论回复
7
程序匠人| | 2008-10-29 08:54 | 只看该作者

这种串行通讯类的内容,最好的表现形式就是时序图

而不是流程图

使用特权

评论回复
8
aceice|  楼主 | 2008-10-29 12:29 | 只看该作者

有些小细节的东西,PDF上有时候都是小字在下面标注

每次都会被这种东西害个半死

使用特权

评论回复
9
acqua_23| | 2008-10-31 15:24 | 只看该作者

学习了

感性的理解一下 

使用特权

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

本版积分规则

374

主题

2182

帖子

0

粉丝