HC6800-ES-V2.0 发表于 2018-5-18 07:25 还有一事相求,就是这个dat的那个数据是怎么一位一位的传送过去的呀?有时候高位传送在前,有时低位在前,我知道那个移位操作,但是不理解数据怎么从单片机发出去的原理 |
林曦 发表于 2018-5-18 08:40 首先感谢你,然后我还有一个问题想问,那个dat的数据到底是怎么发送出去的呀?就是怎么移位之后,就能发出去一个字节呢?不知道听没听懂我说的 |
HC6800-ES-V2.0 发表于 2018-5-18 07:25 好的,我明白了,感谢你,你真好 |
各位麻烦帮我看看吧 |
I2C发送数据时,只有在SCL低电平的时候,SDA电平改变,发送一位数据。当SDA第一次发送0时,第二次依旧发送0,SDA电平是不会改变的。 如图所示,假如dat为1001 1100,dat右移7位,是将第一位1发送出去,然后第二位0左移1位,dat为 0011 1000,for第二次循环发送第一位0,依次类推,把dat数据发送出去。 |
你可能记错。 I2C只要求在SCL读取期间,SDA一定要保证电平稳定,没有说要变化。 例如:发送字节0,当SCL到高电平读数据时,只要你的SDA一直都是低电平,持续5us以上就可以,并没有说电平变化。 我们一般做法是,先让SDA置成高或低电平,再让SCL从低电平跳到高电平,开始读数据,就可以了。 你的程序就是这样的嘛。没毛病! |