I2C 寫
I2C spec 規定如下
詳細解析如下
對從機進行寫操作時,主設備發出開始標志 (S) 和寫地址 (從機地址加一個 R/W 位,1 為讀,0 為寫)。從機產生應答信號。然后主設備開始傳送寄存器地址 (RA),接到應答后,開始傳送寄存器數據,然后仍然要有應答信號,連續寫入多字節時依次推。
舉例(例子進行了兩次封裝)
static int ap3216c_open(struct inode *inode, struct file *filp)
{
filp- >private_data = &ap3216cdev;
/* 初始化AP3216C */
ap3216c_write_reg(&ap3216cdev, AP3216C_SYSTEMCONG, 0x04); /* 復位AP3216C */
mdelay(50); /* AP3216C復位最少10ms */
ap3216c_write_reg(&ap3216cdev, AP3216C_SYSTEMCONG, 0X03); /* 開啟ALS、PS+IR */
return 0;
}
static void ap3216c_write_reg(struct ap3216c_dev *dev, u8 reg, u8 data)
{
u8 buf = 0;
buf = data;
ap3216c_write_regs(dev, reg, &buf, 1);
}
static s32 ap3216c_write_regs(struct ap3216c_dev *dev, u8 reg, u8 *buf, u8 len)
{
u8 b[256];
struct i2c_msg msg;
struct i2c_client *client = (struct i2c_client *)dev- >private_data;
b[0] = reg; /* 寄存器首地址 */
memcpy(&b[1],buf,len); /* 將要寫入的數據拷貝到數組b里面 */
msg.addr = client- >addr; /* ap3216c地址 */
msg.flags = 0; /* 標記為寫數據 */
msg.buf = b; /* 要寫入的數據緩沖區 */
msg.len = len + 1; /* 要寫入的數據長度 */
return i2c_transfer(client- >adapter, &msg, 1);
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
數據
+關注
關注
8文章
7128瀏覽量
89364 -
I2C
+關注
關注
28文章
1495瀏覽量
124232
發布評論請先 登錄
相關推薦
i2c總線ppt(I2C總線器件應用)
I2C總線器件應用第一節 I2C總線器件應用概述I2C總線工作原理I2C總線系統結構I2C總線系統結構如圖7-1所示。其中,SCL是時鐘線,
發表于 08-13 17:34
?0次下載
i2c總線技術 (非常詳細)
i2c總線技術:2 I2C 總線使設計人員和廠商都得益.. 32.1 設計人員的得益.. 42.2 廠商的得益. 53 介紹I2C 總線規范 64
發表于 03-25 08:58
?62次下載
I2C Guid I2C指南
I2C Guid I2C指南
The I2C bus is used in a wide rangeof applications because it is simpleand
發表于 04-23 13:55
?36次下載
硬件I2C與模擬I2C
硬件I2C對應芯片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于軟件模擬的I2C;一般也較為穩定,但
發表于 12-28 19:14
?81次下載
I2C總線能掛多少設備?I2C spec知識總結
I2C 是 Philips 公司在 1982 年為主機板、嵌入式系統(短距)設計的一種簡單、雙向二線制同步串行總線。
I2C總線協議詳細解析
1. I2C總線簡介 I2C總線由Philips Semiconductor(現為NXP Semiconductors)在1980年代初期開發。它是一種多主機總線,允許多個設備共享同一總線。I2C
評論