1.I2c主控與從設備關系
對于寫操作,主控作為transmitter,從設備作為receiver
對于讀操作,主控作為receiver, 從設備作為transmitter
2.I2c控制器
2.1總框圖
Pclk = 50Mhz, 經過prescaler分頻,可以得到SCL。
IICSTAT:發出S(start)信號或者P(stop)信號。
Data Bus可以把數據寫入IICDS寄存器,然后會自動產生SCL,并且會將8位數據從SDA同步給slave dev,
在數據發送出去后,在第9個SCL時鐘,會受到slave dev的ack應答,可以通過查詢IICSTAT來判斷是否有ACK回應。
當slave dev回應ACK后,那么又可以繼續發送數據,繼續寫入據到IICDS。
當主控想結束,設置IICSTAT發出P信號。
2.2 寄存器介紹
1.IICCON(用來配置i2c時鐘)
Bit[7]: 對于發送模式,不需要配置ack信號,ack是接收者發送回來的應答。對于接受模式,設置成1,讓它在第9個CLK發出ack訊號(拉低sda)。
Bit[6]:SCL時鐘源,pclk分頻即可
Bit[5]:中斷使能,使用i2c時要去enable
Bit[4]:中斷狀態標識 表示中斷有沒有結束,當該bit讀出來是1時,SCL被拉低表示busy,也就是i2c中斷還在處理中。當i2c中斷處理結束后,可以將該bit 清0,釋放出SCL。
Bit[3:0]:i2c時鐘分頻系數配置,SCL時鐘 = IICCLK/(IICCON[3:0]+1)
2.IICSTAT(配置模式,S,P信號,查詢是否有ack)
bit[7:6]:模式選擇
Bit[5]:當讀的時候,0表示not busy,1表示busy
當寫的時候,0表示寫入STOP, 1表示寫入START
Bit[4] : 數據輸出使能,0:表示disable, 1表示enable
Bit[3]:仲裁flag
Bit[0]:表示i2c總線上的第9個時鐘周期有沒有ack,1表示有ack, 0表示無ack
3.IICADD(配置從機地址)
4.IICDS: (保存的是要發送或已經接收的數據)
3. 讀寫操作流程
The following steps must be executed before any IIC Tx/Rx operations.
1. Write own slave address on IICADD register, if needed.
2. Set IICCON register.
a) Enable interrupt
b) Define SCL period
3. Set IICSTAT to enable Serial Output
在操作tx,rx前,要先執行以下幾步驟:
1.IICADD寫入從設備地址
2.設置IICCON,設置時鐘,使能中斷
3.設置IICSTAT,使能傳輸
操作模式:
The S3C2440A IIC-bus interface has four operation modes:
— Master transmitter mode
— Master receive mode
— Slave transmitter mode
— Slave receive mode
①Master/Transmitter Mode
配置成master tx mode(也就是IICSTAT[7:6]配置成11)
把從設備地址寫入IICDS,(第一次傳輸地址)
IICSTAT寫入0xF0(使能傳輸,發S信號,使能tx/rx)
IICDS中配置的數據(從設備地址7bit + 讀寫位1bit)就被發送出去了(每傳輸完一個數據將產生一個中斷)
判斷第9個clk從設備是否有ack
如果從設備有ack,恢復i2c傳輸
IICDS = buf
Clear pending bit
數據被發送出去,繼續i2c傳輸
如果沒有ack, stop,返回錯誤
IICSTAT = 0xd0
Clear pending bit(IICCON[4])
Delay一會兒等待停止條件生效
②Master/Receiver Mode
配置成master rx mode(也就是IICSTAT[7:6]配置成10)
把從設備地址寫入IICDS,(第一次傳輸地址)
IICSTAT寫入0xB0(使能傳輸)
IICDS中配置的數據(從設備地址7bit + 讀寫位1bit)就被發送出去了(每傳輸完一個數據將產生一個中斷)
判斷第9個clk從設備是否有ack
如果從設備有ack,恢復i2c傳輸
Buf = IICDS
Clear pending bit
數據被接受到,繼續i2c傳輸
如果沒有ack, stop,返回錯誤
IICSTAT = 0x90
Clear pending bit
Delay一會兒
③Slave/Transmitter Mode
④Slave/Receiver Mode
上一篇:s3c2440裸機-I2c編程-3-i2c程序框架
下一篇:s3c2440裸機-I2c編程-1-i2c協議
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- 帶有 SemPulse 接口的 6 個 LED 的 SC654 光管理單元的典型應用
- 輝光鐘_控制板
- AD587JRZ 低功耗基準電壓源、12 位 CMOS DAC 應用的典型應用電路
- LTM4630EY 4.5V 至 15Vin、1.5V 和 1.2V、18A 輸出 DC/DC 穩壓器的典型應用電路
- L7815C 高電容負載輸入短路保護的典型應用
- 通用離線線性順序LED驅動器AC/DC LED驅動系統典型應用電路
- V3s_FlyController
- MCP3221A5T模數轉換模塊
- AD9228-65EBZ,用于評估 AD9228 四通道、12 位、65MSPS 串行 LVDS 1.8V ADC 的評估板
- UV深紫外LED 18650電池座版本