关于I2C总线的基本操作
扫描二维码
随时随地手机看文章
软件实现I2C主模式通讯看似简单,但实际应用中最容易犯的错误就是对SCL和SDA总线上高电平的实现过程。在硬件设计上,任意选择单片机的两个IO引脚分别指派为SCL和SDA,虽然不是必须的,但为方便软件编程一般设于同一个端口,并在其上外接上拉电阻,至于ESD保护电阻和抗干扰滤波电容则为可选件,不影响I2C总线通讯。当器件占用总线时,需要在SCL或SDA引脚上输出低电平, 软件就将PORT寄存器相关位设定为0的同时对应的TRIS寄存器位也设为0;当释放总线即总线上变为高电平时,注意不能直接从IO引脚上输出高电平,而是应该将TRIS位设为1,使引脚变成高阻输入状态,通过外接的上拉电阻得到高电平。很多工程师没有遵循这种操作规范,尽管在特定的应用中也可以实现I2C通讯,但留有很多隐患,不可盲目照搬。 对于PIC单片机来说,I2C总线的控制基本上可以简化到对TRIS寄存器相关位的控制。在初始化时先将数据端口寄存器PORTx |