He escrito un programa de prueba que genera 255 en el DAC TLV5606 a través de SPI, todo lo cual funciona como se esperaba.
Luego intenté extender el programa para actualizar el valor a 512, luego de un retraso de 5 segundos.
#include "mbed.h"
SPI spi(p5, p6, p7); // mosi, miso, sclk
DigitalOut fs(p8);
int main() {
fs = 0;
uint16_t fixed = 0x4000;
uint16_t value = 255;
value = value << 2;
uint16_t final = fixed | value;
spi.format(16,1);
spi.frequency(100000);
fs = 1;
fs = 0;
spi.write(final);
fs = 1;
wait(5000);
value = 512;
value = value << 2;
final = fixed | value;
fs = 0;
spi.write(final);
fs = 1;
}
Al medir con mi osciloscopio, puedo ver que el voltaje inicial es ~ 1.01v, que se espera, sin embargo, no hay cambios posteriores, después de 5 segundos o más. Intenté traer fs alto y luego bajo otra vez también, y esto no hizo ninguna diferencia. ¿Alguna idea sobre lo que está pasando?
Esto es lo que muestra el alcance para la primera transmisión (fs y datos):