STM32F1與I2C從裝置通訊無應答?
最近做了STM32F103與DAC的I2C通訊,起先使用的是硬體I2C來驅動,按照時序寫好程式通訊正常,但由於電路板需求,需要將I2C的SCL和SDA線拉長,導致硬體I2C通訊經常掛死,於是考慮採用模擬I2C,(硬體I2C和模擬I2C的程式在我另外兩篇部落格上有),但是也經常掛死,最後終於找到原因,也是下面的四點:
(1)時序,這個一定要按照DAC晶片的資料手冊來
(2)地址,從裝置地址
(3)IO模式,這裡的SCL和SDA的IO要配置成開漏輸出GPIO_Mode_Out_OD,一般來說,開漏是用來連線不同電平的器件,匹配電平用的,因為開漏引腳不連線外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的一個優點是通過改變上拉電源的電壓,便可以改變傳輸電平。比如加上上拉電阻就可以提供TTL/CMOS電平輸出等。
(4)上拉電阻,開漏輸出提供了靈活的輸出方式,但是也有其弱點,就是帶來上升沿的延時。因為上升沿是通過外接上拉無源電阻對負載充電,所以當電阻選擇小時延時就小,但功耗大;反之延時大功耗小。所以如果對延時有要求,則建議用下降沿輸出。
相關推薦
STM32F1與I2C從裝置通訊無應答?
最近做了STM32F103與DAC的I2C通訊,起先使用的是硬體I2C來驅動,按照時序寫好程式通訊正常,但由於電路板需求,需要將I2C的SCL和SDA線拉長,導致硬體I2C通訊經常掛死,於是考慮採用模擬I2C,(硬體I2C和模擬I2C的程式在我另外兩篇部落格上有),但是也經常掛死,最後終於找到原因,
Linux應用層讀寫i2c從裝置(eeprom)
/***************************************************************************** i2c讀函式,引數1:從裝置地址,引數2:暫存器地址,引數3:讀取資料緩衝區,引數4:讀取資料大小
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.
樹莓派使用uart串列埠與串列埠裝置通訊
樹莓派硬體版本: 二代B+ 樹莓派系統版本 1 2 3 4 5 6 [email protected]@raspberrypi:~# lsb_release -a No LSB modules are available. Distributor
Android USB Host與USB Hid裝置的通訊(印表機和android通訊,通過USB)
記事:android和印表機通過網路通訊(網路印表機),有空也要記錄一下 堆疊關係也要記錄一下(通常我們所說的堆疊都是指棧,比如一個方法被呼叫的時候,我們就會把相關變數壓棧(巢狀才會壓棧,一個方法呼叫完是要出棧的),除非遞迴,一般情況下,棧是不會溢位的) 近期一直在做Android USB
APP與終端裝置通訊經驗三(具體情形介紹)
一、過程還原: 1.1.P2P模型 P2P(Peer to Peer)點對點通訊模型,終端與手機是對等網路,由於終端IP和埠固定,最初由手機建立信令報文傳輸鏈路(常鏈路),之後碼流報文傳輸鏈路(短鏈路)由終端根據手機端的相關的信令報文建立。 1.2.手機連線終端
APP與終端裝置通訊經驗四(碼流鏈路建立)
需求:APP作為服務端的程式。主動接收來自終端推送過來的碼流視訊資訊,並且播放。 過程: 1、app傳送一條信令協議,告知終端,請給我推送資料 2、同時app開始開啟服務端程式開始監聽一個埠號 3、終端收到了這條協議後開始推送資料。 4、app接收資料,並且完成
android 手機通過usb資料線與OTG裝置通訊
1.首先在AndroidManifest.xml檔案中新增所需要的許可權 <uses-feature android:name="android.hardware.usb.host" /> <uses-permission android:name="an
Android 與BLE裝置通訊
一、基本介紹 BLE全稱Bluetooth Low Energy即低功耗藍芽。 Android 4.3(API Level 18)開始引入核心功能並提供了相應的 API, 應用程式通過這些 API 掃描藍芽裝置、查詢 services、讀寫裝置的 characte
Android應用利用libusb與usb裝置通訊遇到的許可權問題
有2種方法: 1.chmod 666 dev/bus/usb/* 2.如果沒有android root許可權那就麻煩一點,描述個大概 AndroidManifest.xml中新增: <uses-feature android:name="android.hardwa
android 手機與藍芽裝置之間連線與通訊,附DEMO下載地址
下載地址為文章最後面。。。 該文章主要用於手機藍芽App介面的操作和通訊,儲存到本地的通訊後資料txt文字檔案 1.主要包括介面 2.AndroidManifest.xml需要用到的許可權 <uses-permission and
App與終端裝置通訊經驗五(流媒體傳輸對碼流的解析)
模組一(為什麼使用RTP協議): 一提到流媒體傳輸、一談到什麼視訊監控、視訊會議、語音電話(VOIP),都離不開RTP協議的應用,但當大家都根據經驗或者別人的應用而選擇RTP協議的時候,你可曾想過,為什麼我們要使用RTP來進行流媒體的傳輸呢?為什麼我們一定要用R
EFM8微控制器與I2C外設通訊
最近幫同學做一個專案,開發板是EFM8微控制器,支援SPI和I2C協議(SMBus)。很久沒搞過微控制器了,而且條件限制,為了使微控制器和外設成功通訊,花了一個星期時間。剛開始使用SPI,發現程式碼邏輯都沒問題,就是結果不對(後來知道是因為帶中斷的程式單步除
基於STM32F1與NRF24L01模組的SPI簡單通訊
一、前言 1.簡介: 本文是基於STM32F1,將資料傳送至NRF模組的暫存器,並將資料重新讀取,通過串列埠傳送出來的簡單SPI單通訊。 2.SPI簡介: 調過STM8的都已經對SPI有所瞭解,調法都一致,這裡就
html面頁與JAVA通過Socket 通訊
數據 問題 tcp連接 pri 中文 消息 output 版本支持 引入 (原) 往常前後端通訊基本都是以ajax請求或是表單做數據交互的,這是一種無狀態的http協議,如果要做tcp協議的數據交互,能想到的技術也就socket了,可如果後端是JAVA,前端如何做socke
物聯網通訊與普通短信通訊的區別和要註意的地方
手機短信 如果 solid ack .com 查詢 報錯 ron sisd CMPP3.0中號碼字段增加到32位,還增加了號碼類型字段,可能是為了擴展不同類型的卡。 Dest_terminal_Id 32*DestUsr_tl Octe
MPU6050帶字符驅動的i2c從設備驅動1
val 添加 space res add 操作方法 驅動 move 初始化 開幹: 1、閑言碎語 這個驅動,越寫覺的越簡單,入門難,入門之後感覺還好。Linux開發還是比較友好的。 2、編寫MPU6050帶字符驅動的i2c從設備驅動 要實現的功能就是,將MP
用ESP8266 WIFI模塊連接服務器,並實現與服務器相互通訊
很多 底層 同學 繼續 image 要求 png 工具 網絡調試 最近在做一個智能鎖的項目,該項目要求實現在任何地方(當然是要有網絡的)可以在手機上用APP開鎖。而我負責的部分主要是實現底層與服務器連接,並且要能相互通訊。考慮了很多問題,最終選擇了用ESP826
EEPROM讀寫學習筆記與I2C總線(二)
一點 後來 並不是 完數 cal 效應 計算 spi 速度慢 無論任何電子產品都會涉及到數據的產生與數據的保存,這個數據可能並不是用來長久保存,只是在運行程序才會用到,有些數據體量較大對於獲取時效性並不太強,各種各樣的數據也就有不同的存儲載體,這次在EEPR