打印

菜农“征脑”-通用异步串口实现I2C/SPI硬件控制器的具体方法

[复制链接]
楼主: hotpower
手机看帖
扫描二维码
随时随地手机跟帖
21
xwj| | 2010-6-22 07:45 | 只看该作者 回帖奖励 |倒序浏览
USB是基于包传输的,其最小时间间隔的传输单位是微帧,
即使是USB2.0的高速模式下(480Mb/s),也只能1ms内传输8个125μs长的微帧

所以每个包越大其总体传输速度就越快。整体速度甚至可以到40多MBYTE/S(因为USB规定了高速中断传输不得占用超过 80%的微帧时间,不然电脑容易死机)

而你如果想每次传输一个位或者一个字节,那么很遗憾,一秒内只能获得8000次传输机会;
而你如果每次都传输一大堆数据,然后由其他的IC来转换时序,那么恭喜你:你的速度可以做到非常快。
——将会比USB转串口的波特率快得多。

但USB转串口不要想获得很多的传输频率(次数)哦~

使用特权

评论回复
22
程序匠人| | 2010-6-22 09:50 | 只看该作者
郁闷,匠人为何不来洗脑???
hotpower 发表于 2010-6-21 20:43


呵呵,昨天出差去了,今天才看见

使用特权

评论回复
23
hotpower|  楼主 | 2010-6-22 20:36 | 只看该作者
回来后先动脑~~~

使用特权

评论回复
24
程序匠人| | 2010-6-22 21:10 | 只看该作者
呵呵,俺确实没有动过这种“歪”脑筋。俺一般都是“谨遵医嘱”的。

使用特权

评论回复
25
hotpower|  楼主 | 2010-6-22 22:15 | 只看该作者
先服用“脑白金”再来~~~

使用特权

评论回复
26
gz04022167| | 2010-6-24 17:12 | 只看该作者
思想挺好

使用特权

评论回复
27
aihe| | 2010-6-24 18:51 | 只看该作者
正好看到这个网页,大叔可以参考一下吧
http://china.maxim-ic.com/app-notes/index.mvp/id/214

使用特权

评论回复
28
NE5532| | 2010-6-24 19:58 | 只看该作者
俺一般是累人,别累机器,人累坏了可以睡觉,机器累坏了再碰上个凶巴巴的客户,就得赔钱哈!

使用特权

评论回复
评分
参与人数 1威望 -5 收起 理由
谈的元 -5
29
BitFu| | 2010-6-25 11:14 | 只看该作者
IIC这种东西,用IO模拟就行了,有硬件接口也不用。

使用特权

评论回复
30
hotpower|  楼主 | 2010-6-26 23:46 | 只看该作者
正好看到这个网页,大叔可以参考一下吧
http://china.maxim-ic.com/app-notes/index.mvp/id/214
aihe 发表于 2010-6-24 18:51


这个俺早看过。

本“征脑”是PC端题目,在单总线上一致。
但I2C/SPI确实有些难度,主要是"MCU人"对PC端软件了解不深(至少一部分)。

使用特权

评论回复
31
Simon21ic| | 2010-6-27 01:01 | 只看该作者
串口做某些单总线是很简单的,比如PS/2接口,实际也就是TXD和RXD接在一起。
但是,做IIC和SPI估计就有相当的困难了。
如果简单的控制2个IO输出,模拟出IIC的话,速度估计会相当慢。

21楼正解,USB的高速在于大数据的传输。
USB转串口做的好的话,是可以达到921600bps的速度的,当然,更高的速度也是可以的,只是实际传输速度达不到。

使用特权

评论回复
32
hotpower|  楼主 | 2010-6-27 14:34 | 只看该作者

通用异步串口实现I2C/SPI硬件控制器的基本思路

本帖最后由 hotpower 于 2010-6-27 15:27 编辑
串口做某些单总线是很简单的,比如PS/2接口,实际也就是TXD和RXD接在一起。
但是,做IIC和SPI估计就有相当的困难了。
如果简单的控制2个IO输出,模拟出IIC的话,速度估计会相当慢。

21楼正解,USB的高速在于大数据 ...
Simon21ic 发表于 2010-6-27 01:01


正如31楼所提到的一切。
USB的优势在于大批量数据传送而非控制,而控制的优势在于用USB转接的设备。

USB不可能产生频率很高周期连续的脉冲波,但USB传串口则可能达到很高的速率。

在三种常用的数据总线中,单总线最好模拟,因为它们的时钟(TX输出)和数据(TX输出RX输入)是由一条通道构成。

而I2C/SPI即双线或三线(四线)协议的时钟和数据是分离的,这样用常规的思路是很难模拟出来的。

但是,I2C/SPI有个共同的特点:时钟由主设备提供,数据在时钟的某边沿产生。
那么我们必须先找寻一条提供主时钟的通道,再解决数据双向传送的问题。

首先我们可以让PC的TX数据输出端发出'0'/'1'来间接地发送“时钟”,虽然模拟出来的I2C/SPI频率慢了一倍,但对于工具接口还是能够承受的。

其次就是数据在某时钟边沿如何跳变,即控制数据的输出和对输入数据的采样,这个问题是菜农“征脑”的关键所在。

等知音~~~

使用特权

评论回复
33
Simon21ic| | 2010-6-27 17:05 | 只看该作者
这样即使实现了,仍旧还需要考虑很多问题,比如:IIC从机如果拉低SCL,这时,主机需要等待从机释放总线,然后继续操作,这个就很难实现了。
其实,即使用串口实现了这些接口,但由于串口本身的限制,很多接口是无法实现的。这样,倒还不如用个芯片,做一个USB接口的工具,可以比较简单的实现更多的接口。我做的USB_TO_XXX通用协议就是做这个功能,可以集成多种接口,甚至包括STM8的SWIM接口。并且,使用了大数据缓存(目前配置为12KB),并且一个USB命令报文,可以包括对多个接口的操作,还包括轮询功能,所以速度上也非常快。

使用特权

评论回复
34
hotpower|  楼主 | 2010-6-27 21:50 | 只看该作者
IIC从机如果拉低SCL,这时,主机需要等待从机释放总线,然后继续操作,这个就很难实现了。


这说明Simon21ic对I2C协议有深入研究,一般人只使用I2C专用器件,根本不会介意或考虑这个“严肃”的问题。

“IIC从机如果拉低SCL”主要用于解决主机和从机的速度不匹配即从机慢的问题。一般出现在从机模拟IO的项目上。

本主题是PC的Uart模拟I2C,从机一般为高速EEPROM器件或速度近乎匹配的从机,故此问题可以忽略,因为此问题将会增加本主题实现的难度。当然此问题也好解决。

至于为什么不用芯片非要给自己找麻烦,实际此主题的应用是很广泛的,是有一定意义的。

谢谢Simon21ic参与真的技术讨论~~~

使用特权

评论回复
35
hotpower|  楼主 | 2010-6-27 22:03 | 只看该作者
俺一般是累人,别累机器,人累坏了可以睡觉,机器累坏了再碰上个凶巴巴的客户,就得赔钱哈!
NE5532 发表于 2010-6-24 19:58


严重不同意,这违反自控之宗旨。

使用特权

评论回复
36
xwj| | 2010-6-27 22:17 | 只看该作者
本帖最后由 xwj 于 2010-6-27 22:18 编辑

问老Hot:
1、“用异步串口实现I2C/SPI硬件控制器”需不需要硬件转接电路?
2、如果需要硬件电路的话,那为什么不用MCU?不用逻辑器件?
3、你觉得不用MCU直接操作IO和用MCU处理数据,这两种方法可靠性孰高孰低?
4、如果用于自控、工控、私控.... 只要对可靠性稍有要求,你会优先考虑用哪一种?

使用特权

评论回复
37
hotpower|  楼主 | 2010-6-27 22:36 | 只看该作者
1.三极管,电阻应该不算“硬件”
2.MCU确实没必要,因为本可以用PC直接控制设备,如直接读写EEPROM
3.本主题是PC控制从设备
4.和“可靠性”无关,最简单的控制是最可靠的

使用特权

评论回复
38
xwj| | 2010-6-27 22:44 | 只看该作者
三极管,电阻应该不算“硬件”


:funk:

使用特权

评论回复
39
Simon21ic| | 2010-6-27 23:23 | 只看该作者
本帖最后由 Simon21ic 于 2010-6-27 23:40 编辑

纠正一个错误:
“IIC从机如果拉低SCL”主要用于解决主机和从机的速度不匹配即从机慢的问题。一般出现在从机模拟IO的项目上。

应该是主机模拟IO,从机不需要等待SCL的。

对于这个应用,提一些理论前提(资源太有限的时候,往往评估会更加简单):
0. PC操作串口的延时不可控
1. 使用TXD发送时钟
2. 接口电路需要有储存能力,因为数据不可能实时根据TXD上的波形来由主机控制。就需要实现由主机通过某种方式预先下载数据。
3. 同样,主机也无法根据TXD上的波形,实时控制数据的读取。就需要有存储接收到的数据的能力,在通信完后,再由主机读取。
4. 串口的可控输出信号只有3个,其他TXD已经用于产生时钟。

不排除这个可能:即使实现了,可能发现还是用单片机简单和便宜。。。。。

使用特权

评论回复
40
xuyiyi| | 2010-6-28 08:00 | 只看该作者
1.三极管,电阻应该不算“硬件”
hotpower 发表于 2010-6-27 22:36


N多个三极管,电阻,适当组合联接后,能组成MCU, 不知算不算“硬件”。:funk:

使用特权

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

本版积分规则