1. 程式人生 > >怎麼寫一個i2c裝置的裝置樹

怎麼寫一個i2c裝置的裝置樹

在上一次的部落格中我們在裝置樹檔案中寫入了Mpu6050的裝置資訊,那麼這個裝置是資訊是怎樣來的呢,現在先來補充一下怎樣從資料手冊得到我們需要的資料。

首先看看核心原始碼中已經寫好的別的i2c裝置樹是怎麼寫,瞭解我們需要找的資料:

 [email protected] {
            #address-cells = <1>;
            #size-cells = <0>;
            samsung,i2c-sda-delay = <100>;
            samsung,i2c-max-bus-freq = <20000>;
            pinctrl-0 = <&i2c0_bus>;
            pinctrl-names = "default";
            status = "okay";

            
[email protected]
{ compatible = "samsung,s5m8767-pmic"; reg = <0x66>; ........... }; };

首先我們看到 [email protected]13860000,這個@後面的地址其實就是裝置所掛載的i2c匯流排地址。我們可以在板子的資料手冊中得到這個資訊。再看到 pinctrl-0 = <&i2c0_bus>; 這一句,其實就是掛載在哪根i2c匯流排。

由電路圖可知Mpu6050是掛載在5號i2c匯流排,由板子的資料手冊得到地址是 0x138B0000。

接著開啟Mpu6050的資料手冊:


可以得知公司是InvenSense

接著我們瞭解到暫存器的地址是 1101000 或者 1101001,這裡就按1101000 換算成16進位制就是 68。

得到了這些資訊,我們就可以寫出我們MPU6050的裝置樹了

[email protected]{
            #address-cells = <1>;
            #size-cells = <0>;
            samsung,i2c-sda-delay = <100>;
            samsung,i2c-max-bus-freq = <20000>;
            pinctrl-0 = <&i2c5_bus>;
            pinctrl-names = "default";
            status = "okay";
 
            //板子電路原理圖上,6050的掛載匯流排是低電平,因此是0x68,若是高電平就是0x69
            
[email protected]
{ compatible = "InvenSense,mpu6050"; reg = <0x68>; }; }

相關推薦

怎麼一個i2c裝置裝置

在上一次的部落格中我們在裝置樹檔案中寫入了Mpu6050的裝置資訊,那麼這個裝置是資訊是怎樣來的呢,現在先來補充一下怎樣從資料手冊得到我們需要的資料。 首先看看核心原始碼中已經寫好的別的i2c裝置樹是怎麼寫,瞭解我們需要找的資料: [email protect

Linux i2c子系統(一) _動手一個i2c裝置驅動

i2c匯流排是一種十分常見的板級匯流排,本文以linux3.14.0為參考, 討論Linux中的i2c驅動模型並利用這個模型寫一個mpu6050的驅動, 最後在應用層將mpu6050中的原始資料讀取出來 i2c子系統框架 下圖就是我理解的i2c驅動框架示意圖, 類似中斷子系

在kernel裡新增一個i2c外圍裝置

在kernel裡新增一個已知晶片地址的外圍裝置的驅動,主要包含申請註冊使用等 1. 定義主要變數: static struct i2c_client *key_ic_client; static struct i2c_board_info key_ic_info = {

用 Java 手把手一個“二叉搜尋”,支援泛型

一、二叉搜尋樹 先說一下二叉樹,二叉樹是一種至多隻有左右兩個子結點的樹形結構。 二叉搜尋樹是二叉樹的一種,對於任意一個結點 x,其左子樹的任一結點的值都不大於 x 的值,其右子樹的任一結點的值都不小於 x 的值。 二叉搜尋樹上的基本操作有 查詢 (search)、最小值

一個節點大小平衡(SBT)模板,留著用

看了一下午,感覺有了些瞭解,應該沒有錯,有錯希望斧正,感謝 #include<stdio.h> #include<string.h> struct s { int key,left,right,size; }tree[10010]; int to

Linux裝置驅動程式架構分析之一個I2C驅動例項

作者:劉昊昱  核心版本:3.10.1 編寫一個I2C裝置驅動程式的工作可分為兩部分,一是定義和註冊I2C裝置,即i2c_client;二是定義和註冊I2C裝置驅動,即i2c_driver。下面我們就以mini2440的I2C裝置at24c08 EEPROM為例,介紹如

linux裝置驅動第三篇:一個簡單的字元裝置驅動

在linux裝置驅動第一篇:裝置驅動程式簡介中簡單介紹了字元驅動,本篇簡單介紹如何寫一個簡單的字元裝置驅動。本篇借鑑LDD中的原始碼,實現一個與硬體裝置無關的字元裝置驅動,僅僅操作從核心中分配的一些記憶體。 下面就開始學習如何寫一個簡單的字元裝置驅動。首先我們來分解一下字元

Linux應用層讀i2c裝置(eeprom)

/***************************************************************************** i2c讀函式,引數1:從裝置地址,引數2:暫存器地址,引數3:讀取資料緩衝區,引數4:讀取資料大小

手把手教你Linux I2C裝置驅動2

轉載文章,原文地址 http://ticktick.blog.51cto.com/823160/760020/ 要想在Linux下讀寫晶片的I2C暫存器,一般需要在Linux編寫一份該晶片的I2C驅動,關於Linux下如何編寫I2C驅動,前一篇文章《手把手教你寫Lin

linux 驅動入門程式,一個裝置驅動 (1)

+---------------------------------------------------+ |                 寫一個塊裝置驅動                  | +---------------------------------------------------+ |

轉:一個裝置驅動

----------------------- Page 1----------------------- 第 1章 +---------------------------------------------------+ |                 寫一

決策之ID3演算法實現(python) [置頂] 怒一個digit classification(不斷更新中)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

STM32F1與I2C裝置通訊無應答?

最近做了STM32F103與DAC的I2C通訊,起先使用的是硬體I2C來驅動,按照時序寫好程式通訊正常,但由於電路板需求,需要將I2C的SCL和SDA線拉長,導致硬體I2C通訊經常掛死,於是考慮採用模擬I2C,(硬體I2C和模擬I2C的程式在我另外兩篇部落格上有),但是也經常掛死,最後終於找到原因,

用Java程式碼一個判斷兩個二叉是否相同

判斷兩個二叉樹是否相同,我覺得應該從三個方面來判斷: 1、若兩個二叉樹都是空樹,則返回true,可認為兩個二叉樹相同; 2、若兩個二叉樹一個為空,一個不為空樹,則兩個二叉樹不相同,返回false; 3、若兩個二叉樹都不為空樹,則判斷兩個節點所指的值是否相同,若相同,則用遞迴

如何DOS下的裝置驅動程式(一)

基本上我寫的文章中的程式例項都是32位的,需要執行在保護模式下,但是不要祈求在DOS下可以寫32位的裝置驅動程式,因為DOS本身是16位真實模式下的作業系統,當然其驅動程式的機制也只能是真實模式下的,儘管在DOS下可以編防寫模式的程式,但這些程式亦可以通過DPMI呼叫真實模式

(一)用C++一個紅黑/區間

lab2 紅黑樹&區間樹(C實現) 本文分為3部分,第一部分實現一棵紅黑樹的左旋/右旋/插入和刪除。 第二部分將第一部分中的紅黑樹擴充套件成一棵區間樹。 第三部分是對區間樹(插入/刪除/搜尋)的測試。 part 1 紅黑樹的插入刪除操作 part 2 區間樹重疊區間查詢

MPU6050帶字元驅動的i2c裝置驅動1

開幹: 1、閒言碎語 這個驅動,越寫覺的越簡單,入門難,入門之後感覺還好。Linux開發還是比較友好的。 2、編寫MPU6050帶字元驅動的i2c從裝置驅動 要實現的功能就是,將MPU6050作為字元驅動,在應用層,對其進行讀資料。實現簡單的功能。在前面的分析和實踐中,可以看到實現字元驅動主要是實

MPU6050帶字元驅動的i2c裝置驅動2

#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/mutex.

Linux下讀FLASH驅動——MTD裝置分析

  最近在學習驅動讀寫flash的程式碼部分。經歷了可笑的過程:開始我知道flash用通過spi口來讀寫。所以就到了driver/spi 下面看相關程式碼。發現有個spidev.c裡面有read/write/ioctl等函式。而且還有一個davinci_spi_

裝置驅動實戰基礎篇一 (170行程式碼構建一個邏輯塊裝置驅動)

作業系統是如何將資料讀到緩衝區的,發生了什麼?我們帶著這樣的問題,粗略走一下read呼叫系統過程,希望這個初探,可以喚起大家研究作業系統核心的好奇心和興趣,並以此為例,讓我們先初步對請求在過濾塊裝置驅動中的處理過程有個大概印象和了解。 塊裝置在整個Linux中應用的