This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我在使用升压 DAC8568以及连接 Raspberry Pi 方面遇到了一些困难。 简而言之、我能够照亮升压封装上的 LED、但不能按照8568数据表中的要求照亮这些 LED。
我将封装通过3.3V 电源、5V 电源(LED 所需)和接地线连接到 Raspberry Pi。 DAC 的 SCLK 连接到 Pi SCLK、DAC /SYNC (实际上是芯片选择)连接到 Pi CE1、DAC /LDAC 连接到 Pi GND、DAC MOSI 连接到 Pi MOSI。 我不连接 DAC/CLR、但如果需要、我可以将其物理连接到接地以复位芯片。
我认为我的接线是好的、因为我可以使用 python 脚本或使用 sudo echo -ne "\xxx\xxx\xxx">/dev/spidev0.1从终端点亮 LED
我通过以下视频了解了终端技巧: https://www.youtube.com/watch?v=iwzXh2V1SP4
不过、我的问题是 LED 没有按照数据表中的预期点亮。 我应该是照明 A、而是照明 B。我应该点亮 B、而应该点亮 D 等 我已经尝试充分利用所有这些功能、可以调暗 LED 并打开新 LED、但绝不会按照数据表的方式真正期望 LED 正常工作。
例如、在第35页的表11中、我认为为 DAC_A 提供完整输出应该能够通过:0000 0000 1111 1111 1111 1111 1111、这是十六进制的0x00、0x0F、0xFF、0xFF。 但是、当我这么做时、LED B 亮起。 我能够通过写入0x00 0x02 0xFF、0xFF 使 LED A 打开(对于第二个字节0x02、我可以通过写入0x02-9来调节 LED 亮度、但在0x0A 时、LED B 打开)。
下面是我的 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 www.ti.com/.../boost-dac8568
for DAC8568 datasheet: www.ti.com/.../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()
您好、Uttam、
感谢您的回答。 我还注意到、该位似乎有一个移位。 在进行更多的测试后、我非常确定极性是正确的、因为我已经将我的特性位设置为"1"。 如果极性被切换并首先读取、那么第一个位为"1"将是 DAC 的保留位、并导致其根据数据表无法正常工作。
我还对我的原始陈述进行了一些编辑。 我可以使'A' LED 以0x00、0x02、0xFF、0xFF 点亮。 第二个字节实际上可以是0x02到0x07、以点亮"A" LED。 在0x08时、我认为 B LED 亮起、但非常微弱、在0x09时 B LED 肯定亮起但非常暗、在0x0A 时、B LED 相当亮。 也许这些信息可以提供有关正在发生什么情况的线索? 但是、当我观察到这一点时、我没有看到极性相反的方法、并得到这种行为。 唯一有意义的是位是否移位。
您知道我如何补偿移位或消除移位吗? 这是否与 Raspberry PI SPI 接口的速度有关?
正如您说过的、使用示波器可能会有所帮助、我将尝试获取一个示波器。 谢谢、
Collin