大家好
我需要对DAC8.0004万进行编程方面的帮助。
我使用SPI总线与芯片通信。
我使用数据表 www.ti.com/.../dac8.0004万.pdf
我不会在芯片中写入和获取数据时遇到任何问题。
但我必须同时更新所有4个DAC通道。
我尝试设置并重置LDAC和SDO寄存器。
我在消息末尾尝试发送而不是发送LDAC信号。
我尝试在一次同步时发送两封邮件(2x4字节)。
我尝试在消息的中间发送LDAC信号,如第8页所述。
我尝试使用不同的命令位(0-3位D27-D24)。
所有这些都结合在一起。
每次在每条消息(4个字节)后更新数据时。
是否可以先在每个通道的每个缓冲区中写入数据,然后再进行更新???
正确程序的剂量是怎样的?
我的一个例程:(我测试的是没有LED指示灯的情况)
软件LDAC是我可以自己设置的字节
uINT8_t SPI_SEND_DATA (uint8_t V0,uint8_t v1,uint8_t v2,uint8_t v3)
{
UINT8_t ret_wert=0;
// ChipSelect自动
cs (bit_reset);
UB_SPI2_SendByte (V0);
UB_SPI2_SendByte (v1);
UB_SPI2_SendByte (v2);
RET_wert=UB_SPI2_SendByte(v3);
cs (bit_set);
IF (软件LDAC == bit_set)
{
LDAC (bit_reset);
LDAC (bit_set);
}
IF (软件LDAC == bit_set)
{
ub_led亮起(LED_绿色);
ub_led关闭(LED_RED);
}
否则
{
ub_led关闭(LED_绿色);
ub_led亮起(LED_RED);
}
返回ret_wert;
}
正在执行例程。dacCommand可以通过多种方式在其中进行更改。
SPI_SEND_DATA (dacCommand,0x0F,0xFF,0xF0);
Delayms(100);
SPI_SEND_DATA (dacCommand,0x1F,0xFF,0xF0);
Delayms(100);
SPI_SEND_DATA (dacCommand,0x2F,0xFF,0xF0);
Delayms(100);
SPI_SEND_DATA (dacCommand,0x3F,0xFF,0xF0);
Delayms(100);
初始化例程
0x08,0x00,0x00,0x02 :启用SDO, retval=0x2
0x04,0xF0,0x00,0x0F :开机, retval=0x2
0x06,0xF0,0x00,0x0F :更新控件, retval=0x3e
0x1d,0x00,0x00,0x00 :正在读取状态寄存器, retval=0x7c
0x05,0x00,0x00,0x02 :清除模式寄存器, retval=0x0