日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

I2C 配置及应用

發布時間:2024/4/24 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 I2C 配置及应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、I2C的協議這里就不贅述了,隨便搜一下就可以了解。

二、I2C的初始化

1.Enable I2C clock

configure the PSC register(if it is driven by PSC)PSC相關說明可以查看手冊

2. Configure the PinMultiplexing registers

3. Place I2C in reset

set IRS =0 in ICMDR register

4.Configure the peripheral clock operation frequency(ICPSC)

NOTE:the frequency should be between 6.7 and 13.3MHz

5.Configure i2c master clock frequency:

configure ICCLKL , ICCLKH

7.Make sure the interrupt status register(ICSTR) is cleared:

Read ICSTR and write it back (write 1 to clear) ICSTR = ICSTR

Read ICIVR until it is 0.?

8.Take i2c controller out of reset?

set IRS=1 in ICMDR

?

三、I2C作為master發送數據的配置

?

?

1. Wait until bus bit is cleared (BB =0 in ICSTR)

2.Configure ICMDR register

?

?

  • configure I2C as Master ( MST = 1 );
  • indicate the i2c configuration to be used(if TRX = 0, device configured as Data Receiver);
  • configure serial data formats( eg. ?XA = 0, 7-bit addressing format );
  • set RM = 0 to disable repeat mode;
  • set DLB = 0 to disable loopback mode;
  • set FDF = 0 to disable free data format;
  • optional:disable start byte mode if addressing a fully fledged i2c device (set STB = 0 );
  • set number of bits to transfer to be 8 bits (BC = 0) ;
  • 設置仿真器斷點無響應,bus繼續運行, ICMDR中 FREE=1

3.設置發送數據長度(字節)ICCNT

?

4.Configure Slave Address( ICSAR = 7bit address)

5.Generate a START event ,followed by Slave Address,etc.(set STT =1 in ICMDR)

6.循環發送數據,數據寫入ICDXR,等待ICSTR中ICXRDY=1,表明數據搬運完成。并設置超時重新初始化init(我這設置的是while循環不超過500000)

7. End transfer/release bus when transfer is done. Generate a STOP event (set STP = 1 in ICMDR).?

四、I2C作為master讀取數據

?

1. Wait until bus bit is cleared (BB =0 in ICSTR)

2.Configure ICMDR register

?

  • configure I2C as Master ( MST = 1 );
  • indicate the i2c configuration to be used(if TRX = 0, device configured as Data Receiver);
  • configure serial data formats( eg. ?XA = 0, 7-bit addressing format );
  • set RM = 0 to disable repeat mode;
  • set DLB = 0 to disable loopback mode;
  • set FDF = 0 to disable free data format;
  • optional:disable start byte mode if addressing a fully fledged i2c device (set STB = 0 );
  • set number of bits to transfer to be 8 bits (BC = 0) ;
  • 設置仿真器斷點無響應,bus繼續運行, ICMDR中 FREE=1

3.設置發送數據長度(字節)ICCNT

?

4.Configure Slave Address( ICSAR = 7bit address)

5.Generate a START event ,followed by Slave Address,etc.(set STT =1 in ICMDR)

6.循環接收數據

等待ICSTR中ICRRDY=1,為1時表明數據可以讀取,并設置超時重新初始化init(我這設置的是while循環不超過500000),讀取ICDRR中數據。當數據為最后一個字節時發送NACK(ICMDR中NACKMOD=1)

7. End transfer/release bus when transfer is done. Generate a STOP event (set STP = 1 in ICMDR).?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的I2C 配置及应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。