• 正文
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

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

2024/05/13
1576
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

來源:公眾號【魚鷹談單片機】,作者:魚鷹Osprey,ID ??:emOsprey

有些 IO 可能作為雙向輸出,比如 I2C 的 SDA ?引腳,如果配置成推挽輸出(push-pull),那么當要讀取 應答信號或者讀取 i2c 數(shù)據(jù)時,需要重新配置 IO。

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

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

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

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

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

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

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

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

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

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

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

并且當設(shè)置為開漏時,當準備作輸入時,如果 ODR 不設(shè)置為 1,雖然應答信號可以讀取,讀取的數(shù)據(jù)卻是錯誤的(測試 AT24C256)

STM32F103 參考手冊)

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
KSZ8463MLI 1 Microchip Technology Inc DATACOM, MANCHESTER ENCODER
$6.84 查看
AFBR-5803Z 1 Foxconn Transceiver, 1270nm Min, 1380nm Max, 125Mbps(Tx), 125Mbps(Rx), SC Connector, Through Hole Mount, ROHS COMPLIANT, SIP-9
$34.98 查看
SN74LVC1G14DCKT 1 Texas Instruments Single 1.65-V to 5.5-V inverter with Schmitt-Trigger inputs 5-SC70 -40 to 125

ECAD模型

下載ECAD模型
$0.91 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄