我们知道IIC器件分为标准模式、快速模式、高速模式。
快速模式器件可以向下兼容标准模式。
如图是IIC的快速模式和标准模式的时序要求,从时序表来看大部分数据问我们都可以直观的看出快速模式可以兼容标准模式,但是这其中在SDA、SCL的上升和下降时间这两项就有问题了,快速模式要求是最大值是300ns,而标准模式对上升时间的要求是最大值1000ns。
这就有问题了,如果我主机是标准模式的IIC接口,而从机是快速模式的IIC接口,如果主机的SDA和SCL的上升时间是超过300ns的,比如500ns,那这时候对于从机来说,不就是无法满足从机的IIC快速模式标准了吗?
我理解是向下兼容是不是只是在主机为快速模式器件,而从机为标准模式器件时,主机发给从机,这样才是协议里面说的向下兼容。
Kailyn Chen:
是的,如果从机只支持标准模式,那么主机虽然支持快速模式,但也是工作在标准模式,就按照标准模式的时序,这是所说的向下兼容。
,
K!:
你好,那如果主机是只支持标准模式的呢,然后从机是支持快速模式的,那这时候应该用哪一个标准来卡呢,这时候从机到底是按照标准模式的时序要求,还是按照快速模式的时序要求呢?现在矛盾的地方就是SDA和SCL的上升和下降时间的问题,如果主机是标准模式,发给从机,而从机是快速模式,但这时候上升时间是500ns,那不就是对于从机就有问题了,无法满足从机的时序要求了。
,
K!:
因为我们在一些项目过程中,经常出现硬件IIC接口,是快速模式的接口,但是工作在小于100kHZ的速率下,那原先我们的测试标准就是不管你这个器件是快速模式器件还是标准模式器件,如果低于100kHz那就按照标准模式的时序,如果是100到400k就是按照快速模式的时序,但是我们的理解是,IIC器件他自己是不会去改变工作模式的,快速模式的器件自身的IIC接口的响应速度就是比标准模式器件要快的,而跟工作的频率无关,快速模式器件工作在100k以下依旧是快速模式。所以我想用频率来管控标准是不对的。
,
K!:
所以我在想如何去确定这个测试标准:
如果主机是快速模式器件,总线上只要有一个从机是标准模式,那就必须按照标准模式的标准来,因为在写地址阶段,数据是广播到每一个从机的,每一个从机都会去判断到底是不是在自己的地址,所以这时候就得按照标准模式来。快速模式器件也必须发出符合标准模式器件的时序标准。
但如果主机是标准模式器件,总线上的从机有快速模式器件存在,那这时候对于从机来说,又应该使用哪一个标准来判定呢?这时候总线的时钟频率必定是小于100k的,那这时候从机中的快速模式器件是按照标准模式的时序标准呢,还是按照快速模式的时序标准呢?
所以这里面有一个点,硬件IIC接口内部到底会不会根据时钟频率来调整工作模式。快速模式器件如果工作在低于100k的时钟速率下,会不会自动改为标准模式。如果是会改变工作模式,那硬件IIC接口内部不就需要两套电路了吗?
,
Kailyn Chen:
K! said:那如果主机是只支持标准模式的呢,然后从机是支持快速模式的,那这时候应该用哪一个标准来卡呢,这时候从机到底是按照标准模式的时序要求,还是按照快速模式的时序要求呢?
按照能够支持的最低速率,也就是说主机只支持100Kbps。即使从机能支持到400Kbps,也要工作100kbps速率模式。
K! said:如果主机是标准模式,发给从机,而从机是快速模式,但这时候上升时间是500ns,那不就是对于从机就有问题了,无法满足从机的时序要求了。
主机按照标准模式发送给从机,从机最高支持400Kbps快速模式,又能向下兼容支持100Kbps标准模式下的速率,所以从机也会工作在标准 模式下。
,
K!:
其实就是说IIC接口还是会根据SCL的频率来调整输出信号的时序了,自适应的对吧