簡介SPI
SPI(Serial Peripheral Interface)應用於單晶片系統與周邊的通訊界面,類似I2C的用途,以串列方式運作,由Motorola(摩托羅拉)所開發,用於SD卡與液晶顯示器的通訊界面,可以一個主控端(Master)與多個從端(Slave)一起進行訊號傳輸。需要使用MOSI、MISO、SCLK與SS四條線,MOSI(Master Output Slave Input)表示由主控端發送訊號給從端,MISO(Master Input Slave Output)表示由主控端接收來自從端的訊號,SCLK是同步時脈,所以SPI是同步方式進行傳輸,另外,主控端與每一個從端裝置都需要一條SS(晶片選擇)線,經由這一條SS線決定主控端與哪一個從端進行通訊,使用MOSI與MISO兩條傳輸線,與SPI裝置進行通訊,所以SPI屬於全雙工運作。SPI主控端與從端運作的示意圖,如下。
實驗目標
使用SPI介面驅動8x8LED,顯示箭頭形狀到8x8LED。
實驗所需元件
8x8LED(使用SPI介面)x1
實驗接線圖
接線圖如下,Raspberry Pi要連接到靠近MAX7219晶片的針腳,不要連錯邊了,要連接DIN。因為8x8LED不會輸出資料到Arduino,所以不需要MISO的接腳。
Step1)開啟SPI功能
#sudo raspi-config
點選「Interface Options->SPI」啟用SPI功能
#sudo reboot
重新開機
Step2)檢查SPI是否啟動,正確會出現spidev0.0與spidev0.1
#ls -l /dev/spi*
crw-rw---- 1 root spi 153, 0 Oct 4 12:59 /dev/spidev0.0
crw-rw---- 1 root spi 153, 1 Oct 4 12:59 /dev/spidev0.1
Step3)安裝luma.led_matrix模組
sudo python3 -m pip install --upgrade luma.led_matrix
如果出現「error: externally-managed-environment」錯誤,執行「sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED」刪除python3.11的EXTERNALLY-MANAGED
Step4)下載範例程式
#git clone https://github.com/rm-hull/luma.led_matrix.git
Step5)執行範例程式,可以看到一大堆文字顯示在8x8LED上
#cd luma.led_matrix/
#python examples/matrix_demo.py
Step6)參考範例程式,修改成自己的程式碼
顯示「D8」左D右8