stm32i2c缺點(diǎn) 關(guān)于調(diào)試stm32和stm8的i2c和spi協(xié)議的之間的區(qū)別?
關(guān)于調(diào)試stm32和stm8的i2c和spi協(xié)議的之間的區(qū)別?實(shí)際上,這兩種通信方式都是串行通信,通信協(xié)議可以相同。但是,I2C和SPI之間的接口不同。SPI有一個(gè)控制引腳,需要升高或降低該引腳才能進(jìn)
關(guān)于調(diào)試stm32和stm8的i2c和spi協(xié)議的之間的區(qū)別?
實(shí)際上,這兩種通信方式都是串行通信,通信協(xié)議可以相同。
但是,I2C和SPI之間的接口不同。SPI有一個(gè)控制引腳,需要升高或降低該引腳才能進(jìn)行通信。有數(shù)據(jù)和時(shí)鐘,至少有三根線(xiàn)可以通信。IIC是兩條可以通信的線(xiàn)路,數(shù)據(jù)和CLK實(shí)現(xiàn)通信。
為什么說(shuō)stm32的i2c雞肋?
STM32 I2C錯(cuò)誤:由于ACK信號(hào)時(shí)間很短,一旦短ACK信號(hào)丟失,STM32就會(huì)掛斷。CPU必須處理許多不同的任務(wù)。一旦其他任務(wù)占用CPU,ACK就很容易被遺漏。
官方網(wǎng)站不承認(rèn)此錯(cuò)誤。解決方案是采用最高優(yōu)先級(jí)的DMA來(lái)實(shí)現(xiàn)I2C傳輸。
我以前遇到過(guò)I2C的這個(gè)問(wèn)題。切換到狀態(tài)機(jī)模式后,就不會(huì)有問(wèn)題了。將I2C中斷的優(yōu)先級(jí)設(shè)置為最高。
如何用stm32庫(kù)函數(shù)編一個(gè)i2c串口程序?
I2C總線(xiàn)由NXP(原飛利浦)公司設(shè)計(jì)。它有一個(gè)非常簡(jiǎn)單的物理層定義。其特點(diǎn)如下:
只需要兩條總線(xiàn):一條串行數(shù)據(jù)線(xiàn)SDA和一條串行時(shí)鐘線(xiàn)SCL;
每個(gè)連接到總線(xiàn)的設(shè)備都可以通過(guò)一個(gè)唯一的地址和一個(gè)簡(jiǎn)單的主機(jī)/從機(jī)關(guān)系軟件來(lái)設(shè)置其地址,主機(jī)可以充當(dāng)主機(jī)發(fā)送器或主機(jī)接收器;
這是一個(gè)真正的多主機(jī)總線(xiàn)。如果兩臺(tái)或兩臺(tái)以上主機(jī)同時(shí)初始化,數(shù)據(jù)傳輸可以通過(guò)沖突檢測(cè)和仲裁防止數(shù)據(jù)被破壞;
串行8位雙向數(shù)據(jù)傳輸速率在標(biāo)準(zhǔn)模式下可以達(dá)到100kbit/s,在快速模式下可以達(dá)到400kbit/s,在高速模式下可以達(dá)到3.4mbit/s;
連接到同一總線(xiàn)的IC數(shù)量?jī)H受總線(xiàn)最大電容400pF的限制。