① 怎麼用PIC單片機實現SPI雙機通信
(1)SDI – 主設備數據輸入,從設備數據輸出;
(2)SDO – 主設備數據輸出,從設備數據輸入;
(3)SCLK – 時鍾信號,由主設備產生;
(4)CS – 從設備使能信號,由主設備控制。
直接把兩個單片機連接到一起就可以了,然後按照datasheet要求寫驅動程序也就是設置寄存器
② pic單片機如何模擬SPI方式
按照SPI介面要求的時序,讓一個埠模擬時鍾,一埠模擬SDO輸出,一個模擬SDI輸入,編程讓相關的引腳按照SPI時序的要求高或低電平,或者讀時判斷高低輸出相應的接收位就可以了,這樣也是很方便的,但前提是你要對SPI通信的細節要了解的非常清楚。
③ pic單片機spi主從機通信問題
把裡面所有的寄存器都設置一遍,無非是通信速率,還有時鍾數據鎖存方式(上升、下降沿)。另外,SPI的通信要點是發送一個位元組,接收一個位元組,即使想要接收一個位元組,主機也要先發送一個位元組。
④ PIC單片機模擬SPI的問題;我用PIC16F873模擬SPI。硬體模擬數據已經傳輸成功,但是在硬體里自己跑就有問題了
完全可以用IO口模擬SPI、IIC和非同步串列通信。
你的程序中:
RC2=1; //CS
C3=0; //SCK要改為: RC2=1; //CS
NOP();
RC3=0; //SCK
這是因為PIC單片機對埠操作時是按「讀-修改-寫」的順序,這個說來有點復雜,可參閱參考資料。
還有,要根據通信對象的最大SPI速率來確定每一位的延時時間,即每位間用幾個NOP()語句。
⑤ pic的spi通信傳輸問題
利用spi模塊的話,會直接寫到寄存器里,就是8位了。
如果你自己編程實現SPI,可以移位存儲。就是假設變數為BUF。
BUF=a;把最低位存進來。
BUF<<;(左移後移取決於a是在最高位還是最低位。你自己想一下。左移無所謂,如果是右移,那麼一定要循環右移哦。)
然後下一個循環里
BUF= BUF+b;
BUF<<;
思路就是這么一個思路。
⑥ PIC單片機的SPI與I2C的通信問題
根據你電路板上選的晶元來選擇,比如你選個AT24C02的EEPROM,這個晶元是基於I2C匯流排的,你在寫程序的時候對I2C初始化就好了,同樣你選個支持SPI匯流排的片子就對單片機的SPI功能設置。
⑦ 兩個PIC的單片機能用SPI模塊相互通信么
用主從模式通信是可以的。但是如果兩個單片機都有可能向對方主動發數據,那麼用UART 串口是最方便的了,需要的IO口也少,一般PIC都有集成UART模塊。
SPI一般都用在mcu對周邊器件的操作,如spi 介面的flash和spi 介面的eeprom 的數據讀寫操作。
⑧ pic單片機 spi 通信最多接幾個從單片機,50個可以嗎
按照你的命題,SPI通訊,拿一個PIC做主機,50個為從機,每個從機必須要花銷一個IO口作為使能控制。
如果你選的單片機有53個IO口以上型號的,是可以掛50個SPI介面從機的,但這樣做有意義嗎?
帶較多從機時建議 你用UART串列口或I2通訊,一般帶SPI的PIC單片機也都帶有這兩個口
⑨ PIC單片機SPI問題
IO 口模擬SPI介面 :是可以的
數據就是按照SPI時序移位就可以
舉個例子:(片選位必須有效)
SPI的CLK是上升沿有效
可以先將時鍾設置為低電平,延時一段時間;
然後將數據移位置埠
再將時鍾設置為高電平,延時一段時間
數據就可以輸入或者輸出了
⑩ pic單片機spi通信 讀一個數據之前為什麼要寫一個位元組的數據
這個是由於單片機是作為主控方,通過寫一個啞數據(任何數均可),單片機將發出時鍾脈沖,從動方就會按照時鍾的時序把數據在其數據輸出線上輸出。