Difference between revisions of "SPI-POTX2"

From Land Boards Wiki
Jump to navigation Jump to search
 
(34 intermediate revisions by the same user not shown)
Line 24: Line 24:
 
== Connectors ==
 
== Connectors ==
  
=== J1, J3 - SPI connector ===
+
[[file:SPI-POTX2-BW.png]]
 +
 
 +
=== J1, J3 - SPI connector - Rev X1 ===
 +
 
 +
* Two separate 1x5 headers
 +
** Used for chaining to other cards
 +
 
 +
# MISO
 +
# +V
 +
# SCK
 +
# MOSI
 +
# SS
 +
# GND
 +
 
 +
=== J1, J3 - SPI connector - Rev 2 ===
 +
 
 +
* Single 2x6 right angle header
 +
** Used for chaining to other cards
  
 
# MISO
 
# MISO
Line 44: Line 61:
 
# GND
 
# GND
  
=== POT0, POT1 ===
+
=== POT0 ===
 +
 
 +
# GND
 +
# B SIDE
 +
# WIPER
 +
# A SIDE
 +
# +V
 +
 
 +
=== POT1 - Rev X1 ===
 +
 
 +
# GND
 +
# A SIDE
 +
# WIPER
 +
# B SIDE
 +
# +V
 +
 
 +
* Rev X1 board has POT1 A, B Sides reversed on Silkscreen
 +
** Impacts POT1 Vcc/GND jumpers
 +
 
 +
=== POT1 - Rev 2 ===
  
 
# GND
 
# GND
Line 51: Line 87:
 
# A SIDE
 
# A SIDE
 
# +V
 
# +V
 +
 +
* Rev 2 board updated so POT1 matches POT0
  
 
== Driver Software ==
 
== Driver Software ==
 +
 +
* Set channel number on GPIO_22 (A0), GPIO_27 (A1), GPIO_17 (A2)
 +
* Do SPI transfer as 2 of 8-bit or 1 of 16-bit transfer(s)
 +
 +
=== Arduino Driver / Example Code ===
  
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/SPIPOTX2 SPI-POT-X2 GitHub Arduino Example Code]
 
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/SPIPOTX2 SPI-POT-X2 GitHub Arduino Example Code]
 
** Creates triangle wave output on both outputs
 
** Creates triangle wave output on both outputs
 +
 +
=== Raspberry Pi Example Code ===
 +
 +
[[file:RPI_SPI8_P1897_720PX.jpg]]
 +
 +
* Test SPI-POTX2 Dual pot card on the Raspberry Pi using [[RPI_SPI8]] SPI mux card
 +
** Mux card is easy to include/exclude option in the code
 +
<pre>
 +
# Set the next line to False if directly connecting to Raspberry Pi SPI bus
 +
USING_RPI_SPI8_CARD = True
 +
</pre>
 +
* Makes triangle waves on the pot wiper pins
 +
* [https://github.com/land-boards/RasPi/blob/master/RPI-SPI8/MCP4231_SPI_Test.py MCP4231_SPI_Test.py] - Our GitHub repo
 +
** [https://github.com/land-boards/RasPi/tree/master/RPI-SPI8 Readme file]
 +
 +
==== Raspberry Pi Reference Docs ====
 +
 +
* [https://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/README.md SPI on the Raspberry Pi]
 +
* [https://pypi.org/project/spidev/ Python Spidev]
  
 
== Factory Test Procedure ==
 
== Factory Test Procedure ==
Line 63: Line 125:
 
=== Hardware Setup ===
 
=== Hardware Setup ===
  
[[FILE:]]
+
[[FILE:SPI-POTX2_P1889_720px.jpg]]
  
 
* [[RPI_PSOC5]]
 
* [[RPI_PSOC5]]
Line 69: Line 131:
 
* [[RPI_SPI8]]
 
* [[RPI_SPI8]]
 
** 8-channel SPI multiplexer
 
** 8-channel SPI multiplexer
* 2x6 cable
+
* Unit Under Test (UUT)
** CE (SS)
+
 
** MOSI
+
==== SPI Cable ====
** MISO
+
 
** SCK
+
{| class="wikitable"
** VCC
+
! RPI_SPI8 (Marking)
** GND
+
! RPI_SPI8 Pin
 +
! SPI-POTX2 Pin
 +
! SPI-POTX2 Marking
 +
|-
 +
| Chip En (CE)
 +
| 1
 +
| 5
 +
| SS
 +
|-
 +
| MOSI (MO)
 +
| 2
 +
| 4
 +
| MOSI
 +
|-
 +
| MISO (MI)
 +
| 3
 +
| 1
 +
| MISO
 +
|-
 +
| SPICK (CK)
 +
| 4
 +
| 3
 +
| SCK
 +
|-
 +
| Vcc (+V)
 +
| 5
 +
| 2
 +
| +V
 +
|-
 +
| GND
 +
| 6
 +
| 6
 +
| GND
 +
|-
 +
|}
  
 
=== Run Tests ===
 
=== Run Tests ===
Line 96: Line 192:
 
6 - Select RPI-I2C-HUB Card
 
6 - Select RPI-I2C-HUB Card
 
7 - Select RPI-SPI8 Card
 
7 - Select RPI-SPI8 Card
 +
8 - Select SPI-POTX2 Card (via RPI-SPI8)
 
R - Read EEPROM
 
R - Read EEPROM
 
W - Write EEPROM
 
W - Write EEPROM
Line 103: Line 200:
 
? - Print this menu
 
? - Print this menu
 
</pre>
 
</pre>
* Select RPI-SPI8 Card by entering 7[ENTER]
+
* Select SPI-POTX2 Card by entering 8[ENTER]
 
<pre>
 
<pre>
7
+
8
Selected RPI-SPI8 card
+
Selected SPI-POTX2 card (vis RPI-SPI8)
 
</pre>
 
</pre>
  
 
=== Create Sawtooth Output ===
 
=== Create Sawtooth Output ===
  
* Enter B[ENTER] - Create ramped output
+
* Enter T[ENTER] - Create ramped output
 
<pre>
 
<pre>
B
+
Testing SPI-POTX2 card (via RPI-SPI8), please wait
Blinking the RPI-SPI8 Card LEDs, please wait
+
test_SPI_POTX2() - Reached function
</pre>
+
test_SPI_POTX2() - Start SPI
* Bounces LEDs off across the LEDs
+
test_SPI_POTX2() - Started SPI</pre>
** 8 CE signals go low one at a time
+
* Use scope to observe ramped output on POT0
** MOSI, MISO, SCK cycles one on at time
+
** CH 1 Yellow = SPI_CE0
** Ramped output
+
** CH 2 Cyan = POT0 wiper
 +
 
 +
[[file:SPI-POTX2-14.png]]
  
 
=== Test Software ===
 
=== Test Software ===
Line 130: Line 229:
 
* Uses [[RPI_SPI8]]
 
* Uses [[RPI_SPI8]]
 
* [https://github.com/land-boards/RasPi/tree/master/RPI_PSOC5/RPI_PSOC5_RPI_SPI8_CARD_TEST.cydsn GitHub repo]
 
* [https://github.com/land-boards/RasPi/tree/master/RPI_PSOC5/RPI_PSOC5_RPI_SPI8_CARD_TEST.cydsn GitHub repo]
** [https://github.com/land-boards/RasPi/blob/master/RPI_PSOC5/RPI_PSOC5_RPI_SPI8_CARD_TEST.cydsn/Test_RPI_SPI8.c Test_RPI_SPI8.c] - Test with [[SPI-POTX2]] card
+
** [https://github.com/land-boards/RasPi/blob/master/RPI_PSOC5/RPI_PSOC5_RPI_SPI8_CARD_TEST.cydsn/Test_RPI_SPI8.c Test_RPI_SPI8.c] - Test with SPI-POTX2 card
 +
 
 +
== Changes ==
 +
 
 +
=== Rev 2 ===
 +
 
 +
* Swapped POT1 A, B pins to match POT0 and silkscreen
 +
* Combined SPI connectors from 2 to 1 of 2x6 connector
 +
* Added SPI pin names to reverse side silkscreen
 +
 
 +
[[file:SPI-POT_Rev2_FRONT__3D.png]]
 +
 
 +
=== Rev X1 ===
 +
 
 +
* POT1 A, B pins swapped on silkscreen
 +
** POT1 Vcc, GND taps can not be shunted directly - need jumper cables to correct
  
 
== Assembly Sheet ==
 
== Assembly Sheet ==
  
* [[SPI-POTX2 Assembly Sheet]]
+
* [[SPI-POTX2 Rev 2 Assembly Sheet]]
 +
* [[SPI-POTX2 Assembly Sheet|SPI-POTX2 Rev X1 Assembly Sheet]]

Latest revision as of 15:27, 16 May 2022

Tindie-mediums.png

SPI-POTX2-720px.jpg

Features

  • Dual Digital potentiometer
    • MCP4231 Dual Digital Pot
    • 7-bit: 128 Resistors (129 Steps)
    • Zero Scale to Full Scale Wiper operation
    • 10K
      • Other resistances optional: 5K, 50K, 100K
    • Power on reset to half wiper value
    • SPI Interface
      • SPI Serial Interface (10 MHz, modes 0,0 & 1,1)
      • High-Speed Read/Writes to wiper register
      • 10 MHz (max SPI speed)
  • 2.7V to 5.5V
  • Daisy-chain SPI connector
    • Slave Select (SS) should be star connected
  • 49x49mm form factor
  • (4) #4-40 mounting holes

Connectors

SPI-POTX2-BW.png

J1, J3 - SPI connector - Rev X1

  • Two separate 1x5 headers
    • Used for chaining to other cards
  1. MISO
  2. +V
  3. SCK
  4. MOSI
  5. SS
  6. GND

J1, J3 - SPI connector - Rev 2

  • Single 2x6 right angle header
    • Used for chaining to other cards
  1. MISO
  2. +V
  3. SCK
  4. MOSI
  5. SS
  6. GND

J2 - SPI Connector

  • Matches Arduino SPI connector pinout
  1. MISO
  2. +V
  3. SCK
  4. MOSI
  5. SS
  6. GND

POT0

  1. GND
  2. B SIDE
  3. WIPER
  4. A SIDE
  5. +V

POT1 - Rev X1

  1. GND
  2. A SIDE
  3. WIPER
  4. B SIDE
  5. +V
  • Rev X1 board has POT1 A, B Sides reversed on Silkscreen
    • Impacts POT1 Vcc/GND jumpers

POT1 - Rev 2

  1. GND
  2. B SIDE
  3. WIPER
  4. A SIDE
  5. +V
  • Rev 2 board updated so POT1 matches POT0

Driver Software

  • Set channel number on GPIO_22 (A0), GPIO_27 (A1), GPIO_17 (A2)
  • Do SPI transfer as 2 of 8-bit or 1 of 16-bit transfer(s)

Arduino Driver / Example Code

Raspberry Pi Example Code

RPI SPI8 P1897 720PX.jpg

  • Test SPI-POTX2 Dual pot card on the Raspberry Pi using RPI_SPI8 SPI mux card
    • Mux card is easy to include/exclude option in the code
# Set the next line to False if directly connecting to Raspberry Pi SPI bus
USING_RPI_SPI8_CARD = True

Raspberry Pi Reference Docs

Factory Test Procedure

  • Test SPI-POTX2 card on RPI_PSOC5 Test Station

Hardware Setup

SPI-POTX2 P1889 720px.jpg

  • RPI_PSOC5
    • Raspberry Pi CPU Clone
  • RPI_SPI8
    • 8-channel SPI multiplexer
  • Unit Under Test (UUT)

SPI Cable

RPI_SPI8 (Marking) RPI_SPI8 Pin SPI-POTX2 Pin SPI-POTX2 Marking
Chip En (CE) 1 5 SS
MOSI (MO) 2 4 MOSI
MISO (MI) 3 1 MISO
SPICK (CK) 4 3 SCK
Vcc (+V) 5 2 +V
GND 6 6 GND

Run Tests

  • Run puTTY
    • Find COM Port in Device Manager
    • 115,200 baud
    • RTS/CTS flow control

RPI SPI8-puTTY setup.PNG

  • Hit ENTER to see menu
Land Boards, LLC - RPi Card Test Station
1 - Select RPP-UIO-16 Card
2 - Select RPPSOC Card
3 - Select RASPI-PLUS-GVS-CFG Card
4 - Select RASPI-GVS Card
5 - Select RASPI-PLUS-GVS Card
6 - Select RPI-I2C-HUB Card
7 - Select RPI-SPI8 Card
8 - Select SPI-POTX2 Card (via RPI-SPI8)
R - Read EEPROM
W - Write EEPROM
B - Bounce LED across Card GPIOs
T - Test Card
D - Debug Card
? - Print this menu
  • Select SPI-POTX2 Card by entering 8[ENTER]
8
Selected SPI-POTX2 card (vis RPI-SPI8)

Create Sawtooth Output

  • Enter T[ENTER] - Create ramped output
Testing SPI-POTX2 card (via RPI-SPI8), please wait
test_SPI_POTX2() - Reached function
test_SPI_POTX2() - Start SPI
test_SPI_POTX2() - Started SPI
  • Use scope to observe ramped output on POT0
    • CH 1 Yellow = SPI_CE0
    • CH 2 Cyan = POT0 wiper

SPI-POTX2-14.png

Test Software

Changes

Rev 2

  • Swapped POT1 A, B pins to match POT0 and silkscreen
  • Combined SPI connectors from 2 to 1 of 2x6 connector
  • Added SPI pin names to reverse side silkscreen

SPI-POT Rev2 FRONT 3D.png

Rev X1

  • POT1 A, B pins swapped on silkscreen
    • POT1 Vcc, GND taps can not be shunted directly - need jumper cables to correct

Assembly Sheet