I've developed a PI Python application to replace an old control card which sent bit banging out to daisy chained LED drivers.
It all works fine except when I need some fast updating of the LED's.
Currently I'm using bit banging on SPI. Having problems getting the data to actually go out the GPIO.
I've set up PiScope and have a screenshot attached of the capture on pins 4,16,19. The screenshot also shows the terminal session running the test program.
Respectively they are data, clk, cs.
Here is the Python code of the test program I am running:
Why am I not seeing the data on pin 4?
import time
import pigpio as GPIO
import serial
Ziku = [
0x07,0x0F,0x0f,0xff, #0
0x00,0x00,0x01,0xf8, #1
0x00,0x0F,0xfe,0x3f, #2
0x00,0x00,0xff,0xff, #3
0x07,0x00,0xf1,0xf8, #4
0x07,0x00,0xff,0xc7, #5
0x07,0x0F,0xff,0xc7, #6
0x00,0x00,0x01,0xff, #7
0x07,0x0F,0xff,0xff, #8
0x07,0x00,0xff,0xff, #9
0x00,0x00,0x00,0x00, #10
0x00,0x00,0x70,0x00, #- 11
0xf0,0x0F,0xfe,0x00, #12
0x00,0x0F,0xf0,0x07, # F
0x07,0x0F,0xf1,0xf8, # H
]
#create local PI GPIO
p1 = GPIO.pi()
# Pin definitions
sda_pin = 4
mosi_pin = 7
clk_pin = 16
oe_pin = 5
cs_pin = 19
#p1.bb_spi_close(cs_pin)
#clock frequency
freq = 1000
#Now going to just use straight bit banging rather than the i2c stuff
p1.set_mode(oe_pin, GPIO.OUTPUT)
p1.set_mode(cs_pin, GPIO.OUTPUT)
p1.set_mode(clk_pin, GPIO.OUTPUT)
p1.set_mode(sda_pin, GPIO.OUTPUT)
p1.write(oe_pin, 1) # Disable output
def send_digit(char):
ziku_num = int(char) * 4
send_data = [Ziku[ziku_num], Ziku[ziku_num+1], Ziku[ziku_num+2], Ziku[ziku_num+3]]
p1.bb_spi_xfer(cs_pin, send_data)
print(send_data)
# Main Loop
num_select = ""
while num_select.upper() != "E":
num_select = raw_input("Choose which digit (10 will clear, E will exit) ")
if num_select.upper() != "E":
p1.bb_spi_open(cs_pin, sda_pin, mosi_pin, clk_pin, freq, 0)
p1.write(oe_pin, 1) #disable output
ziku_num = int(num_select) * 4
send_data = [Ziku[ziku_num], Ziku[ziku_num+1], Ziku[ziku_num+2], Ziku[ziku_num+3]]
p1.bb_spi_xfer(cs_pin, send_data)
print(send_data)
p1.write(oe_pin, 0) #enable output
p1.bb_spi_close(cs_pin)
p1.bb_spi_close(cs_pin)
