各位TI大神:
在操作ADS1246的时候,发现可以正常的读转换结果的数据,读不出寄存器数据,也不能把数据写入寄存器。在读写寄存器的时候有哪些需要注意的设置啊,请各位指点一下。
写数据函数:
ADS1246_START_DATA=Low;
DelayUS(20);
ADS1246_CS2_DATA=High;
DelayUS(20);
ADS1246_CS2_DATA =Low; //
// __asm nop; //ÑÓʱ1/20M =50ns ±£Ö¤Ê±Ðò
// ADS1246_SCK_DATA=Low;
DelayUS(20);
DisableInterrupts;
for(i=0;i<8;i++)
{
ADS1246_SCK_DATA =High; //data on din are shifted into the device on the falling edge of sclk
// ADS1246_SCK_DATA =Low;
if(TxBuffer&0x80) //È¡×î¸ßλ
{
ADS1246_DIN_DATA=High; //дÊý¾Ý
}
else
{
ADS1246_DIN_DATA=Low; //дÊý¾Ý
}
// DelayUS(5);
ADS1246_SCK_DATA =Low;
// ADS1246_SCK_DATA =High;
TxBuffer<<=1;
// DelayUS(5);
}
EnableInterrupts;
DelayUS(40);
ADS1246_CS2_DATA =High;//
ADS1246_START_DATA=High;
读数据函数
ADS1246_START_DATA=Low;
DelayUS(20);
ADS1246_CS2_DATA =High;
DelayUS(20);
ADS1246_CS2_DATA =Low;
//ADS1246_SCK_DATA =Low;
DelayUS(10);
DisableInterrupts;
for(i=0;i<8;i++)
{
ADS1246_DIN_DATA=High; //nop
ADS1246_SCK_DATA =High;
//ADS1246_SCK_DATA =Low; //ʱÖÓµÍ
data|=ADS1246_DOUT2_DATA&0x01;
data<<=1;
// DelayUS(5);
ADS1246_SCK_DATA =Low;
//ADS1246_SCK_DATA =High;
// DelayUS(5);
}
ADS1246_DIN_DATA=Low;
EnableInterrupts;
//ADS1246_SCK_DATA =Low; //ʱÖÓµÍ
//ADS1246_SCK_DATA =High;
DelayUS(40);
ADS1246_CS2_DATA =High; //Ƭѡ¸ß
ADS1246_START_DATA=High;
附件为在读第一个寄存器(BCS)时的波形 ,在DOUT上没有发现读取数据的波形。