本實驗中,Nucleo H753ZI 當作 SPI Master,PYNQ-Z2 當作 SPI Slave。
使用SPI通訊協定傳送及接收8 Bytes。
腳位設定如下:
使用AXI QUAD SPI
SPI Slave接收不到資料。
即使SPI Master的Prescaler設為256(187.5KBit/s)SPI Slave仍接收不到資料
使用Digital LA分析訊號正常
使用Vivado ILA分析訊號正常
原因:使用杜邦線連接兩片開發板,可能產生訊號抖動, 用LA未必能發現訊號抖動問題
使用自行開發的 SPI Slave IP
用GPIO0的2個channel(64bit)接收8 Bytes, 用GPIO1的的2個channel(64bit)傳送8 Bytes,GPIO2的1 bit做為rx valid。
去除CS抖動
CS連續15 clock為high才重置, CS為low則立即啟動接收資SPI Slave可以接收到資料, SPI Master收到的回傳資料皆位移1 bit
原因:第一次取樣(第一個 SCK 上升沿)時,錯過了第 1 個 bit (Bit 63),直接讀到了第 2 個 bit (Bit 62)。
解決:調整SPI Slave的PS FCLK_CLK0為150MHz。
SPI Master Prescaler設定為2(24Mbit/s)可以正常傳送接收資料。
