PS2有線手柄的SPI協議

1.SPI模式

  與PS2採用的是SPI MODE3模式。並且使用低位在前方式收發數據。

2.請求PS2按鍵數據

   想要向PS2請示數據要發送一個請求命令。請求命令如下所示:

  cmd_require[9]={0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00};  // 數據按先低位後高位發送

3.接收PS按鍵數據

   在發送請求命令的同時,PS2會同步輸出按鍵數據。如下爲無按鍵按下時,求請命令和按鍵數據的對應關係:

   cmd_require[9] = { 0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };   // 向PS2請求鍵數據

   data_key[9]      = { 0x00,0x41,0x5A,0xFF,0xFF,0x00,0x00,0x00,0x00 };   // PS2同步輸出的按鍵數據,第一字節爲無效數據

   注意:

       data_key[]數組中的‘0x41’是一個標誌字節,表示此數據中只包函單純按鍵數據。應用程序可以通過此位來判斷接收

到的數據是否包函搖桿數據。下面會講怎麼獲取搖桿數據。

      data_key[3]和data_key[4]這兩個字節的每一位對應手柄上的一個按鍵。當相應按鍵被按下時,對應的位會被設置爲0.

4.請求PS2搖桿數據

   請求PS2搖桿數據和請求PS2按鍵數據時送的命令是一樣的。請求命令如下所示:

  cmd_require[9]={0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00};  // 請求按鍵和搖桿數據

  當用戶按下手柄上的‘ANALOG’按鍵,並且手柄上的LED燈點也亮了。這樣用戶再操作搖桿時就可以得到搖桿對應的數據

  了。

5.接收PS2按鍵數據

   在發送請求命令的同時,PS2會同步輸出按鍵數據和搖桿數據。如下爲無按鍵按下時,求請命令和按鍵數據的對應關係:

   cmd_require[9] = { 0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };   // 向PS2請求鍵數據

   data_key[9]      = { 0x00,0x73,0x5A,0xFF,0xFF,0x80,0x80,0x80,0x80 };   // PS2同步輸出的按鍵數據,第一字節爲無效數據

   注意:

       當data_key[1] = 0x73時,表示PS2返回的數據是按鍵+搖桿數據。data_key[]最後4字節應對手柄上的左、右兩個搖桿的

   數據。0x80表示搖桿處於中間位置,0x00-0xff代表了搖桿的具體位置。

 

參考資料:

http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章