第一次用普通IO口模拟I2C接口。
用pic16F1933单片机的RB5(SDA), RB4(SCL)模拟SDA,SCL。结果调了半天也没调出来。两根线都接了10k的上拉电阻。
最后还是把这两根相应的输出线接到RC4和RC3(单片机定义的I2C输出引脚。)才算是模拟成功。
不知道为什么一定要接在这两个引脚上才能模拟成功?
难道是IO口初始化的问题?我把两根普通IO都设成了输出模式。也有做为SCL的那个引脚设成高电平输出的。试了不少组合。
ANSELA = 0b00000000;
ANSELB = 0b00110000;
TRISA = 0b00000000; //output
TRISB = 0b00100000;
TRISC = 0b00000000; //MSB...LSB
PORTA = 0b11001110;
PORTB = 0b00000000;
PORTC = 0b00000111;//
我也把几种可能的情况试了一下,只要不是接在单片机定义的I2C输出引脚,就是不能成功通信。
不知是何道理,还望赐教!谢谢! |