原创 说实话我是TWI"砖家"

2006-12-28 22:53 5446 9 9 分类: MCU/ 嵌入式
说实话我是TWI"砖家"
mood.gif hotpower 发表于 2006-3-17 01:16 同僚|校友|老乡会 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖举报该贴


TWI=I2C--->SMBUS...

一般多是一主多从系统,而不太主张多主多从系统,这样通讯体系过于复杂.
而且从机一般是小容量的MCU,很难构成复杂的通讯网络.

再一般的从机实际都是I2C器件,地址不重复但固定.

所以,SCL的方向一般是不变的,即由主机提供一主多从系统时钟信号.

虽说SCL/SDA的上拉电阻应该由主机提供,但分离的系统从机由于担心误动作

都接有自己的上拉电阻,而且一般都又主机唤醒,以便达到从机在不通讯时的低功耗.

由于从机各自的差异,就有高速低速设备速率匹配的问题.

在一主多从系统只需主机"一人考虑"即可,从机只需按与主机实现约定的速率通讯.

一般采用从机采用拉低SCL与主机速率匹配...

这里给个USI接口的实战片段...(USI=I2C或SPI)

void UsiObj::Exec(void)
{
unsigned char temp;
  DDRB &= ~(_BV(SCL) | _BV(SDA)); //SCL设置为输入方式,SCL信号由主机提供
  while (temp = (PINB & _BV(SCL)));//等待SCL=0主机处理结束
  PORTB &= ~_BV(SCL);//保持低电平
  DDRB |= _BV(SCL);//占用SCL总线,以便长期处理

http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2017416
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条