一般情况下,要进行I2C通讯,你最起码其中有一个芯片要本身就带有I2C通讯接口,用这个带有I2C接口的芯片来作从器件,这样就相对好处理一点。你要是两个都不带这个接口,来模拟的话,很有难度。除非你对I2C协议很清楚,不过从楼主的提问来看,估计就不怎么熟悉这种协议。
所以建议还是用别的通讯方式吧,比如用SPI,相对会好处理一点,用其中一个芯片的INTx来模拟CS接口,作为从器件在中断中来处理,另外一个就模拟主器件来控制从器件,这样或许会好弄点。如果楼主确实需要通讯,还是赶快换个思路吧,要是卡在一个地方动不了,会耽误你的进程的,祝你好运!
您好,中国最早的通讯方式是飞鸽传书,还有烽火传军情、鸿雁传书、鱼传尺素、青鸟传书、黄耳传书、风筝通信等。而通讯方式IIC(Inter-IntegratedCircuit)就是集成电路总线,只要输入收件人的E-mail地址和主题等,就可以将文件以附件或正文的形式发送出去。作为正文发送时,只须填写对方的E-mail地址,并在“主题”栏内进行简单介绍,然后单击“发送该工作表”按钮(如果你选中了工作表中的部分区域,该按钮变成“发送所选区域”)即可。当其他用户收到邮件后,可以直接对正文进行编辑修改,处理完毕后用同样方法将文件发给你。单击“附加文件按钮”,可以打开 “插入附件”对话框,像Outlook是一种多向控制总线,由飞利浦半导体公司在八十年代初设计,主要是用来连接整体电路(ICS)。在IIC中,多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源,这种方式简化了信号传输总线。谢谢。
IIC通讯只能是TTL连接通信,要求两个单片机是近距离的,应在1米以内。既然是TTL连接,为何不用串口呢,也是TTL连接,串口通信简单多了。
而IIC通信,两个单片机都是用引脚来模拟的,通信协议比较麻烦,写程序很麻烦的,又何苦呢?
我把iic通信的代码给你吧
/
向IIC总线发送一个字节数据
/
//
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++)
{;}}
}
/
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数,注意时钟过快时需要修改
当改用1T的MCU时,请调整此延时函数
/
void Delay5us()
{
_nop_();_nop_();_nop_();_nop_();
_nop_();/_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_(); /
}
/
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
当改用1T的MCU时,请调整此延时函数
/
void Delay5ms()
{
WORD n = 1000;
while (n--)
{
_nop_();_nop_();_nop_();_nop_();
};
}
void MMA8452_SendByte(BYTE dat)
{
BYTE i;
for (i=0; i<8; i++) //8位计数器
{
dat <<= 1; //移出数据的最高位
SDA = CY; //送数据口
SCL = 1; //拉高时钟线
Delay5us(); //延时
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
MMA8452_RecvACK();
}
/
从IIC总线接收一个字节数据
/
BYTE MMA8452_RecvByte()
{
BYTE i;
BYTE dat = 0;
SDA = 1; //使能内部上拉,准备读取数据,
for (i=0; i<8; i++) //8位计数器
{
dat <<= 1;
SCL = 1; //拉高时钟线
Delay5us(); //延时
dat |= SDA; //读数据
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
return dat;
}
这是我以前读取传感器信息时候用的。正好是iic通信的那部分,你自己学一下iic吧,我的程序是没问题的哦。
IIC总线在没有总裁模式的前提下,只能实现主从通信。也就是主机可以随时向从机发送数据,但只能等主机访问才能从机才能应答。这个是标准IIC协议。不知道符不符合你对双机通信的要求。电路图很简单,只用连上2条上,上拉个电阻就可以啦。IIC通信的原理参考飞利浦的标准,两线特定的状态实现数据传输开始,应答,结束等等,多看看时序图就了解啦。
但是大多数的51单片机不带硬件IIC模块,我们可以用软件来模拟。我只写过主机的模拟IIC程序,从机的没写过。从机程序51实现难度很大,也不实用。机制问题,从机响应如不能用中断实现,只能一直让程序在查询,实现起来没什么意义。如果你的51带管脚电平变化中断,可以去尝试下。
以上就是关于两个51单片机如何通过i2c通讯全部的内容,包括:两个51单片机如何通过i2c通讯、通讯方式ⅡC什么意思、两个单片机用IIC通讯,从机的函数要怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)