如何使用spidev在raspberry pi throw上的spi上传输24位数据

2024-09-28 21:51:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python中使用spi-throw-spiDev在Pi和ad5422之间发送24位数据。输入移位寄存器是24位宽的。在串行时钟输入SCLK的控制下,数据首先作为24位字加载到设备MSB中。数据记录在SCLK的上升沿。 输入寄存器由8个地址位和16个数据位组成。 24位字无条件锁存在锁存引脚的上升沿上。 例如发送数据:地址0x01,数据:0x0148=>;0x010148 有人知道我在干什么吗? 我的代码是:

import spidev
import time
import RPi.GPIO as GPIO            # import RPi.GPIO module
from time import sleep             # lets us have a delay 
GPIO.setmode(GPIO.BCM)             # choose BCM or BOARD
GPIO.setup(12, GPIO.OUT)           # set GPIO24 as an output



spi_bus = 3
spi_device = 0

spi = spidev.SpiDev()
spi.open(spi_bus, spi_device)
spi.max_speed_hz = 1000000

send_controll=0x55
send_data_ctrl1=0xb0
send_data_ctrl2=0x06

send_add=0x01
send_data=0x01
send_data=0x48

try:
     print("set GIOP high")
     #spi.xfer2([send_controll])
     spi.xfer2([send_controll,send_data_ctrl,send_data_ctrl2])
     GPIO.output(12, 1)
     sleep(0.01)
     GPIO.output(12, 0)

     sleep(0.5)
     spi.xfer2([send_add,send_data1,send_data2])
     GPIO.output(12, 1)
     sleep(0.01)
     GPIO.output(12, 0)
     
     print("end GIOP high")
     
except KeyboardInterrupt: # If CTRL+C is pressed, exit cleanly:
   print("Keyboard interrupt")

except:
   print("some error") 

finally:
   print("clean up") 
   GPIO.cleanup() # cleanup all GPIO 

 










但它不起作用


Tags: 数据importspisendoutputdatagpio地址