![]() |
發(fā)布時間: 2023-6-15 15:00
正文摘要:PIC18f4680 SPI和IIC同時使用,SPI 驅(qū)動字庫芯片,IIC驅(qū)動OLED。SPI和IIC都是使用的RC3 和RC4引腳,可以進行分時復用嗎?怎么實現(xiàn)? void main(void) { unsigned char NixieNum =0 , ... |
yzwzfyz 發(fā)表于 2023-6-16 11:32 對的理論上是這樣的。 現(xiàn)在是IIC驅(qū)動的OLED顯示沒有問題,SPI控制的字庫讀不出。 SPI控制的字庫,在片選選通之前,將通訊切換成SPI理論上應該可以。 我感覺是MSSP中的哪個寄存器沒有配置對。或者是配置的順序不對。 單獨測試SPI和IIC都是沒有問題的 |
你可以相像一下: 在時間1,將它配制成SPI,這一點CPU會無條件服從。 在時間2,再將它配制成I2C,這一點CPU也無法抗拒啊。 所以你的想法是成立的! 不過,你要想好,通訊的對方是否可以配合,以及外部分硬件是否能夠配合。 |
angmall 發(fā)表于 2023-6-15 19:25 "【解惑帖】I2C與SPI總線分時復用造成的沖突",這個帖子上說可以分時復用。我也認為是可以的只要在使用SPI時關閉IIC,在使用IIC時關閉SPI應該就能實現(xiàn)。我再研究研究。謝謝 ![]() |
對于PIC18F4680單片機來說,SPI和I2C(IIC)是兩種不同的串行通信協(xié)議,它們不能直接分時復用在同一個引腳上。 SPI(Serial Peripheral Interface)是一種同步的串行通信協(xié)議,需要使用SCK(時鐘)、SDI(數(shù)據(jù)輸入)、SDO(數(shù)據(jù)輸出)和SS(片選)等引腳進行通信。SPI通信是基于主從設備的方式進行的,主設備控制通信時序和數(shù)據(jù)傳輸。 I2C(Inter-Integrated Circuit,也稱為IIC)是一種雙線制串行通信協(xié)議,需要使用SCL(時鐘)和SDA(數(shù)據(jù))等引腳進行通信。I2C通信是基于主從設備的方式進行的,主設備控制通信時序和數(shù)據(jù)傳輸。 由于SPI和I2C使用不同的通信方式和時序,它們不能直接在同一個引腳上進行分時復用。每個通信協(xié)議都需要專用的引腳來進行通信。 如果您需要同時使用SPI和I2C通信,您需要為每個通信協(xié)議分配不同的引腳,并根據(jù)需要進行引腳的連接和配置。 SPI 設備可以通過不聲明其從機選擇來忽略 SCK 和 SDI,但是 IIC 設備會被 SCL 和 SDA 線上的正常 SCK 和 SDI 信號弄糊涂。 即使粗略地看一下 IIC 規(guī)范也會發(fā)現(xiàn)這一點。 |
我應該在程序的什么地方進行分時復用?沒有思路 |
Powered by 單片機教程網(wǎng)