主题中讨论的其他器件: ADS1231、 MSP430F5529、 MSP430F449、 ADS1232REF
工具/软件:Code Composer Studio
根据 ADS1231数据表第13页的时序图、当速度较高时、所有24位数据输出(t_conv)的总时间应为12.5ms、这是我在 ADS1231REF 板上配置的。 但是、我的示波器显示信号在其他情况下工作。 为什么在该持续时间内应输出全部24位数据时、1位数据的长度约为12.5ms? 如何加快电路板的数据输出?
下面是示波器的图片。 如您所见、一个低位的持续时间大约为12.5ms。 在这里、SCLK 以32、768Hz 的频率运行、并且所有8个脉冲都在数据输出的1位范围内生成。 因此、我的程序在此时钟设置处获取的数据主要是0xFFFF。
当我将 SCLK 设置为大约80Hz (79.92Hz)以与 ADS1231REF 的数据速率同步时、这是我接收到的数据。 它非常不一致、无法转化为实际预期数据。
调试点:代码为10d8dec
调试点:代码为 bd3dba
调试点:代码为 e767d5
调试点:代码为9b1b0f
调试点:代码为8f0fdc
调试点:代码为9f1fc2
调试点:代码为84048a
调试点:代码为1028269
调试点:代码为9a1a9d
调试点:代码为 df5f8a
调试点:代码为 d050db
调试点:代码为10f8fda
调试点:代码为15ddd86
调试点:代码为 ff7f47
调试点:代码为127a7ea
调试点:代码是10b8bbb
我的程序是否有问题? 下面是我的代码中从 ADS1231获取24位代码的函数。
int32_t get_Code (空)
{
int32_t 代码、data1、signExtension;
int16_t data2;
int8_t data3、sign;
//当 DRDY (P7.0)变为低电平时、可以输出新数据。 然后、在 SCLK 的第一个上升沿、数据被位移出
while (P7IN 和 BIT0);//在 P7.0 (DRDY)变为低电平时退出循环/新数据就绪
while (!(UCB0IFG & UCTXIFG));
UCB0TXBUF = 0x21;
Data1 = UCB0RXBUF;
符号= data1 >> 7;
如果(符号) signExtension = 0xff;
否则 signExtension = 0x00;
signExtension <<= 24;
Data1 = data1 << 16;
while (!(UCB0IFG & UCTXIFG));
UCB0TXBUF = 0x22;
while (!(UCRXIFG));
Data2 = UCB0RXBUF;
Data2 = data2 << 8;
while (!(UCB0IFG & UCTXIFG));
UCB0TXBUF = 0x23;
while (!(UCRXIFG));
Data3 = UCB0RXBUF;
while (!(UCB0IFG & UCTXIFG));
UCB0TXBUF = 0x24;//第25个 SCLK 周期将 DRDY 置为高电平
代码= data1 + data2 + data3 + 0x800000; //使 ADC 代码为单极
Code &= 0x00FFFF;
printf ("调试点:代码为%04lx\n"、代码);
故障码;
}