目錄
1 Exynos4412下IIC控制器介紹
1.1 總覽
1.2?特征
1.3 工作框圖
1.4?其他內容介紹
1.5 四種工作模式寄存器流程
2 IIC寄存器詳解
2.1 概述
2.2 控制寄存器
2.3 狀態寄存器
2.4 地址寄存器
2.5 數據寄存器
2.6 其他寄存器
3 MPU06050
3.1 簡介
3.2 MPU6050主要參數
3.3?MPU6050通信接口
3.4 6050芯片手冊
3.4.1 概覽(8位寄存器)
3.4.2 實驗需要用到的寄存器
4 MPU6050寄存器讀寫時序
4.1?向MPU6050的一個寄存器寫一個字節的數據
4.2 從MPU6050的一個寄存器讀一個字節的數據
1 Exynos4412下IIC控制器介紹
1.1 總覽
Exynos 4412 SCP是一款支持四個多主I2C總線串行接口的精簡指令集計算機(RISC)微處理器。為了在總線主和外圍設備之間傳輸信息,使用了專用的串行數據線(SDA)和串行時鐘(SCL)。SDA和SCL線都是雙向的。
在多主I2C總線模式下,多個Exynos 4412 SCP RISC微處理器接收或發送串行數據到或從從設備。主Exynos 4412 SCP啟動和終止I2C總線上的數據傳輸。 Exynos 4412 SCP的I2C總線使用標準的I2C總線仲裁過程實現多主和多從傳輸。
要控制多主I2C總線操作,必須向以下寄存器寫入值:
? 多主I2C總線控制寄存器-I2CCON
? 多主I2C總線控制/狀態寄存器-I2CSTAT
? 多主I2C總線Tx / Rx數據移位寄存器-I2CDS
? 多主I2C總線地址寄存器-I2CADD
如果I2C總線處于空閑狀態,則SDA和SCL線都應處于高電平。 SDA的高至低轉換會引發起始條件。 SDA的低至高轉換會引發停止條件,而SCL保持穩定在高電平。
主設備始終生成起始和停止條件。在啟動條件被初始化后,數據字節中的前7位地址值通過SDA線傳輸。該地址值確定了總線主設備選擇的從設備。第8位確定傳輸的方向(讀或寫)。
放置在SDA線上的每個數據字節應為8位。在總線傳輸操作期間,發送或接收字節的數量沒有限制。 I2C主設備和從設備始終從最高有效位(MSB)開始發送數據,然后立即跟隨每個ACK位。
1.2?特征
I2C總線接口的特點包括:
? 9個通道的多主、從I2C總線接口(其中8個通道用于通用目的,1個通道專用于高清晰度多媒體接口(HDMI))。
? 7位尋址模式 ? 串行、8位導向和雙向數據傳輸
? 在標準模式下支持最高100 kbit/s的速率
? 在快速模式下支持最高400 kbit/s的速率
? 支持主設備發送、主設備接收、從設備發送和從設備接收操作
? 支持中斷或輪詢事件
當IIC發送完或者接收到一個字節數據,會以中斷方式告知。
1.3 工作框圖
1.4?其他內容介紹
四種工作模式及操作細節
?起始結束信號
?一個字節數據傳輸
應答信號
?讀寫
多主機仲裁機制
仲裁發生在SDA線上,以防止兩個主設備之間的總線沖突。如果一個具有SDA高電平的主設備檢測到另一個具有SDA低電平的主設備,則不會啟動數據傳輸。這是因為總線上的電平不符合發起數據傳輸的條件。仲裁過程將一直進行,直到SDA線變為高電平。 當兩個或多個主設備同時將SDA線置為低電平時,每個主設備都會評估自己是否具有主設備的資格。為了進行評估,每個主設備都會檢測地址位。當每個主設備生成從設備地址時,它會檢測SDA線上的地址位。這是因為SDA線變為低電平而不是高電平。 假設一個主設備生成低電平作為第一個地址位,而另一個主設備維持高電平。在這種情況下,兩個主設備都會檢測到總線上的低電平。這是因為低電平在電源中優于高電平。當發生這種情況時,生成低電平作為第一個地址位的主設備獲得主設備的資格,而生成高電平作為第一個地址位的主設備則放棄主設備的資格。 當兩個主設備都將第一個地址位生成為低電平時,再次進行第二個地址位的仲裁。這個仲裁過程會一直持續到最后一個地址位。?
1.5 四種工作模式寄存器流程
2 IIC寄存器詳解
2.1 概述
2.2 控制寄存器

2.3 狀態寄存器
2.4 地址寄存器
作為從機才有用

?
2.5 數據寄存器

2.6 其他寄存器
不常用

3 MPU06050
3.1 簡介
MPU6050是一個運動處理傳感器,其內部集成了3軸加速度傳感器 ? ? 和3軸陀螺儀(角速度傳感器),以及一個可擴展數字運動處理器
3.2 MPU6050主要參數
可測量X、Y、Z軸三個方向的角速度 ? ?
可編程設置角速度測量范圍為±250、±500、±1000、±2000°/sec ? ?
可測量X、Y、Z軸三個方向的加速度 ? ?
可編程設置加速度測量范圍為±2g、±4g、±8g、±16g ? ?
可編程設置低功耗模式 ? ?
可編程設置采樣頻率
3.3?MPU6050通信接口
MPU6050可以使用IIC總線和其他器件進行數據交互,我們可以使用IIC總線向MPU6050中的控制寄存器寫入數據來設置MPU6050的工作參數 也可以使用IIC總線從MPU6050中的數據寄存器讀取數據來獲取加速度、角速度等信息
3.4 6050芯片手冊
datasheet重點關注這個時序
寄存器
3.4.1 概覽(8位寄存器)
3.4.2 實驗需要用到的寄存器
/****************MPU6050內部常用寄存器地址****************/#define SMPLRT_DIV 0x19 //陀螺儀采樣率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通濾波頻率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B //陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000°/s)
#define ACCEL_CONFIG 0x1C //加速計自檢及測量范圍及高通濾波頻率,典型值:0x0(不自檢,2G,5Hz)
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B //電源管理,典型值:0x00(正常啟用)
#define SlaveAddress 0x68 //MPU6050-I2C地址
上面設定了典型值,詳細介紹參考手冊
加速度和角速度都有正負,數據存放在2個寄存器,需要分別讀取合并成16位。
?
加速度正負參考
從機地址(注意要地址需要根據ADO引腳確定,我們開發板即0x68,怕地址沖突)
4 MPU6050寄存器讀寫時序
4.1?向MPU6050的一個寄存器寫一個字節的數據
1.主機(Exynos4412)發送起始信號
2.主機發送從機地址(MPU6050的地址)及讀寫方向(寫)
3.從機(MPU6050)發送應答信號
4.主機發送一個字節數據(要寫的寄存器的地址)
5.從機發送應答信號
6.主機發送一個字節數據(要寫到寄存器的數據)
7.從機發送應答信號
8.主機發送停止信號
4.2 從MPU6050的一個寄存器讀一個字節的數據
1.主機(Exynos4412)發送起始信號
2.主機發送從機地址(MPU6050的地址)及讀寫方向(寫)
3.從機(MPU6050)發送應答信號
4.主機發送一個字節數據(要寫的寄存器的地址)
5.從機發送應答信號
6.主機(Exynos4412)發送起始信號
7.主機發送從機地址(MPU6050的地址)及讀寫方向(讀)
8.從機(MPU6050)發送應答信號
9.從機發送一個字節數據(要讀的寄存器中的數據)
10.主機發送非應答信號(不再接收更多的數據)
11.主機發送停止信號
5 練習
簡述通過主機從MPU6050中的一個寄存器中讀一個字節的數據的過程
略