娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

s3c2440裸機-I2c編程-2-i2c控制器

發布者:EnchantedWish最新更新時間:2024-07-05 來源: elecfans關鍵字:i2c控制器 手機看文章 掃描二維碼
隨時隨地手機看文章

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



  1. 配置成master tx mode(也就是IICSTAT[7:6]配置成11)

  2. 把從設備地址寫入IICDS,(第一次傳輸地址)

  3. IICSTAT寫入0xF0(使能傳輸,發S信號,使能tx/rx)

  4. IICDS中配置的數據(從設備地址7bit + 讀寫位1bit)就被發送出去了(每傳輸完一個數據將產生一個中斷)

  5. 判斷第9個clk從設備是否有ack

    1. 如果從設備有ack,恢復i2c傳輸

      1. IICDS = buf

      2. Clear pending bit

      3. 數據被發送出去,繼續i2c傳輸

    2. 如果沒有ack, stop,返回錯誤

      1. IICSTAT = 0xd0

      2. Clear pending bit(IICCON[4])

      3. Delay一會兒等待停止條件生效

②Master/Receiver Mode


  1. 配置成master rx mode(也就是IICSTAT[7:6]配置成10)

  2. 把從設備地址寫入IICDS,(第一次傳輸地址)

  3. IICSTAT寫入0xB0(使能傳輸)

  4. IICDS中配置的數據(從設備地址7bit + 讀寫位1bit)就被發送出去了(每傳輸完一個數據將產生一個中斷)

  5. 判斷第9個clk從設備是否有ack

    1. 如果從設備有ack,恢復i2c傳輸

      1. Buf = IICDS

      2. Clear pending bit

      3. 數據被接受到,繼續i2c傳輸

    2. 如果沒有ack, stop,返回錯誤

      1. IICSTAT = 0x90

      2. Clear pending bit

      3. Delay一會兒

③Slave/Transmitter Mode



④Slave/Receiver Mode


關鍵字:i2c控制器 引用地址:s3c2440裸機-I2c編程-2-i2c控制器

上一篇:s3c2440裸機-I2c編程-3-i2c程序框架
下一篇:s3c2440裸機-I2c編程-1-i2c協議

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 湖州市| 海安县| 益阳市| 拜泉县| 禹城市| 浙江省| 固阳县| 西乡县| 高台县| 南郑县| 普陀区| 石嘴山市| 阆中市| 黑河市| 东乡族自治县| 新乡县| 海原县| 深泽县| 南城县| 富蕴县| 太和县| 茂名市| 奉化市| 揭西县| 元氏县| 丹东市| 全南县| 白朗县| 顺义区| 永安市| 韶山市| 大关县| 孟连| 海林市| 上高县| 孟津县| 惠水县| 望都县| 兰考县| 九江市| 安阳县|