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.

怎样多次读取fdc2214数据寄存器的内容

Other Parts Discussed in Thread: FDC2214, MSP430F5529, MSP430G2553

初始化fdc2214为单通道CH0,连续模式,要读取DATA_CH0和DATA_LSB_CH0值。先发送写入命令0x54,再发送DATA_CH0地址0x00,再发读命令0x55,接收到DATA_CH0的值;接着发送写入命令0x54,再发送DATA_LSB_CH0地址0x01,再发读命令0x55,接收到DATA_LSB_CH0的值,第一次执行这个过程没有问题。用循环语句while(1)执行同样的过程,但在发完0x54后,fdc2214一直没有ACK信号。不知问题究竟出在哪里,
原本是四通道连续模式,也一样执行第一次一点问题没有,但同样的过程在执行第二次后,发完0x54,fdc2214也一直没有ACK信号。改为单通道后,也是同样的问题,好像每个数据寄存器的地址只能访问一次。
恳请哪位高手能帮忙看看,怎么回事?

微处理器用的MSP430F5529
Init_fdc2214();

while(1)
{
Transmit(DATA_CH0,2);
Receive(2);
val_ch0 = Res;

Transmit(DATA_LSB_CH0,2);
Receive(2);
val_ch0 = val_ch0*65536+Res;

}

Transmit()发送0x54和数据寄存器的地址,0x00或0x01;Receive()发送0x55,接收两个数据寄存器的转换值。第一次运行没问题,能读到正确的MSB和LSB。但循环第二次运行时,发送0x54后,fdc没有ACK。

Init_fdc2214();

Transmit(DATA_CH0,2);
Receive(2);
val_ch0 = Res;

Transmit(DATA_LSB_CH0,2);
Receive(2);
val_ch0 = val_ch0*65536+Res;

while(1)
{
Receive(2);
val_ch0 = Res;

Receive(2);
val_ch0 = val_ch0*65536+Res;

}

修改程序如上,运行时不报错,但寄存器地址指针一直停在0x01,所以读取的是DATA_LSB_CH0