摘 要 :以 I2C 通信主控方的要求為基礎(chǔ),討論 I2C 通信從動(dòng)方的程序編寫(xiě)。內(nèi)容包括 I2C 通信的起始部分(握手部分)、數(shù)據(jù)傳送部分以及停止部分的程序編寫(xiě),以三部分通信波形要求為準(zhǔn),總結(jié)軟件編寫(xiě)流程。I2C 通信的數(shù)據(jù)格式靈活多樣,可以一次傳送 8 位二進(jìn)制數(shù)據(jù),也可以一次傳送 8 的倍數(shù)的二進(jìn)制數(shù)據(jù),從機(jī)在通信中必須按照主機(jī)的要求進(jìn)行數(shù)據(jù)傳送。總結(jié)從機(jī)的數(shù)據(jù)傳送程序流程,以期滿足主機(jī)的通信要求,從而得出 I2C 通信從動(dòng)模式的詳細(xì)總結(jié)。
單通道時(shí),數(shù)據(jù)從串行接收引腳SSI_RXD進(jìn)來(lái),由接收移位寄存器RXSR傳輸給接收數(shù)據(jù)寄存器SSI_RX0,再根據(jù)用戶設(shè)置情況決定是否產(chǎn)生接收中斷。如果接收緩沖區(qū)RXFIFOO被允許,則SSI_RX0將數(shù)據(jù)寫(xiě)入RXFIFOO,并繼續(xù)從接收移位寄存器中獲取數(shù)據(jù)。雙通道時(shí),接收移位寄存器RXSR交替將數(shù)據(jù)傳輸給SSI_RX0和SSI_RXl。
因?yàn)槲铱吹絊TM32的USB都沒(méi)有對(duì)發(fā)送狀態(tài)進(jìn)行檢測(cè),當(dāng)多于傳送緩沖器的數(shù)據(jù)要傳送時(shí),估計(jì)就會(huì)出錯(cuò)了,所以找下這篇文章,但沒(méi)有找到原始作者,但也在此謝過(guò)了!STM32的多包數(shù)據(jù)傳送(轉(zhuǎn)貼)SMT32F103,根據(jù)例程 Custo