在主模式中,此进程产生I2C总线的SOL和SDA。SOL为100 kHz,由系统时钟1.832 MHz及分频计数器CNT_100kHz决定。在不同的设计中,系统时钟可能不一样。为了满足I2C时序要求,需要重新计算CNT_100kHz值,并正确设置START_HOLD和DATA_HOLD参数。 在主模式中,产生SOL和SDA的状态机如图所示。 在发送模式中,SDA信号线输出的信号为START及STOP状态,或数据寄存器MBDR中的数据。 在IDLE状态,SCL和SDA均为三态,允许主设备控制总线。一旦有START请求,且CPLD I2C在主模块式,总线空闲,则状态机会转入START状态