有關(guān)I2C占空比寄存器設(shè)置問(wèn)題
-----------------------------------------------------------------------
I2C0SCLH = (Fpclk/fi2c + 1) / 2;
I2C0SCLL = (Fpclk/fi2c)/2;
在I2C0SCLH = (Fpclk/fi2c+ 1) / 2;里,
為什么是Fpclk/fi2c + 1而不是Fpclk/fi2c?
-----------------------------------------------------------------------
解答:
***********************************************************************
根據(jù)公式:I2SCLH + I2SCLL = Fpclk / Fbit(0)原始公式
在計(jì)算機(jī)的數(shù)字運(yùn)算中,我們這樣做了:
I2SCLH = (Fpclk / Fbit + 1)/ 2(1)
I2SCLL = (Fpclk / Fbit)/ 2(2)
那么I2SCLH + I2SCLL = (Fpclk / Fbit + 1)/ 2 +(Fpclk / Fbit)/ 2(3)在計(jì)算機(jī)數(shù)字運(yùn)算中兩項(xiàng)不能合并
為了證明我們這樣做是沒(méi)有問(wèn)題的,在這里我們舉個(gè)例子進(jìn)行說(shuō)明:
假設(shè)I2SCLH + I2SCLL = Fpclk / Fbit = 5
只有這么做了:
I2SCLH = (Fpclk / Fbit + 1)/ 2 = 3
I2SCLL = (Fpclk / Fbit)/ 2 = 2
才能保證:
I2SCLH + I2SCLL = 5符合原始公式(0)。
如果像疑問(wèn)中所說(shuō)的那樣,I2SCLH + I2SCLL = (Fpclk / Fbit)/ 2 +(Fpclk / Fbit)/ 2 = 4,那么就和原始公式(0)不符了!
評(píng)論