工具与软件:
尊敬的先生/女士
问题:从 DAC8574读回值
我们在 PCB 上使用多个 DAC8574
我们在总线上使用了多个 DAC8574、如数据表中所述:"支持多达十六个 DAC8574s 地址"
我们在芯片 A3、A2、A1和 A0上使用地址线
AA- AA
10 32.
U10:地址1001100-01
U12:地址1001101-01
U16:地址1001110-01
U18:adres 1001111-01
U11:adres 1001100-10.
U13:adres 1001101-10
U15:地址1001110-10
U17:adres 1001111-10.
我正在使用其中一个芯片进行测试以读回某个值?
当我向芯片写入一个值时(在本例中为0x11)、我读回0。
我知道它肯定在读取某些内容、因为 uPWD 字节显示的是0x3F
数字是十六进制的
"测试计划"给了我
写入 DAC8574 Oke
地址:98 50 Data 0 11
读取 DAC8574 Oke
地址:98 51数据[3F] 0 0
写入序列
ACK ACK
从主器件
I2C_Start 程序
写入地址0x98 SACK 10011000
写入控制0x50 SACK 01010000
写入 MSB 0x00 SACK 00000000
写入 LSB 0x11 SACK 00010001
I2C_Stop
读取序列
ACK ACK
从主器件
I2C_Start 程序
写入地址0x98 SACK 10011000
写入控制0x51 SACK PD0=1 01010001
重新启动
写入 Address+1 0x99 sack
读取 uPWD Mack 00111111
读取 MSB Mack 00000000
读取 LSB mNACK 00000000
I2C_Stop
SACK =从器件 ACK
MACK -主器件 ACK
mNACk =主器件无确认
fprintf (MASTER_DEBUG_STREAM、"Write DAC8574 Oke\r\n");
fprintf(master_debug_stream、"Address:%X %X Data %X %X \r\n"、ADDRReg、CTRLReg、MSB、LSB );
fprintf (MASTER_DEBUG_STREAM、"Read DAC8574 Oke\r\n");
fprintf (MASTER_DEBUG_STREAM、"地址:%X %X 数据[%X]%X %X\r\n"、ADDRReg、CTRLReg、uPWD、MSB、 LSB );