老师好,在采集心电转换数据的时候出现了问题。我的目的是采集一个通道的数据通过430的串口发出。按照数据输出的组成共216bit,那么应该用27次接收缓存来接收吧。 我调用以下函数时设置len为27. 并把读到的数据发到dat数组中,按理说这样每次循环读取以后。dat【0】中应该为c0是吧,如果我要取通道1的数据发出,则应是dat[3]~dat[5]吧 但是我在程序调用前设置断点运行发查看d[0]却不是c0. 请问可能是什么原因。 这个连续读的子程序中是否需要设置延时,我理解只要加while判定语句就可以了。
主程序里函数调用为 ADS1298_SpiReadData_Continue( d,27);
uchar ADS1298_SpiReadData_Continue(uchar dat[],uchar len)
{
uchar i;
for(i=0;i<len;i++)
{
ADS1298_SpiSend_CMD_One(0); // 发送SPI时钟,DOUT=0
while(!(IFG2 & URXIFG1) ); //当buffer接收到一完整字节
dat[i] = U1RXBUF; }
while (!(IFG1 & UTXIFG0)); // TX缓存空闲?
U0TXBUF = dat[3]; while (!(IFG1 & UTXIFG0)); // TX缓存空闲?
U0TXBUF = dat[4]; while (!(IFG1 & UTXIFG0)); // TX缓存空闲?
U0TXBUF = dat[5]; }
return TRUE; }
qi tang:
回复 Jack Li:
Jack Li 您好 我就是参考了您这个代码后写的程序。 ADS1298的寄存器可以读写了。 但是可否请您看一下我上面的问题和贴的那段代码是否有什么不对的。 非常感谢了
Shimeng Qian:
回复 qi tang:
qi tang您好,我现在也在用ADS1298,我现在对寄存器写不进去,请问下您的spi时钟模式是怎么设置的?
yongpeng chen:
回复 qi tang:
qi tang,你这个读取方式不明白,我也用的430,能读出部分正确的东西,加我QQ:893872637.慢慢讨论。