16.3.5 自身地址寄存器1:I2Cx_OAR1
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ADDMODE | - | ADD[9:8] | ADD[7:1] | ADD0 |
Bit 15:尋址模式(從模式)
0:7位從地址(不響應(yīng)10位地址)
1:10位從地址(不響應(yīng)7位地址)
Bit 9~Bit 8:接口地址
7位地址模式時(shí)不用關(guān)心
10位地址模式時(shí)為地址的9~8位
Bit 7Bit 1:接口地址,地址的71位
Bit 0:接口地址
7位地址模式時(shí)不用關(guān)心
10位地址模式時(shí)為地址第0位
16.3.6 自身地址寄存器2:I2Cx_OAR2
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | ADD2[7:1] | ENDUAL |
Bit 7Bit 1:接口地址,在雙地址模式下地址的71位
Bit 0:雙地址模式使能位
0:在7位地址模式下,只有OAR1被識(shí)別
1:在7位地址模式下,OAR1和OAR2都被識(shí)別
16.3.7 狀態(tài)寄存器1:I2Cx_SR1
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SMBALERT | TIMEOUT | - | PECERR | OVR | AF | ARL0 | BERR | TXE | RXNE | - | STOPF | ADD10 | BTF | ADDR | SB |
Bit 15: SMBus提醒
在SMBus主機(jī)模式下:
0:無SMBus提醒
1:在引腳上產(chǎn)生SMBAlert提醒事件
在SMBus從機(jī)模式下:
0:沒有SMBAlert響應(yīng)地址頭序列
1:收到SMBAlert響應(yīng)地址頭序列至SMBAlert變低
Bit 14:超時(shí)或Tlow錯(cuò)誤
0:無超時(shí)錯(cuò)誤
1:SCL低電平達(dá)到25ms;或主機(jī)低電平累積時(shí)間超過10ms;或從設(shè)備低電平累積時(shí)間超過25ms
Bit 12:在接收時(shí)發(fā)生PEC錯(cuò)誤
0:無PEC錯(cuò)誤:接收到PEC后接收器返回ACK(如果ACK=1)
1:有PEC錯(cuò)誤:接收到PEC后接收器返回NACK(不管ACK是什么值)
Bit 11:過載/欠載
0:無過載/欠載
1:出現(xiàn)過載/欠載
Bit 10:應(yīng)答失敗
0:沒有應(yīng)答失敗
1:應(yīng)答失敗
Bit 9:仲裁丟失(主模式)
0:沒有檢測到仲裁丟失
1:檢測到仲裁丟失
Bit 8:總線出錯(cuò)
0:無起始或停止條件出錯(cuò)
1:起始或停止條件出錯(cuò)
Bit 7:數(shù)據(jù)寄存器為空(發(fā)送時(shí))
0:數(shù)據(jù)寄存器非空
1:數(shù)據(jù)寄存器空
Bit 6:數(shù)據(jù)寄存器非空(接收時(shí))
0:數(shù)據(jù)寄存器為空
1:數(shù)據(jù)寄存器非空
Bit 4:停止條件檢測位(從模式)
0:沒有檢測到停止條件
1:檢測到停止條件
Bit 3:10位頭序列已發(fā)送(主模式)
0:沒有ADD10事件發(fā)生
1:主設(shè)備已經(jīng)將第一個(gè)地址字節(jié)發(fā)送出去
Bit 2:字節(jié)發(fā)送結(jié)束
0:字節(jié)發(fā)送未完成
1:字節(jié)發(fā)送結(jié)束
Bit 1:地址已被發(fā)送(主模式)/地址匹配(從模式)
地址匹配(從模式)
0:地址不匹配或沒有收到地址
1:收到的地址匹配Bit 1:
地址發(fā)送標(biāo)志(主模式)
0:地址發(fā)送沒有結(jié)束
1:地址發(fā)送結(jié)束
10位地址模式時(shí),當(dāng)收到地址的第二個(gè)字節(jié)的ACK后該位被置1
7位地址模式時(shí),當(dāng)收到地址的ACK后該位被置1
Bit 0:起始位(主模式)
0:未發(fā)送起始條件
1:起始條件已發(fā)送
16.3.8 狀態(tài)寄存器2:I2Cx_SR2
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PEC[7:0] | DUALF | SMBHOST | SMBDEFAULT | GENCALL | - | TRA | BUSY | MSL |
Bit 15~Bit 8:數(shù)據(jù)包出錯(cuò)檢測,當(dāng)ENPEC=1時(shí),PEC[7:0]存放內(nèi)部的PEC的值
Bit 7:雙標(biāo)志(從模式)
0:接收到的地址與OAR1內(nèi)的內(nèi)容相匹配
1:接收到的地址與OAR2內(nèi)的內(nèi)容相匹配
Bit 6:SMBus主機(jī)頭系列(從模式)
0:未收到SMBus主機(jī)的地址
1:當(dāng)SMBTYPE=1且ENARP=1時(shí),收到SMBus主機(jī)地址
Bit 5:SMBus設(shè)備默認(rèn)地址(從模式)
0:未收到SMBus設(shè)備的默認(rèn)地址
1:當(dāng)ENARP=1時(shí),收到SMBus設(shè)備的默認(rèn)地址
Bit 4:廣播呼叫地址(從模式)
0:未收到廣播呼叫地址
1:當(dāng)ENGC=1時(shí),收到廣播呼叫的地址
Bit 2:發(fā)送/接收
0:接收到數(shù)據(jù)
1:數(shù)據(jù)已發(fā)送
Bit 1:總線忙,在檢測到SDA或SCl為低電平時(shí),硬件將該位1
0:在總線上無數(shù)據(jù)通訊
1:在總線上正在進(jìn)行數(shù)據(jù)通訊
Bit 0:主從模式
0:從模式
1:主模式
16.3.9 數(shù)據(jù)寄存器:I2Cx_DR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | DR[7:0] |
Bit 7~Bit 0:8位數(shù)據(jù)寄存器,用于存放接收到的數(shù)據(jù)或放置用于發(fā)送到總線的數(shù)據(jù)
發(fā)送器模式:當(dāng)寫一個(gè)字節(jié)至DR寄存器時(shí),自動(dòng)啟動(dòng)數(shù)據(jù)傳輸。一旦傳輸開始,如果能及時(shí)把下一個(gè)需傳輸?shù)臄?shù)據(jù)寫入DR寄存器,I2C模塊將保持連續(xù)的數(shù)據(jù)流
接收器模式:接收到的字節(jié)被拷貝到DR寄存器。在接收到下一個(gè)字節(jié)之前讀出數(shù)據(jù)寄存器,即可實(shí)現(xiàn)連續(xù)的數(shù)據(jù)傳送
注1:在從模式下,地址不會(huì)被拷貝進(jìn)數(shù)據(jù)寄存器DR
注2:硬件不管理寫沖突(如果TxE=0,仍能寫入數(shù)據(jù)寄存器)
注3:如果在處理ACK脈沖時(shí)發(fā)生ARLO事件,接收到的字節(jié)不會(huì)被拷貝到數(shù)據(jù)寄存器里,因此不能讀到它
16.4 實(shí)驗(yàn)例程
16.4.1 軟件模擬IIC控制
(1)創(chuàng)建at24cxx.h文件,并輸入以下代碼。
/*********************************************************************************************************
EEPROM 驅(qū) 動(dòng) 文 件
*********************************************************************************************************/
#ifndef _AT24Cxx_H_
#define _AT24Cxx_H_
#include "sys.h"
/*********************************************************************************************************
硬 件 端 口 定 義
*********************************************************************************************************/
#define IIC_SCL PBout( 6 )
#define IIC_SDA PBout( 7 )
#define IIC_SDA_READ PBin( 7 )
/*********************************************************************************************************
函 數(shù) 列 表
*********************************************************************************************************/
void AT24Cxx_Init( void ) ; //AT24C初始化
void AT24Cxx_Write_Data( u16 Address, u8 Data ) ; //寫入1個(gè)數(shù)據(jù)
void AT24Cxx_Write_nData( u16 Address, u8 *Buffer, u16 Len ) ; //寫入n個(gè)數(shù)據(jù)
void AT24Cxx_Read_Data( u16 Address, u8 *Data ) ; //讀取1個(gè)數(shù)據(jù)
void AT24Cxx_Read_nData( u16 Address, u8 *Buffer, u16 Len ) ; //讀取n個(gè)數(shù)據(jù)
#endif
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7516瀏覽量
164065 -
EEPROM
+關(guān)注
關(guān)注
9文章
1026瀏覽量
81755 -
存儲(chǔ)芯片
+關(guān)注
關(guān)注
11文章
900瀏覽量
43201
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論