




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Arduino中IIC的使用 By 樵明朗本節(jié)主要內(nèi)容 IIC基礎(chǔ) Arduino中的IIC庫 E2PROME的讀寫 MPU6050的使用1 IIC基礎(chǔ) 什么是什么是IIC? IIC是是PHILIP公司推出的一種總線協(xié)議,公司推出的一種總線協(xié)議,II2C總線只有兩根雙向總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線信號(hào)線。一根是數(shù)據(jù)線SDA,另一根是時(shí)鐘線,另一根是時(shí)鐘線SCL。SCL和和SDA在在總線空閑時(shí)均保持高電平,需接上拉電阻總線空閑時(shí)均保持高電平,需接上拉電阻1 IIC基礎(chǔ) 通信協(xié)議 每個(gè)接到每個(gè)接到I2C總線上的器件都有唯一的地址,通過地址識(shí)別通信對(duì)總線上的器件都有唯一的地址,通過地址識(shí)別通
2、信對(duì)象??偩€上一般有一個(gè)主機(jī)和多個(gè)從機(jī),通常為主從工作方式,象。總線上一般有一個(gè)主機(jī)和多個(gè)從機(jī),通常為主從工作方式,由主器件啟動(dòng)數(shù)據(jù)的發(fā)送。由主器件啟動(dòng)數(shù)據(jù)的發(fā)送。 主機(jī)發(fā)送的控制信號(hào)分為地址碼和數(shù)據(jù)碼兩部分,地址碼用來選主機(jī)發(fā)送的控制信號(hào)分為地址碼和數(shù)據(jù)碼兩部分,地址碼用來選址,數(shù)據(jù)碼用來通信址,數(shù)據(jù)碼用來通信1 IIC基礎(chǔ) 通信流程StartDevice AdressR/WA0A2 A1A4A5A3A6AckRegester Adressb0b1b3 b2b5b6b4b7AckDataC0C1C3 C2C5C6C4C7Ack End1 IIC基礎(chǔ) IIC通信格式 -起動(dòng)信號(hào) 在SCL為高電
3、平期間,SDA出現(xiàn)下降沿則為啟動(dòng)信號(hào)1 IIC基礎(chǔ) IIC通信格式 -尋址信號(hào) 器件地址有7位和10位兩種,對(duì)7位地址,高7位為地址位,最低位為方向位,方向位為0表明主機(jī)要進(jìn)行寫操作,方向位為1表示主機(jī)要進(jìn)行讀操作。1 IIC基礎(chǔ) IIC通信格式 -應(yīng)答信號(hào) 每傳輸一個(gè)字節(jié)數(shù)據(jù)后,都要有一個(gè)應(yīng)答信號(hào),以確定數(shù)據(jù)是否被接收。在SCL信號(hào)為高電平期間,接收設(shè)備將SDA拉為低電平,產(chǎn)生應(yīng)答。1 IIC基礎(chǔ) IIC通信格式 -數(shù)據(jù)位 IIC總線進(jìn)行數(shù)據(jù)傳輸時(shí),在SCL為高電平期間,SDA需保持穩(wěn)定,只有在SCL為低電平期,SDA才允許變化。1 IIC基礎(chǔ) IIC通信格式 -時(shí)序要求1 IIC基礎(chǔ) II
4、C通信格式 -終止信號(hào) 全部數(shù)據(jù)傳輸完成后,主機(jī)發(fā)送終止信號(hào),在SCL為高電平期間,SDA上產(chǎn)生一個(gè)上升沿信號(hào),表示終止傳輸。1 IIC基礎(chǔ) IIC通信格式 -工作流程 為了保證數(shù)據(jù)傳送的可靠性,標(biāo)準(zhǔn)的I2C總線的數(shù)據(jù)傳送有嚴(yán)格的時(shí)序要求1 IIC基礎(chǔ) 單片機(jī)模擬IIC總線通信-起始信號(hào)Void I2CStart(void)SDA = 1; Delay(); SCL = 1; Delay(); SDA = 0; Delay();2 Arduino中的IIC庫 EEPROM簡(jiǎn)介 RAM(RamdomAccessMemory,讀寫存儲(chǔ)器) ROM(Read Only Memory,只讀存儲(chǔ)器) P
5、ROM(Programmable ROM,可編程ROM) EPROM(Erasable Programmable ROM,可擦除可編程ROM) EEPROM (Electrically Erasable Programmable Read-Only Memory),電可擦可編程只讀存儲(chǔ)器-一種掉電后數(shù)據(jù)不丟失的電可擦可編程只讀存儲(chǔ)器 Flash 屬于廣義的EEPROM,擦除時(shí)不再以字節(jié)為單位,而是以塊為單位,一次簡(jiǎn)化了電路,數(shù)據(jù)密度更高,降低了成本2 Arduino中的IIC庫 EEPROME庫函數(shù)read() /Reads a byte from the EEPROMwrite() /Wri
6、te a byte to the EEPROMupdate() / value is written only if differs from the one already saved at the same address.get() /Read any data type or object from the EEPROMput() /Write any data type or object to the EEPROMEEPROM /using the identifier EEPROM like an array2 Arduino中的IIC庫 EEPROME庫函數(shù)的使用-按鍵計(jì)數(shù)2
7、Arduino中的IIC庫 EEPROME庫函數(shù)的使用-按鍵計(jì)數(shù)#include int address = 5;int value;/ 定義按鍵的針腳號(hào)為2的整型常量const int buttonPin = 2;/ 記錄當(dāng)前按鍵次數(shù)int buttonPushCounter = 0;/ 定義用來記錄按鍵次數(shù)的整型變量/按鍵之前的狀態(tài)int buttonState = 0;int lastButtonState = 0; void setup() Serial.begin(9600); / 設(shè)置按鍵的針腳為輸入狀態(tài) pinMode(buttonPin, INPUT); / 設(shè)置電路板上LED
8、神燈的針腳狀態(tài)為輸出狀態(tài) /pinMode(ledPin, OUTPUT);2 Arduino中的IIC庫 EEPROME庫函數(shù)的使用-按鍵計(jì)數(shù)void loop() buttonState = digitalRead(buttonPin);if (buttonState != lastButtonState) if(buttonState = HIGH) delay(20);/延時(shí)20ms if(buttonState = HIGH) buttonPushCounter+; EEPROM.write(address, buttonPushCounter);value = EEPROM.rea
9、d(address);Serial.print(value,DEC); / 串口輸出 Serial.print(n); lastButtonState = buttonState; value = EEPROM.read(address); Serial.println(value,DEC); / 串口輸出 2 Arduino中的IIC庫 庫函數(shù) Wire.begin() or Wire.begin(address) / Initiate the Wire library Wire.requestFrom() / request bytes from a slave device Wire.b
10、eginTransmission(address) / Begin a transmission Wire.endTransmission() /Ends a transmission to a slave device write() /Writes data read() /Reads a byte Wire.available() /Returns the number of bytes available for retrieval with read()2 Arduino中的IIC庫 使用例程1 #include voidsetup() Wire.begin(); / join i2
11、c bus (address optional for master)Serial.begin(9600);/ start serial for outputvoidloop() Wire.requestFrom(2,6); / request 6 bytes from slave device #2while(Wire.available() / slave may send less than requested charc=Wire.read(); / receive a byte as character Serial.print(c); / print the characterde
12、lay(500);2 Arduino中的IIC庫 MPU6050的使用-基礎(chǔ)知識(shí)2 Arduino中的IIC庫 MPU6050的使用-基礎(chǔ)知識(shí) 三軸加速度計(jì)三軸陀螺儀16 位的ADCIIC通訊2 Arduino中的IIC庫 MPU6050的使用-連接圖SDA =A4SCL=A52 Arduino中的IIC庫 MPU6050的使用-讀取數(shù)據(jù) #include const int MPU_addr=0 x68; / I2C address of the MPU-6050 int16_t AcX,AcY,AcZ,GyX,GyY,GyZ; void setup() Wire.begin(); Wire
13、.beginTransmission(MPU_addr); Wire.write(0 x6B); / PWR_MGMT_1 register Wire.write(0); / set to zero (wakes up the MPU-6050) Wire.endTransmission(true); Serial.begin(9600); 2 Arduino中的IIC庫 MPU6050的使用-讀取數(shù)據(jù) void loop() Wire.beginTransmission(MPU_addr); Wire.write(0 x3B); / starting with register 0 x3B
14、(ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); / request a total of 14 registers AcX=Wire.read()8|Wire.read(); / 0 x3B (ACCEL_XOUT_H) & 0 x3C (ACCEL_XOUT_L) AcY=Wire.read()8|Wire.read(); / 0 x3D (ACCEL_YOUT_H) & 0 x3E (ACCEL_YOUT_L) AcZ=Wire.read()8|Wire.read(); / 0
15、x3F (ACCEL_ZOUT_H) & 0 x40 (ACCEL_ZOUT_L) /Tmp=Wire.read()8|Wire.read(); 0 x41 (TEMP_OUT_H) & 0 x42 (TEMP_OUT_L) GyX=Wire.read()8|Wire.read(); / 0 x43 (GYRO_XOUT_H) & 0 x44 (GYRO_XOUT_L) GyY=Wire.read()8|Wire.read(); / 0 x45 (GYRO_YOUT_H) & 0 x46 (GYRO_YOUT_L) GyZ=Wire.read()8|Wire.read(); / 0 x47 (
16、GYRO_ZOUT_H) & 0 x48 (GYRO_ZOUT_L)2 Arduino中的IIC庫 MPU6050的使用-讀取數(shù)據(jù) void loop() Wire.beginTransmission(MPU_addr); Wire.write(0 x3B); / starting with register 0 x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); / request a total of 14 registers AcX=Wire.read()8|Wire.re
17、ad(); / 0 x3B (ACCEL_XOUT_H) & 0 x3C (ACCEL_XOUT_L) AcY=Wire.read()8|Wire.read(); / 0 x3D (ACCEL_YOUT_H) & 0 x3E (ACCEL_YOUT_L) AcZ=Wire.read()8|Wire.read(); / 0 x3F (ACCEL_ZOUT_H) & 0 x40 (ACCEL_ZOUT_L) Tmp=Wire.read()8|Wire.read(); / 0 x41 (TEMP_OUT_H) & 0 x42 (TEMP_OUT_L) GyX=Wire.read()8|Wire.re
18、ad(); / 0 x43 (GYRO_XOUT_H) & 0 x44 (GYRO_XOUT_L) GyY=Wire.read()8|Wire.read(); / 0 x45 (GYRO_YOUT_H) & 0 x46 (GYRO_YOUT_L) GyZ=Wire.read()8|Wire.read(); / 0 x47 (GYRO_ZOUT_H) & 0 x48 (GYRO_ZOUT_L)2 Arduino中的IIC庫 MPU6050的使用-讀取數(shù)據(jù) Serial.print(AcX = ); Serial.print(AcX); Serial.print( | AcY = ); Seria
19、l.print(AcY); Serial.print( | AcZ = ); Serial.print(AcZ); Serial.print( | Tmp = ); Serial.print(Tmp/340.00+36.53); /equation for temperature in degrees C from datasheet Serial.print( | GyX = ); Serial.print(GyX); Serial.print( | GyY = ); Serial.print(GyY); Serial.print( | GyZ = ); Serial.println(GyZ); delay(333); 2 Arduino中的IIC庫 MPU6050的使用-讀取數(shù)據(jù)2 Arduino中的IIC庫 MPU6050的使用-簡(jiǎn)單的狀態(tài)解算加速度計(jì)的動(dòng)態(tài)性不好陀螺儀得到的角度有積分誤差互補(bǔ)濾波(Gyroscope Angle) = (Last Measured Filtered Angle) + tFiltered Angle = (Gyroscope Angle) + (1 ) (Accelerometer Angle)2 Arduino中的IIC庫 MPU6050的使用-簡(jiǎn)單的狀態(tài)解算 b=flo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新行業(yè)創(chuàng)業(yè)計(jì)劃書
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 仁愛英語九年級(jí)上冊(cè)Unit 2 Saving the earth.Topic 1 Pollution has causes too many problems.單詞拓展
- 學(xué)前教育專業(yè)認(rèn)識(shí)
- 戊戌時(shí)期“中日合邦”研究(1895-1898)
- 溶液燃燒合成制備SrTiO3基介電陶瓷及儲(chǔ)能性能研究
- 工業(yè)企業(yè)機(jī)械設(shè)備安全檢查
- 九年級(jí)語文下冊(cè)第三單元第10課唐雎不辱使命鞏固練習(xí)新人教版
- 2024秋五年級(jí)語文上冊(cè)第六單元口語交際父母之愛教案新人教版
- 2025年婚姻分析 測(cè)試題及答案
- 2024-2025學(xué)年第二學(xué)期天域全國(guó)名校協(xié)作體高三3月聯(lián)考 地理試卷(含答案)
- 學(xué)校2025年每日兩小時(shí)體育活動(dòng)方案-陽光體育活力四溢
- B超的基本知識(shí)
- 錘擊式PHC預(yù)應(yīng)力混凝土管樁貫入度的控制
- 2025年廣西旅發(fā)置業(yè)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 敘事醫(yī)學(xué)培訓(xùn)課件
- 《勞動(dòng)紀(jì)律》課件
- 小學(xué)數(shù)學(xué)一年級(jí)上冊(cè)數(shù)與代數(shù)
- 失能老年人健康管理模式研究進(jìn)展
- 5G優(yōu)化案例:5G波束配置優(yōu)化提升CQI優(yōu)良比案例
評(píng)論
0/150
提交評(píng)論