16.3 STM32內(nèi)部IIC協(xié)議相關(guān)寄存器
16.3.1 控制寄存器1:I2Cx_CR1
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SWRST | - | ALERT | PEC | POS | ACK | STOP | START | NOSTRETCH | ENGC | ENPEC | ENAPR | SMBTYPE | - | SMBUS | PE |
Bit 15:軟件復(fù)位
0:I2C模塊不處于復(fù)位
1:I2C模塊處于復(fù)位
Bit 13:SMBus提醒:軟件可以設(shè)置或清除該位,當(dāng)PE=0時(shí),由硬件清除
0:釋放SMBAlert引腳使其變高,提醒響應(yīng)地址頭緊跟在NACK信號(hào)后面
1:驅(qū)動(dòng)SMBAlert引腳使其變低,提醒響應(yīng)地址頭緊跟在ACK信號(hào)后面
Bit 12:數(shù)據(jù)包出錯(cuò)檢測(cè)
0:無PEC傳輸
1:PEC傳輸
Bit 11:應(yīng)答/PEC位置
0:ACK位控制當(dāng)前移位寄存器內(nèi)正在接收的字節(jié)的ACK。PEC位表明當(dāng)前移位寄存器內(nèi)的字節(jié)是PEC
1:ACK位控制在移位寄存器里接收的下一個(gè)字節(jié)的ACK。PEC位表明在移位寄存器里接收的下一個(gè)字節(jié)是PEC
注1:POS位只能用在2字節(jié)的接收配置中,必須在接收數(shù)據(jù)之前配置
注2:為了NACK第2個(gè)字節(jié),必須在清除ADDR為之后清除ACK位
注3:為了檢測(cè)第2個(gè)字節(jié)的PEC,必須在配置了POS位之后,拉伸ADDR事件時(shí)設(shè)置PEC位
Bit 10:應(yīng)答使能
0:無應(yīng)答返回
1:在接收到一個(gè)字節(jié)后返回一個(gè)應(yīng)答
Bit 9:停止條件產(chǎn)生
在主模式下:
0:無停止條件產(chǎn)生
1:在當(dāng)前字節(jié)傳輸或在當(dāng)前起始條件發(fā)出后產(chǎn)生停止條件
在從模式下:
0:無停止條件產(chǎn)生
1:在當(dāng)前字節(jié)傳輸或釋放SCL和SDA線
Bit 8:起始條件產(chǎn)生
在主模式下:
0:無起始條件產(chǎn)生
1:重復(fù)產(chǎn)生起始條件
在從模式下:
0:無起始條件產(chǎn)生
1:當(dāng)總線空閑時(shí),產(chǎn)生起始條件
Bit 7:禁止時(shí)鐘延長
0:允許時(shí)鐘延長
1:禁止時(shí)鐘延長
Bit 6:廣播呼叫使能
0:禁止廣播呼叫,以非應(yīng)答響應(yīng)地址00h
1:允許廣播呼叫,以應(yīng)答響應(yīng)地址00h
Bit 5:PEC使能
0:禁止PEC計(jì)算
1:開啟PEC計(jì)算
Bit 4:ARP使能
0:禁止ARP
1:使能ARP
注1:如果SMBTYPE=0,使用SMBus設(shè)備的默認(rèn)地址
注2:如果SMBTYPE=1,使用SMBus的主地址
Bit 3:SMBus類型
0:SMBus設(shè)備
1:SMBus主機(jī)
Bit 1:SMBus模式
0:I2C模式
1:SMBus模式
Bit 0:I2C模塊使能
0:禁用I2C模塊
1:?jiǎn)⒂肐2C模塊,根據(jù)SMBus位的設(shè)置,相應(yīng)的I/O口需配置為復(fù)用功能
注:在主模式下,通訊結(jié)束之前,絕不能清除該位
16.3.2 控制寄存器2:I2Cx_CR2
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | LAST | DMAEN | ITBUFEN | ITEVTEN | ITERREN | - | FREQ[5:0] |
Bit 12:DMA最后一次傳輸
0:下一次DMA的EOT不是最后的傳輸
1:下一次DMA的EOT是最后的傳輸
Bit 11:DMA請(qǐng)求使能
0:禁止DMA請(qǐng)求
1:當(dāng)TxE=1或RxNE=1時(shí),允許DMA請(qǐng)求
Bit 10:緩沖器中斷使能
0:當(dāng)TxE=1或RxNE=1時(shí),不產(chǎn)生任何中斷
1:當(dāng)TxE=1或RxNE=1時(shí),產(chǎn)生事件中斷
Bit 9:事件中斷使能
0:禁止事件中斷
1:允許事件中斷
在下列條件下,將產(chǎn)生該中斷:
SB=1(主模式)
ADDR=1(主/從模式)
ADD10=1(主模式)
STOPF=1(從模式)
BTF=1,但是沒有TxE或RxNE事件
如果ITBUFEN=1,TxE事件為1
如果ITBUFEN=1,RxNE事件為1
Bit 8:出錯(cuò)中斷使能
0:禁止出錯(cuò)中斷
1:允許出錯(cuò)中斷
在下列條件下,將產(chǎn)生該中斷:
BERR=1
ARLO=1
AF=1
OVR=1
PECERR=1
TIMEOUT=1
SMBAlert=1
Bit 5~Bit 0:I2C模塊時(shí)鐘頻率,允許的范圍在2~36MHz之間
000000:禁用
000001:禁用
000010:2MHz
...
100100:36MHz
大于100100:禁用
16.3.3 上升時(shí)間寄存器:I2Cx_TRISE
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | TRISE[5:0] |
Bit 5~Bit 0:在快速/標(biāo)準(zhǔn)模式下的SCL最大上升時(shí)間(主模式)
例如:標(biāo)準(zhǔn)模式中最大允許SCL上升時(shí)間為1000ns。如果在I2C_CR2寄存器中FREQ中的值等于0x08且TPCLK1=125ns,故TRISE中必須寫入09h(1000ns/125ns=8+1)
注:只有當(dāng)PE=0時(shí),才能設(shè)置TRISE
16.3.4 時(shí)鐘控制寄存器:I2Cx_CCR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F/S | DUTY | - | CCR[11:0] |
Bit 15:I2C主模式選項(xiàng)
0:標(biāo)準(zhǔn)模式的I2C
1:快速模式的I2C
Bit 14:快速模式時(shí)的占空比
0:快速模式下T low /T high =2
1:快速模式下T low /T high =16/9
Bit 11~Bit 0:快速/標(biāo)準(zhǔn)模式下的時(shí)鐘控制分頻系數(shù)(主模式)
在I2C標(biāo)準(zhǔn)模式或SMBus模式下:
T high =CCR×TPCLK1
T low =CCR×TPCLK1
在I2C快速模式下:
如果DUTY=0:
T high =CCR×TPCLK1
T low =2×CCR×TPCLK1
如果DUTY=1:
T high =9×CCR×TPCLK1
T low =16×CCR×TPCLK1
例如:在標(biāo)準(zhǔn)模式下,產(chǎn)生100kHz的SCL的頻率,如果FREQR=08,TPCLK1=125ns,則CCR必須寫入0x28(40×125ns=5000ns)
注1:允許設(shè)定的最小值為0x04,在快速DUTY模式下允許的最小值為0x01
注2:fCK應(yīng)當(dāng)是10MHz的整數(shù)倍,這樣可以正確產(chǎn)生400kHz的快速時(shí)鐘
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7518瀏覽量
164083 -
EEPROM
+關(guān)注
關(guān)注
9文章
1027瀏覽量
81773 -
存儲(chǔ)芯片
+關(guān)注
關(guān)注
11文章
900瀏覽量
43205
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論