CC3200系列教程之IIC主机——注意点

来源:互联网 发布:阿里云隐藏域名信息 编辑:程序博客网 时间:2024/06/10 03:57

汗,本来是想写IIC教程的,结果发现IIC好像没有什么要写的东西,看看官方的例程,基本的IIC也就出来,难道要我再造轮子? 于是想写一下注意点。

一般IIC都是用于传感器的通信的,发现官方的板子自带的温度传感器是SMBUS通信协议的,SMBUS是可以用IIC通信,但是有点小区别,具体的区别自己可以google下。


背景:

N天以前,有个同学说,他用IIC去获取陀螺仪的数据,结果怎么都不成功。刚好我在N天前有用过IIC,知道了CC3200的IIC跟我们平常用的IIC有点不太一样(平常我用的是软件的IIC),一眼就知道问题出现在哪里,然后跟他讲了好多IIC的东西,唉,有些代码可能会误导那些对IIC协议不太懂的同学。


像stm32的硬件IIC是比较特别的,所以基本上都是用软件的IIC。什么是软件的IIC:软件控制IO的电平,模仿出IIC的时序图。在这个过程中需要软件去控制电平。

当时如果是硬件IIC的话,就不需要软件去控制电平了,芯片自己会帮我们做了。


IIC协议:如果有不懂的话,请自己先GOOGLE下,花几分钟去详细了解它。哥哥在这里就介绍重点。


IIC分成主机和从机,从机都需要一个地址,这个地址是7BIT的,假设

设备地址是 0b1100 111  ------7bit                                    -------在CC3200的IIC中,我们只关心这个

主机向从机发送数据时的地址是   0b1100 1110  -----8bit    -------在CC3200的IIC中,我们不关心这个

从机向主机发送数据时的地址是   0b1100 1111   -----8bit   -------在CC3200的IIC中,我们不关心这个

地址的最低bit是用来标识数据的传输方向,所以当我们用软件的IIC,这个bit是需要我们去控制的。


如果我们是用软件的IIC,一般给出的就是    写地址==0b1010 1110   和     读地址== 0b1100 1111  ,8bit总比7bit看的顺眼吧.

如果是硬件的IIC,地址就是 0b1100 111 ,至于是写或者是读,都是由CC3200帮我们做了。所以我们给CC3200的设备地址是7bit。

原创粉丝点击