I2CI2C Q&A
Posted Evan_ZGYF丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I2CI2C Q&A相关的知识,希望对你有一定的参考价值。
【I2C】在中断函数中能否使用I2C传输?为什么?
不能,多点原因.
1.中断要求尽快处理,否则会影响到其他中断的响应。(I2C和SPI传输过程都比较耗时)
2.I2C传输(I2C_transfer)时transfer内部如果使用中断传输模式,则会造成“中断嵌套”,会出一些不可预见的错误。(内核可能崩溃)
【I2C】I2C的传输速率有哪几种?如何设置?如何获取?
IIC传输位速率在
标准模式下可达100Kbit/s,
快速模式下可达400Kbit/s,
高速模式下可达3.4Mbit/s;
I2C的传输速率和I2C的时钟频率相关。
时钟频率(Hz)与数据传输速率(bit/s)两者是相同的概念。
时钟频率与数据传输率是如何对等的喃。因为一个SCL时钟周期只能传输1bit数据(并且只能在SCL的低电平期间进行SDA数据电平的变化),
假如SCL的时钟频率为100KHz,那么1s中就能产生100K个SCL时钟周期,也就是说1s中可以传输100Kbit的数据。
此时,可以看出时钟频率100KHz与数据传输率100Kbit/s就是一样的了。
因此,想要设置I2C的传输速率,只需要设置I2C的时钟频率就好了。
I2C时钟频率的设置:
一般是I2C总线控制器里面去设置,和具体的控制器型号和对应的I2C总线驱动相关。
有的I2C总线会注册相应的回调函数,通过i2c_ioctl去设置。
还有的办法就是在dts下面通过clock节点去传递I2C的时钟频率
这样我们就可以在dts下面去获取和设置I2C的时钟频率的。会更加的标准。
以上是关于I2CI2C Q&A的主要内容,如果未能解决你的问题,请参考以下文章