我在他们的 BOOST 分线板包中有一个德州仪器 DAC8568。DAC8568 是一款带有 SPI 接口的 8 通道 16 位 DAC。BOOST 包有用于将其连接到我的树莓派的接头,并且它的 LED 连接到输出电压,因此您可以轻松检查您的代码是否在执行您认为的操作。到 DAC8568 的 BOOST 包和数据表的链接在我下面的 python 代码中。
我用 3.3V 电源、5V 电源(LED 所需)和接地将封装连接到树莓派。DAC SCLK 进入 Pi SCLK,DAC /SYNC(实际上是芯片选择)进入 Pi CE1,DAC /LDAC 进入 Pi Gnd,DAC MOSI 进入 Pi MOSI。我没有为 DAC / CLR 接线,但如果需要,我可以将其物理地接地以重置芯片。
我相信我的接线很好,因为我可以使用 python 脚本或从终端使用以下命令点亮 LED: sudo echo -ne "\xXX\xXX\xXX\xXX" > /dev/spidev0.1
我从这个视频中学到了终端技巧: https ://www.youtube.com/watch?v=iwzXh2V1SP4
不过,我的问题是 LED 没有像我期望的那样根据数据表点亮。我应该点亮 A,但我点亮 B。我应该点亮 B,但我点亮 D,等等。我试图理解这一切,可以调暗 LED 并打开新的 LED,但从不妨碍我真的希望它按照数据表工作。
下面是我的python脚本。在我提到的数据表中我正在寻找要发送的位的评论中。我对使用模拟组件非常陌生,并且不是 EE,所以也许我没有正确地进行计时,或者犯了一些其他愚蠢的错误。也许有人可以查看数据表并查看我的错误,而不必实际拥有芯片。谢谢您的帮助!
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 8 16:33:05 2017
@author: pi
for texas instruments BOOST DAC8568
for BOOST schematic showing LEDs http://www.ti.com/tool/boost-dac8568
for DAC8568 datasheet: http://www.ti.com/product/dac8568
"""
import spidev
import time
spi = spidev.SpiDev() #create spi object
spi.open(0,1) #open spi port 0, device (CS) 1
#spi.bits_per_word = 8 does not seem to matter
#spi.max_speed_hz = 50000000 #does not seem to matter
#you have to power the DAC, you can write to the buffer and later power on if you like
power_up = spi.xfer2([0x04, 0x00, 0x00, 0xFF]) #p.37 Table11 in datasheet: powers all DACS
voltage_write = spi.xfer2([0x00, 0x0F, 0xFF, 0xFF ]) #p.35 Table11 in datasheet supposed write A--but lights B
voltage_write = spi.xfer2([0x00, 0x1F, 0xFF, 0xFF ]) #supposed write B--but lights D
voltage_write = spi.xfer2([0x00, 0x2F, 0xFF, 0xFF ]) #supposed write C--but lights F
voltage_write = spi.xfer2([0x00, 0x3F, 0xFF, 0xFF ]) #supposed write D--but lights H
voltage_write = spi.xfer2([0x00, 0x4F, 0xFF, 0xFF ]) #supposed write E--but does nothing
spi.close()
以后的读者请注意,上电需要打开内部参考电源,即
power_up = spi.xfer2([0x08, 0x00, 0x00, 0xFF]) #(p.37 datasheet