樹莓派學習筆記——Linux I2C驅動說明
1.前言
通常情況下,I2C裝置由核心驅動控制,但是某些情況下I2C裝置也可由使用者空間控制。如果在使用者空間控制I2C裝置,需要訪問/dev目錄中所提供的介面,在使用I2C裝置之前必須要載入i2c-dev裝置。每一個已經註冊的IC裝置都有一個編號,該編號從0開始計算。可以檢視/sys/class/i2c-dev目錄以獲得I2C介面卡的資訊,或者使用i2cdetect工具檢視I2C介面卡。i2cdetect是一個簡單易用的I2C工具包。2.C語言的例子
讓我們從一個簡單的C語言的例子開始Linux I2C裝置的使用。在開始之前需要包括 linux/i2c-dev.h。然後需要決定訪問的I2C介面卡,可以檢視/sys/class/i2c-dev,或者使用i2cdetect - l命令。接著便可開啟檔案,請看示例程式碼開啟裝置時,必須確定I2C從機地址。int file; int adapter_nr = 1; /* I2C介面卡編號 */ char filename[20]; snprintf(filename, 19, "/dev/i2c-%d", adapter_nr); file = open(filename, O_RDWR); if (file < 0) { /* 開啟失敗 */ exit(1); }
int addr = 0x40; /* I2C 從機地址 */
if (ioctl(file, I2C_SLAVE, addr) < 0) {
/* 開啟失敗 */
exit(1);
}
完成了基本設定,下面便可以使用SMBUS指令或純I2C函式與晶片通訊。SMBUS函式形式是一個很不錯的選擇。
__u8 register = 0x10; /* I2C從機 暫存器地址 */ __s32 res; char buf[10]; /* 使用SMBus函式 */ res = i2c_smbus_read_word_data(file, register); if (res < 0) { /* 錯誤 */ } else { /* 成功讀取到一個字 */ } /* 使用I2C Write, 等價於i2c_smbus_write_word_data(file, register, 0x6543) */ buf[0] = register; buf[1] = 0x43; buf[2] = 0x65; if (write(file, buf, 3) ! =3) { /* 錯誤*/ } /* 使用I2C Read, 等價於 i2c_smbus_read_byte(file) */ if (read(file, buf, 1) != 1) { /* 錯誤 */ } else { /* buf[0]為讀取到的位元組 */ }
3.SMBUS詳細說明
【核心說明】標記符 | 長度 | 說明 |
S | 1 bit | I2C啟動 |
P | 1 bit | I2C停止 |
Rd/Wr | 1 bit | 控制字中的讀寫標誌位,讀操作為1,寫操作為0 |
A, NA | 1 bit | 應答標誌 |
Addr | 7 bits | 7位I2C地址 |
Data | 8 bit | 位元組資料 |
Comm | 8 bits | 命令位元組,可理解為I2C裝置暫存器地址 |
[..] | N char | I2C裝置返回的資料 |
4.參考資料
相關推薦
樹莓派學習筆記——Linux I2C驅動說明
1.前言通常情況下,I2C裝置由核心驅動控制,但是某些情況下I2C裝置也可由使用者空間控制。如果在使用者空間控制I2C裝置,需要訪問/dev目錄中所提供的介面,在使用I2C裝置之前必須要載入i2c-dev裝置。每一個已經註冊的IC裝置都有一個編號,該編號從0開始計算。可以檢視
樹莓派學習筆記——I2C Tools 學習筆記
說明2:此處I2C匯流排共掛載兩個裝置——PCF8574和AT24C04,從機地址0x20為PCF8574,從機地址0x50和0x51為AT24C04,請注意AT24C04具備兩個I2C地址,相關內容請產看參考資料6.4。
樹莓派學習筆記——I2C使用 PCF8574 Python SMBUS
PCF8574的採用7位I2C地址,7位I2C地址中的低3位從高到低分別為A2 A1和A0,該3位為地址選擇位,若地址選擇全部接GND,那麼PCF8574的I2C從機地址為0x20。圖1為PCF8574的基本資訊,左側為晶片內部結構示意圖,其中A2 A1和A0決定從機地址而從機地址直接影響I2C匯流排
樹莓派學習筆記—— 源碼方式安裝opencv
鏈接 spa lin fonts 耗時 sdn 圖片 ostream unix 0.前言? ? 本文介紹怎樣在樹莓派中通過編譯源碼的方式安裝opencv,並通過一個簡
樹莓派學習筆記——crontab定時執行指令碼
crontab定時執行指令碼 如果在玩樹莓派的過程中,我們需要定時或者定期的執行一些程式或指令碼,這裡有個好方法,就是Linux下的 crontab。 通常會用到的就是兩個命令: 檢視已有的定時任務 [email protected]:~ $ cront
樹莓派學習筆記(7):利用bypy實現樹莓派NAS同步百度雲
樹莓派製作NAS過程詳見http://www.cnblogs.com/xiaowuyi/p/4051238.html。 Bypy是一個百度雲/百度網盤的Python客戶端,主要的目的就是在Linux環境下(命令列)同步百度雲盤空間。Bypy要求python2.7
樹莓派學習筆記——webiopi安裝與入門
webiopi是一個可控制樹莓派GPIO的web框架,該框架面向物聯網IoT開發。該專案託管於google,並可在sourceforge上下載到原始碼。現在webiopi已經發展到0.7版本,webiopi支援REST Server,CoAP server,並提供python庫和javascript庫
樹莓派學習筆記——SQLite操作簡述
0 前言 本文介紹如何在樹莓派中利用SQLite資料庫儲存CPU溫度資料。SQLite是一款輕量級零配置資料庫,非常適合在樹莓派和其他嵌入式系統中使用。SQLite文件詳細資料豐富,本文不會詳細解釋SQLite資料庫操作的方方面面,只能結合具體場景按需說明。本文介紹的S
樹莓派學習筆記(一)
1.樹莓派介紹 Raspberry Pi(中文名為“樹莓派”,簡寫為RPi,(或者RasPi / RPI) 是為學生計算機程式設計教育而設計,只有信用卡大小的微型電腦,其系統基於Linux。 隨著Windows 10 IoT的釋出,我們也將可以用上執行Wi
樹莓派學習筆記——wiringPi GPIO使用詳解
2.BCM2835 GPIO相關暫存器 (該部分表述可能有誤,正在確認修改中) 樹莓派平臺的GPIO驅動,例如RPi.GPIO和WiringPi均採用直接操作GPIO暫存器的方式,樹莓派的CPU採用博通的BCM2835,想要更好的瞭解樹莓派的GPIO驅動實現就必須閱讀BCM2835的資料手冊。在B
樹莓派學習筆記——使用標準PC104鍵盤
0 前言 本文將詳細介紹樹莓派的鍵盤設計。和多數的人的想法不同,世界上存在著各種各樣不同的鍵盤,中國人使用的鍵盤和美國人使用的鍵盤相同,而樹莓派源產自英國,英國的鍵盤和美國並不相同。國內多使用標準104鍵鍵盤,下面就講講如何配置。 【相關博文】1 PC104標準鍵
【樹莓派學習筆記】樹莓派入坑筆記二 LCD安裝
樹莓派入坑筆記 ——LCD安裝 上次將系統安裝完成之後,只能通過遠端連線或者連線HDMI顯示器,對於小巧的樹莓派不是特別方便。因此安裝一塊與其體積相似的LCD是個不錯的選擇。 一.3.5寸LCD簡介 (1)螢幕簡介 (2)主要引數: 解析度:4
樹莓派學習筆記——GPIO功能學習
可以在windows中編寫程式碼,如果是Python指令碼可通過FTP軟體傳輸到樹莓派中,然後使用SSH客戶端登入到樹莓派中執行Python指令碼。如果是C語言檔案,除了使用FTP傳輸之外還需要在樹莓派上編譯才可以生成可執行檔案(相當於windows上的exe檔案)。相關軟體操作請參考【樹莓派學習筆記
樹莓派學習筆記——UART使用
# -*- coding: utf-8 -* import serial import time # 開啟串列埠 ser = serial.Serial("/dev/ttyAMA0", 9600) def main(): while True: # 獲得接收緩衝區字元
樹莓派學習筆記——交叉編譯工具鏈
交叉編譯工具較快開發的速度。樹莓派中已經安裝了gcc工具鏈,可在樹莓派中直接編譯原始碼生成可執行檔案。於此同時,PC機上也可使用gcc工具鏈生成可執行程式碼,但是和樹莓派上的gcc工具不同,PC機上的gcc工具生成intel或amd晶片上可執行的程式碼,但樹莓派卻是arm系列的晶片,顯然存在不小的差異
樹莓派學習筆記——使用檔案IO操作GPIO SysFs方式
0 前言 本文描述如果通過檔案IO sysfs方式控制樹莓派 GPIO埠。通過sysfs方式控制GPIO,先訪問/sys/class/gpio目錄,向export檔案寫入GPIO編號,使得該GPIO的操作介面從核心空間暴露到使用者空間,GPIO的操作介面包括direction和value等,direct
樹莓派學習筆記——apt方式安裝opencv
0.前言 本文介紹如何在樹莓派中通過apt方式安裝opencv,並通過一個簡單的例子說明如何使用opencv。相比於原始碼方式安裝opencv,通過apt方式安裝過程步驟簡單些,消耗的時間也少一些。通過apt方式安裝沒有自動生成opencv.pc檔案,所以在編寫make
樹莓派學習筆記二:軟體包安裝
上一篇我們完成了 樹莓派ubuntu映象的燒錄和ROS的安裝,這一篇我們來講一下到底需要裝哪些軟體包 軟體1:vim(根據個人習慣) sudo apt-get install vim 軟體2:bo
樹莓派學習筆記-GPIO介面程式設計-WiringPi
一. 兩種編號方式: 1. WiringPi 編號方式 2. Broadcom 編號方式 fritzin電子設計軟體採用Broadcom編號方式 二. 常用API WiringPi初始化函式:wiringPiSetup() ——使用WiringPi的
樹莓派學習筆記——實現modbus RTU從機
0.前言 本文使用樹莓派實現MODBUS RTU從機,藉助python庫——modbus-tk實現RTU從機。MODBUS是一種靈活可靠的工業通訊協議,常用的MODBUS協議包括MODBUS RTU和MODBUS TCP。藉助python強大的庫函式,可以在樹莓派平臺上