0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于STM32F1開漏輸出的誤解

魚鷹談單片機(jī) ? 來(lái)源:魚鷹談單片機(jī) ? 2024-08-12 17:23 ? 次閱讀

來(lái)源:公眾號(hào)【魚鷹談單片機(jī)

作者:魚鷹Osprey

ID :emOsprey

正文

有些 IO 可能作為雙向輸出,比如 I2CSDA 引腳,如果配置成推挽輸出(push-pull),那么當(dāng)要讀取 應(yīng)答信號(hào)或者讀取 i2c 數(shù)據(jù)時(shí),需要重新配置 IO。

因此,很多教程會(huì)建議配置成開漏輸出(open-drain),這樣就不需要來(lái)回配置輸出方向。

這里需要注意的一點(diǎn)是,不管是開漏還是推挽輸出,作為輸入時(shí),都需要設(shè)置 ODR 寄存器

一直以為設(shè)置為開漏后,不管 ODR 設(shè)置 0 或 1,引腳電平應(yīng)該都是一樣的低電平,實(shí)際上,還是會(huì)有差異:

開漏 ODR 設(shè)置為 1:0.15~0.6V(波動(dòng)比較大)

開漏 ODR 設(shè)置為 0:0.002V

按理說(shuō),即使 0.6V 電壓,IDR 讀出的值應(yīng)該都是 0 才對(duì),實(shí)際上,不管是代碼,還是調(diào)試窗口,偶爾還是可以讀出 1 的情況。

外部未接任何電路,開發(fā)板引腳懸空:

wKgZoma51JaASU_OAAGYnZFz2Fg135.jpg

剛開始以為是調(diào)試窗口有問(wèn)題,但通過(guò)代碼發(fā)現(xiàn),開漏模式下,即使未接外部上拉電阻,電平確實(shí)被識(shí)別成高電平.

并且使用邏輯分析儀也是被莫名其妙的識(shí)別成高電平。

1V 不到的電平怎么就是高電平了(VDD 3.3V)?

wKgZoma51JWAbzFDAAHcjdmeoZo032.jpg

按這個(gè)數(shù)據(jù)手冊(cè)來(lái)說(shuō),VDD 3.3V 情況下,最少也需要 1.5V 以上才會(huì)被識(shí)別為高電平,百思不得其解。如果有道友懂的可以留言區(qū)討論,沒(méi)找到理論依據(jù)。

并且當(dāng)設(shè)置為開漏時(shí),當(dāng)準(zhǔn)備作輸入時(shí),如果 ODR 不設(shè)置為 1,雖然應(yīng)答信號(hào)可以讀取,讀取的數(shù)據(jù)卻是錯(cuò)誤的(測(cè)試 AT24C256)

wKgaoma51JWAd8WvAAGOathfoCo795.jpg

STM32F103 參考手冊(cè))

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120365
  • 引腳
    +關(guān)注

    關(guān)注

    16

    文章

    1196

    瀏覽量

    50483
  • 開漏輸出
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    7326
  • stm32f1
    +關(guān)注

    關(guān)注

    1

    文章

    56

    瀏覽量

    12206

原文標(biāo)題:關(guān)于 STM32F1 開漏輸出的誤解

文章出處:【微信號(hào):emOsprey,微信公眾號(hào):魚鷹談單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    輸出_什么是輸出

    什么是輸出,輸出:OC門的輸出就是
    發(fā)表于 03-31 15:31 ?7355次閱讀

    輸出與推挽輸出比較

    stm32 gpio 輸出與推挽輸出的區(qū)別。
    發(fā)表于 05-19 15:32 ?16次下載

    關(guān)于STM32f1f4編程的一些問(wèn)題解決方案

    關(guān)于STM32f1f4編程的一些問(wèn)題
    發(fā)表于 04-03 15:31 ?5次下載

    STM32F1系列DEBUG調(diào)試功能需要配置嗎?

    STM32F1系列的DEBUG調(diào)試功能需要配置嗎?
    的頭像 發(fā)表于 03-01 13:57 ?3373次閱讀

    STM32F1系列芯片中文參考手冊(cè)

    STM32F1系列芯片中文參考手冊(cè)(嵌入式開發(fā)培訓(xùn)教程)-STM32F1系列芯片的中文用戶手冊(cè)
    發(fā)表于 07-30 09:32 ?218次下載
    <b class='flag-5'>STM32F1</b>系列芯片中文參考手冊(cè)

    STM32F1官方手冊(cè)資料(中英文)

    STM32F1官方手冊(cè)資料(中英文)
    發(fā)表于 11-05 16:28 ?69次下載

    STM32F1F4的區(qū)別

    STM32F1F4的區(qū)別
    發(fā)表于 12-04 13:51 ?24次下載
    <b class='flag-5'>STM32F1</b>和<b class='flag-5'>F</b>4的區(qū)別

    STM32F1 使用easyflash操作片內(nèi)flash

    STM32F1 使用easyflash操作片內(nèi)flash
    發(fā)表于 12-09 10:06 ?15次下載
    <b class='flag-5'>STM32F1</b> 使用easyflash操作片內(nèi)flash

    STM32F1雙DMA提高串口速度

    STM32F1雙DMA,提高串口速度
    發(fā)表于 09-26 16:11 ?5次下載

    AN3427_從STM32F1移植到STM32F2的應(yīng)用手冊(cè)

    AN3427_從STM32F1移植到STM32F2的應(yīng)用手冊(cè)
    發(fā)表于 11-21 17:06 ?10次下載
    AN3427_從<b class='flag-5'>STM32F1</b>移植到<b class='flag-5'>STM32F</b>2的應(yīng)用手冊(cè)

    AN4904_從STM32F1STM32F4的軟件移植

    AN4904_從STM32F1STM32F4的軟件移植
    發(fā)表于 11-21 17:06 ?3次下載
    AN4904_從<b class='flag-5'>STM32F1</b>到<b class='flag-5'>STM32F</b>4的軟件移植

    UM1847_基于STM32F1系列的STM32CubeF1軟件庫(kù)使用入門

    UM1847_基于STM32F1系列的STM32CubeF1軟件庫(kù)使用入門
    發(fā)表于 11-22 08:22 ?4次下載
    UM1847_基于<b class='flag-5'>STM32F1</b>系列的<b class='flag-5'>STM32CubeF1</b>軟件庫(kù)使用入門

    AN2629 STM32F1低功耗模式

    AN2629 STM32F1低功耗模式
    發(fā)表于 11-24 08:30 ?0次下載
    AN2629 <b class='flag-5'>STM32F1</b>低功耗模式

    輸出和推挽輸出

    STM32或者GD32中,普通的輸出GPIO輸出方式主要是輸出和推挽
    的頭像 發(fā)表于 11-24 10:23 ?1.4w次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>漏</b><b class='flag-5'>輸出</b>和推挽<b class='flag-5'>輸出</b>

    單片機(jī)STM32F1資料分享

    單片機(jī)STM32F1資料分享
    發(fā)表于 05-16 18:04 ?15次下載