久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: STM32 MCU GPIO雙向口使用的話題 [打印本頁(yè)]

作者: taoran    時(shí)間: 2015-12-8 04:11
標(biāo)題: STM32 MCU GPIO雙向口使用的話題
本文的作者是milershao
關(guān)于STMCUGPIO的雙向使用話題不新鮮了,好像還經(jīng)常有人在此遇點(diǎn)麻煩。這可能跟總有新人接觸STMCU不無(wú)關(guān)系。


幾天前一個(gè)研究生MM使用STM32GPIO模擬I2C通信,讀取一時(shí)鐘芯片的時(shí)鐘的過(guò)程中遇到麻煩。查看其代碼,看到其在SDA數(shù)據(jù)線讀寫代碼時(shí),發(fā)現(xiàn)其來(lái)回做SDA腳的GPIO模式切換。那樣寫雖然沒(méi)有錯(cuò),但那樣寫多少有點(diǎn)累或繁瑣。

無(wú)獨(dú)有偶,昨天一廣州工程師也是用某STM32芯片的GPIO模擬I2C通信。他發(fā)現(xiàn)通信程序總是堵塞在代碼某地方。后來(lái)發(fā)現(xiàn)將那2根通信線的GPIO模式由輸入改為ODPP就正常了。程序正是正常了,但有點(diǎn)不知所以然的意味,如鯁在喉。

其實(shí),STMCUGPIO是支持雙向通信的。如果希望某GPIO做雙向傳輸,將其配制為OD輸出模式,將相應(yīng)輸出寄存器位寫1就可以了,不用在程序代碼里往返切換。

至于第二個(gè)案例,他用GPIO模擬I2C通信,其SDA應(yīng)是雙向數(shù)據(jù)口,只是把他定義為輸入肯定是不行的,那樣的話完全沒(méi)法做輸出了。如果這樣,通信自然無(wú)法正常。他把SDA口配置為OD才是合理的。

下圖是GPIO配置為輸入時(shí)的情況。


如果把GPIO配置為PP是否可以做雙向口呢,很多人發(fā)現(xiàn)有時(shí)可行有時(shí)不可行。

我們不妨先看看STMCU GPIO配置為輸出時(shí)的原理框圖。


對(duì)于OD配置,結(jié)合上拉,輸出電平的高低確定。當(dāng)給端口輸出寄存器寫1時(shí),端口對(duì)外成高阻態(tài)。外部電平真實(shí)反映在端口上,輸入電平不受內(nèi)部輸出控制電路的影響,而且GPIO管腳相對(duì)安全。

對(duì)于PP配置端口,跟OD配置相比,差別就大了。首先對(duì)于PP配置,總有一邊管子導(dǎo)通,對(duì)外來(lái)電平會(huì)有些影響。

若給PP配置端口輸出寄存器寫0,只有下方的N-MOS導(dǎo)通到地,端口不論外部電平如何變化都會(huì)鎖定在低電平,當(dāng)外來(lái)輸入高電平時(shí)有管腳燒壞風(fēng)險(xiǎn)。

如果給PP配置端口輸出寄存器寫1,只讓上方P-MOS導(dǎo)通。如果外來(lái)電平為高沒(méi)什么問(wèn)題,如果外來(lái)電平是低,也有可能管腳過(guò)流燒掉。當(dāng)然到底燒不燒還得結(jié)合外圍電路的配置。整體而言,對(duì)于PP配置輸出口不合適作輸入的讀取,所以不建議使用PP做雙向口用。關(guān)于STMCUGPIO的雙向使用話題不新鮮了,好像還經(jīng)常有人在此遇點(diǎn)麻煩。這可能跟總有新人接觸STMCU不無(wú)關(guān)系。


幾天前一個(gè)研究生MM使用STM32GPIO模擬I2C通信,讀取一時(shí)鐘芯片的時(shí)鐘的過(guò)程中遇到麻煩。查看其代碼,看到其在SDA數(shù)據(jù)線讀寫代碼時(shí),發(fā)現(xiàn)其來(lái)回做SDA腳的GPIO模式切換。那樣寫雖然沒(méi)有錯(cuò),但那樣寫多少有點(diǎn)累或繁瑣。

無(wú)獨(dú)有偶,昨天一廣州工程師也是用某STM32芯片的GPIO模擬I2C通信。他發(fā)現(xiàn)通信程序總是堵塞在代碼某地方。后來(lái)發(fā)現(xiàn)將那2根通信線的GPIO模式由輸入改為ODPP就正常了。程序正是正常了,但有點(diǎn)不知所以然的意味,如鯁在喉。

其實(shí),STMCUGPIO是支持雙向通信的。如果希望某GPIO做雙向傳輸,將其配制為OD輸出模式,將相應(yīng)輸出寄存器位寫1就可以了,不用在程序代碼里往返切換。

至于第二個(gè)案例,他用GPIO模擬I2C通信,其SDA應(yīng)是雙向數(shù)據(jù)口,只是把他定義為輸入肯定是不行的,那樣的話完全沒(méi)法做輸出了。如果這樣,通信自然無(wú)法正常。他把SDA口配置為OD才是合理的。

下圖是GPIO配置為輸入時(shí)的情況。


如果把GPIO配置為PP是否可以做雙向口呢,很多人發(fā)現(xiàn)有時(shí)可行有時(shí)不可行。

我們不妨先看看STMCU GPIO配置為輸出時(shí)的原理框圖。


對(duì)于OD配置,結(jié)合上拉,輸出電平的高低確定。當(dāng)給端口輸出寄存器寫1時(shí),端口對(duì)外成高阻態(tài)。外部電平真實(shí)反映在端口上,輸入電平不受內(nèi)部輸出控制電路的影響,而且GPIO管腳相對(duì)安全。

對(duì)于PP配置端口,跟OD配置相比,差別就大了。首先對(duì)于PP配置,總有一邊管子導(dǎo)通,對(duì)外來(lái)電平會(huì)有些影響。

若給PP配置端口輸出寄存器寫0,只有下方的N-MOS導(dǎo)通到地,端口不論外部電平如何變化都會(huì)鎖定在低電平,當(dāng)外來(lái)輸入高電平時(shí)有管腳燒壞風(fēng)險(xiǎn)。

如果給PP配置端口輸出寄存器寫1,只讓上方P-MOS導(dǎo)通。如果外來(lái)電平為高沒(méi)什么問(wèn)題,如果外來(lái)電平是低,也有可能管腳過(guò)流燒掉。當(dāng)然到底燒不燒還得結(jié)合外圍電路的配置。整體而言,對(duì)于PP配置輸出口不合適作輸入的讀取,所以不建議使用PP做雙向口用。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲精品一区二区三区蜜桃久 | 日本a在线观看 | 国产在线www| 欧美成人小视频 | 亚洲免费在线观看 | 国产黄a三级三级看三级 | 精品日韩一区二区三区 | 国产www| 99热免费| 日韩国产在线播放 | 亚洲精品一区二区三区在线 | 一区二区国产视频 | 在线观看欧美日韩视频 | 成人福利在线观看 | 亚洲一级精品 | 欧美综合色 | 免费一级黄色 | 五月婷婷丁香综合 | 亚洲一区二区三区中文字幕 | 成人免费在线播放 | 久久久久久久久久国产精品 | 国产精品偷乱一区二区三区 | 性做久久 | 日韩不卡一区 | 高清免费视频日本 | 一区视频在线 | 黄频在线观看 | 久久中文网| 伊人影院综合 | 亚洲福利专区 | 国产欧美久久久 | 黄色av日韩| 久久观看| 亚洲乱码国产乱码精品精软件 | 九九热精品视频 | 国产一区在线视频 | 天堂91 | 成人一区二区视频 | 伊人黄色 | 欧美日韩一区二 | 久久久久九九九九 |