ESP8266-SDK中I2C的使用
一、ESP8266提供了一個模擬的I2C 的介面檔案
可以參考8C-ESP8266__Interface_I2C__CN_v0.2.pdf文件和 i2c_master.c檔案
二、關於I2C 的初始化
1、這裡 我認為 大家對I2C 協議都是有一定的認識瞭解的。
2、I2C 協議的幾個過程 我們可以開啟i2c_master.h 檔案看它提供的介面
void i2c_master_stop(void);
作用:主機產生I2C停止條件
void i2c_master_start(void);
作用:主機發送開始訊號
uint8 i2c_master_getAck(void);
作用:主機獲取從機的應答訊號
uint8 i2c_master_readByte(void);
作用:主機讀一個位元組
void i2c_master_writeByte(uint8 wrdata);
作用:主機寫一個位元組的訊號
void i2c_master_send_ack(void);
作用:主機發送應答
void i2c_master_send_nack(void);
作用:主機發送非應答
void i2c_master_gpio_init(void);
作用:
1、選擇pin管腳 ,配置GPIO 這個GPIO 預設是 GPIO4 和GPIO2
在i2c_master.h 檔案可以看到
#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO2_U
#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_GPIO0_U
#define I2C_MASTER_SDA_GPIO 2
#define I2C_MASTER_SCL_GPIO 0
#define I2C_MASTER_SDA_FUNC FUNC_GPIO2
#define I2C_MASTER_SCL_FUNC FUNC_GPIO0
上面是系統預設的,如果我們想改成自己器件對應的管腳 就只要改動這裡就可以了,下面是我自己的I2C器件對應的管腳
#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO0_U
#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_GPIO4_U
#define I2C_MASTER_SDA_GPIO 0
#define I2C_MASTER_SCL_GPIO 4
#define I2C_MASTER_SDA_FUNC FUNC_GPIO0
#define I2C_MASTER_SCL_FUNC FUNC_GPIO4
從上面可以看到 我是用GPIO4做時鐘的 GPIO0做資料線的 ,而預設的時候是 GPIO0做時鐘 GPIO2做資料的
2、配置GPIO為開漏,---這一點非常重要 如果自己模擬寫,不配置GPIO為開漏,會導致失敗的
3、初始化sda和SCL為高電平 釋放匯流排
三、示例程式碼----一個簡單的
i2c_master_start();
i2c_master_writeByte(0xA0);
flag = i2c_master_getAck();
os_printf("Ack = %d\r\n",flag);
i2c_master_writeByte(5);//傳送地址的低8位 鐵電是2K位元組的大小
flag = i2c_master_getAck();
os_printf("Ack1 = %d\r\n",flag);
i2c_master_writeByte(0x55);
flag = i2c_master_getAck();
os_printf("Ack2 = %d\r\n",flag);
i2c_master_stop();
os_delay_us(100);
i2c_master_start();
i2c_master_writeByte(0xA0);
flag = i2c_master_getAck();
os_printf("Ack = %d\r\n",flag);
i2c_master_writeByte(5);//傳送地址的低8位 鐵電是2K位元組的大小
flag = i2c_master_getAck();
os_printf("Ack = %d\r\n",flag);
i2c_master_start();
i2c_master_writeByte(0xA1);
flag = i2c_master_getAck();
os_printf("Ack = %d\r\n",flag);
flag = i2c_master_readByte();
os_printf("資料 = %x\r\n",flag);
i2c_master_send_nack();
i2c_master_stop();
總結:如果我們自己想自己寫模擬i2C的一定要把GPIO設定為開漏,如果和自己的管腳不一樣 只要修改,如下的GPIO就可以了,其它的都不要修改
#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO0_U
#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_GPIO4_U
#define I2C_MASTER_SDA_GPIO 0
#define I2C_MASTER_SCL_GPIO 4
#define I2C_MASTER_SDA_FUNC FUNC_GPIO0
#define I2C_MASTER_SCL_FUNC FUNC_GPIO4
相關推薦
ESP8266-SDK中I2C的使用
一、ESP8266提供了一個模擬的I2C 的介面檔案 可以參考8C-ESP8266__Interface_I2C__CN_v0.2.pdf文件和 i2c_master.c檔案 二、關於I2C 的初始化 1、這裡 我認為 大家對I2C 協議都是有一定的認識瞭解的。 2、I
Microsoft dynamic sdk中join應該註意的問題.
per order 問題 bean lec note exp amp collect QueryExpression queryNextSeq = new QueryExpression { EntityName =
1-添加自己的Lua執行函數(ESP8266-SDK開發(lua版本))
圖片 自己的 sprint ret amp nbsp pri number 技術分享 基礎 lua_pushnumber (L, 1); lua_pushnumber (L,3); lua_pushnumber (L,4); return 3; c_sprin
判斷SDK中的DLL位數(32位還是64位)
1.用文字文件開啟DLL,開啟後是一堆亂碼 2.鍵盤敲下“Ctrl+F”,輸入“PE”,區分大小寫 3.找到PE後,他的後面如果是 L => 32 位 &nb
Opencv AiDitron 2.0 SDK 中關於概率圖的解讀
場景 現在要識別這張圖片中,哪些畫素點屬於牛奶,哪些屬於奶牛,哪些屬於綠葉,概率在這裡的意思是一個畫素點屬於牛奶、奶牛或綠葉的概率(可能性,值在 0 到 1 之間),那麼一個畫素點就會有 3 個概率,分別是對應屬於牛奶、屬於奶牛或屬於綠葉的概率,這些是我們程式設計師看的到,多通道。給客
intel電源管理技術中I2C和SVID
1.I2C匯流排架構圖: 2.Gemini Lake 平臺所支援的PMIC 是哪種型別? POR 是SVID PMIC, i2c PMIC 會影響效能。 3.SerialVID, 總共有三個訊號線 時鐘(clock) , 訊號(data) Al
ESP8266 micropython 驅動 I2C LCD1602 液晶
折騰香橙派這種還是做電腦使用,拿來做小控制器實在大才小用,某天閒逛 發現竟然可以這麼玩。。。。 原來不玩開發板就是因為不喜歡C ,實在是學不會啊,現在竟然python。。。雖然是裁剪版的。。。 那也是不錯的 螢幕買的是一個1602的LCD,因為原來迷迷糊糊的記得51
第三方SDK中的巨坑
開發中經常會使用第三方SDK,尤其是那些看不到原始碼的SDK。出現了崩潰真是無處下手。由於最近又遇到一個之前遇到的錯誤,今天分享一下: 執行程式會出現如下錯誤資訊: was compiled with optimization - stepping may behave oddly;
iOS如何在SDK中使用資原始檔(xib,image,localizable string...)
需求:在SDK中使用資原始檔,例如xib, image, 字串國際化等等. 閱讀前提: 瞭解如何建立SDK 瞭解如何在一個專案中匯入並使用SDK GitHub地址(附程式碼) : 如何在SDK中使用資原始檔 簡書地址 : 如何在SDK中使用資原始檔 部落格地址 : 如何在S
海思3518EV200 SDK中獲取和儲存H.264碼流詳解
1 /****************************************** 2 step 2: Start to get streams of each channel. 3 ************************************
SDK中.a包過大,單獨作為一個項目,功能項目引入SDK項目文檔 及Search Paths相關參數說明
選中 none 打開 目的 每次 創建文件 sdk shu com SDK包過大,單獨作為一個項目 項目中使用第三方的SDK包(例如所有的.a文件1G多),導致項目整體過大,這個時候就可以把第三方的.a文件單獨作為一個項目。 每次自動化打包都要從git拉去項目,不用每次都拉
Vue怒踩微信JS-SDK中配置的坑 - 簽名錯誤
前言 這幾天公司需要做微信端h5專案,需要用到微信掃一掃功能,就需要涉及到配置微信JS-SDK的問題,怎麼配置怎麼生成簽名這邊就不說了官方文件(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115)都說的比較詳
[基礎篇]ESP8266-SDK教程(零)之認識並了解
移植 感覺 手機 微信小程序 科技 想法 操作 更新 onos 從今天開始就要開始在博客園灌水了,因為本人從事物聯網相關的行業,所以對物聯網還算有一定的了解和認識,目前主要做LoRa這一塊的應用,不過這個系列文章不是關於LoRa的,主要是關於ESP8266開發的,這也算是個
[網路篇]ESP8266-SDK教程(五)之SmartConfig、Airkiss等多種配網方式
在前面網路篇TCP通訊中,我們用到了Wi-Fi功能,但是沒有細講,今天我們在這篇文章中仔細探討一下ESP8266的Wi-Fi聯網過程,以及各種方式的配網過程是如何實現的。文章中難免有疏漏或不正確的地方,如遇不正確的表述還請指出,本系列文章現在在知乎和簡書同步更新。 IAMLIUBO-知乎專欄 IAMLIU
ESP8266 SDK Makefile分析
主要內容 本章我們來分析SDK中的Makefile,同時學習如何建立自己的原始碼資料夾。 預備知識 一份程式碼工程編譯成二進位制可執行檔案,需要經過四個步驟:預處理、編譯、彙編和連結。 進行編譯需要有編譯器,Linux環境下使用的是gcc,而對應的,ESP8266使用
Android SDK中的自動化測試
Android中的測試手段非常豐富。通常上,按測試執行環境來劃分,可以分為本地單元測試與Instrument測試: 執行環境 測試型別 PC機 本地Unit Test
Revit 2014 SDK中例子整理 (一)
1.AddSpaceAndZone創造空間和區域 1.1在指定層獲取所有空間元素 1.2在指定層獲取所有區域元素 1.3為封閉的牆封閉空間建立空間元素 1.4在指定層和階段建立區域元素 1.5在zone元素中新增,刪除sp
利用WPF建立自己的3d gis軟體(非axhost方式)(十二)SDK中的導航系統
先下載SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew 密碼:1te1 地圖資料包(sqlserver2008R2版本,也可以不下載): https://pan.baidu.com/s/1PjcNamad7OVpCrsV
ESP8266-SDK開發入坑(四)- STATION模式
記一個慘痛教訓,務必記得即時儲存檔案。(這次不是丟了,而是無法build)。切記,切記,eclipse修改後務必ctrl+s然後clean 然後再build! 1、實驗目的 瞭解SDK開發的STA模式操作方法,熟悉相關API函式。 2、函式解
利用WPF建立自己的3d gis軟體(非axhost方式)(十一)SDK中的動畫系統
先下載SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew 密碼:1te1 地圖資料包(sqlserver2008R2版本,也可以不下載): https://pan.baidu.com/s/1PjcNamad7OVpCrsV