疑问:
———————————————————————–
I2C0SCLH = (Fpclk/fi2c + 1) / 2;
I2C0SCLL = (Fpclk/fi2c)/2;
在I2C0SCLH = (Fpclk/fi2c+ 1) / 2;里,
为什么是Fpclk/fi2c + 1而不是Fpclk/fi2c?
———————————————————————–
回答:
***********************************************************************
依据公式:I2SCLH + I2SCLL = Fpclk / Fbit(0)原始公式
在计算机的数字运算中,咱们这样做了:
I2SCLH = (Fpclk / Fbit + 1)/ 2(1)
I2SCLL = (Fpclk / Fbit)/ 2(2)
那么I2SCLH + I2SCLL = (Fpclk / Fbit + 1)/ 2 +(Fpclk / Fbit)/ 2(3)在计算机数字运算中两项不能兼并
为了证明咱们这样做是没有问题的,在这里咱们举个比如进行阐明:
假定I2SCLH + I2SCLL = Fpclk / Fbit = 5
只要这么做了:
I2SCLH = (Fpclk / Fbit + 1)/ 2 = 3
I2SCLL = (Fpclk / Fbit)/ 2 = 2
才干确保:
I2SCLH + I2SCLL = 5契合原始公式(0)。
假如像疑问中所说的那样,I2SCLH + I2SCLL = (Fpclk / Fbit)/ 2 +(Fpclk / Fbit)/ 2 = 4,那么就和原始公式(0)不符了!