我计划在atmega16中实现基于GPIO的I2C。 因为它应该有两个引脚SCL,SDA。 SDA引脚应该是双向的,但我所知道的是,我们可以将引脚设置为输入或输出。
我们可以通过什么方式实施它?
答案 0 :(得分:1)
SDA引脚应该是双向的,但我所知道的是我们可以将引脚设置为输入或输出。
这是事实,但I2C主设备“知道”何时期望输入数据。由于这是一个同步总线,主机可以在输入/输出数据之前切换驱动输出或切换到三态/输入。
Atmel的此应用说明可能对您有用:Atmel AVR156: TWI Master Bit Bang Driver
Atmel的例子使用了一种限制速度的轮询方法。如果您的某个GPIO具有引脚更改中断支持,您可以利用它来获得更高的速度(如果需要)。