TI中文支持网
TI专业的中文技术问题搜集分享网站

AD1246读写寄存器的问题

你好,最近在使用5418a连接6个ad1246,顺序进行SYS0 寄存器配置时设置采样频率20HZ(写入0x02),之后想测试配置是否成功(同时验证SPI口的通讯配置),对SYS0 寄存器进行读操作,发现读出来的数据不对,写、读操作分别为

ADC1_WDATA[0]=0x02; //Write SYS0 REG By 0x02; Data Rate =20 SPS
EXCHANGE_UCB0(0x40|0x03); //写寄存器:发送第一个地址字节(address = 03h)
EXCHANGE_UCB0( 0x00); //写的长度-1后的值(发送第二个字节)
EXCHANGE_UCB0( ADC1_WDATA[0]);
__delay_cycles( 20 );
EXCHANGE_UCB0(0x20|0x03); //读寄存器:发送第一个地址字节(address = 03h)
EXCHANGE_UCB0( 0x00); //Read REG
_NOP();
ADC1_RDATA[0]=EXCHANGE_UCB0( 0xFF);
__delay_cycles( 20 );

UCBORXBUF中读出来的分别是FF,7F,FF,7F,00,7F,理想的数据应该是0x02,不知道问题出在哪??

还有__delay_cycles( 20 )中延时的20个时钟周期对应的是主系统时钟MCLK,还是对SPI口配置的时钟信号(即对SMCLK分频后的时钟信号)??

xyz549040622:

SPI协议在上升沿锁存数据,下降沿更新数据,这是一般SPI协议的作法。但ADS1246需要在下降沿锁存数据,上升沿更新数据。这点需要注意,写个值再读出来不对,肯定是时序出问题了。

__delay_cycles( 20 )是对应主时钟MCLK的。

wei jing2:

回复 xyz549040622:

SPI的设置是这样的,不活跃为低电平,下降沿输出,上升沿接受数据:UCB0CTL0 = UCMST+UCSYNC+UCMSB;应该是正确的。

此外,对于手册7.6 Timing Requirements一节中提到的SPI接口的通信Tsclk周期限制

其中最大为周期为

64
Conversions

请问这里的Conversions指多少??例如我使用的MCLK=4.096Mhz,采样速率设置为20SPS(由于读不会寄存器的值,不确定20设置成功与否),这里的Conversions是指主时钟MCLK的周期吗?

赞(0)
未经允许不得转载:TI中文支持网 » AD1246读写寄存器的问题
分享到: 更多 (0)