winmenaruto 发表于 2012-1-18 11:28:31

为什么带i2c接口的arm cpu不需要时序控制了?

比如,控制单片机,用gpio模拟ic,需要写函数,对clk线拉高拉低,起始条件,终止条件,ACK。
void Ack(void) /*应答位*/
{
Sda=0;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
_nop_ ();
Scl=0;
}

但是如果你的cpu带了I2c接口,我发觉driver里边看不到什么起始条件,ACK等等了,直接查询I2C的寄存器,ready就把值读过来就好了,起始条件,ack什么完全不用,这个是硬件帮你做好了,还是 ?那所谓的带I2C接口,就是硬件帮你把起始条件什么做好了的意思吗?

gold 发表于 2012-1-18 12:54:05

这和呼风唤雨一样的道理,所以不再需要起始、停止等信号,能控制它是因为CPU想控制,要去控制

winmenaruto 发表于 2012-1-18 14:25:47

回复【1楼】gold
这和呼风唤雨一样的道理,所以不再需要起始、停止等信号,能控制它是因为cpu想控制,要去控制
-----------------------------------------------------------------------

呼风唤雨?

rtems 发表于 2012-1-18 14:37:01

I2C控制器自动做了,设置好频率等参数,写数据寄存器就好了

Wolf_commander 发表于 2012-1-18 15:03:11

我还发现带UART接口的也不需要软件去做时序控制。。

laozheng001 发表于 2012-1-18 15:12:47

回复【3楼】rtems
-----------------------------------------------------------------------

对,这个其实就是控制器的问题了./emotion/em011.gif

USACH 发表于 2012-1-18 16:18:32

ack判断还是要做的吧,其余的硬件上比较全面,如果没有ack判断,会死在IIC的。

rtems 发表于 2012-1-18 17:03:08

ACK有状态寄存器的状态位指示,不需要检测时序,读寄存器就可以了。

winmenaruto 发表于 2012-1-18 17:26:47

回复【7楼】rtems
ack有状态寄存器的状态位指示,不需要检测时序,读寄存器就可以了。
-----------------------------------------------------------------------

也就是连ack都硬件发了,是吗

cht-rtos 发表于 2012-1-18 19:30:41

硬件帮你做了很多事,不然要I2C控制器干吗

quzegang 发表于 2012-1-18 19:33:25

atmel的TWI(IIC),只需要操作相关寄存器即可,所有时序都是硬件自动完成。

TANK99 发表于 2012-1-18 19:46:41

硬件IIC,通讯过程中,切换时钟会怎样?

还是用口线模拟吧。

not_at_all 发表于 2012-1-18 20:01:24

回复【11楼】TANK99
硬件iic,通讯过程中,切换时钟会怎样?
----------------------------------------
通讯过程中,时钟切换是无效或者延迟到通信完毕才生效的。

Nuker 发表于 2012-1-18 20:13:45

下图是PIC12的硬件I2C,CPU只需要访问图中的寄存器就可以完成I2C通信了,时序控制都由这些硬件来完成。
http://cache.amobbs.com/bbs_upload782111/files_50/ourdev_713768O31ETW.PNG
(原文件名:PIC_I2C.PNG)

rtems 发表于 2012-1-18 21:02:22

回复【8楼】winmenaruto
回复【7楼】rtems
ack有状态寄存器的状态位指示,不需要检测时序,读寄存器就可以了。
-----------------------------------------------------------------------
也就是连ack都硬件发了,是吗
-----------------------------------------------------------------------

是的,不光发ACK,也能检测ACK。

winmenaruto 发表于 2012-1-19 10:32:31

i2c接口不错,省了我们很多,我连i2c协议 都不用了解了。。直接查询状态,ready就读,
页: [1]
查看完整版本: 为什么带i2c接口的arm cpu不需要时序控制了?