您好! 我正在使用MSP432与ADS131A04 ADC进行通信,它使用32位字(M1 =1),异步中断模式(M0 =1),无干扰代码验证(M2 =0),外部参考电压和16.384MHz晶体,高分辨率模式-24位。 我想以10.24kHz数据速率使用ADC。
问题是在有新数据可用之前,我无法足够快地读取通道数据。 在10.24kHz时,我需要读取最大值~100us。 我已附加以下逻辑分析仪捕获(可使用免费的Salae Logic Pro软件打开;通道4为DRDY):
1.1kHz 数据速率,1MHz SPI时钟-字节时间为8us,字节间时间为~8us,字词时间~314us;
2.1kHz 数据速率,4MHz SPI时钟-字节时间为4US,字节间时间为~10us,文字时间~253us;
3.1kHz 数据速率,8MHz SPI时钟- 字节时间为1us,字节之间的时间为~7US,文字时间~170us;
4.10.24kHz数据速率,8MHz SPI时钟- 字节时间为1us,字节之间的时间为~7US,文字时间~170us;您可以在读取所有数据之前看到DRDY发生变化;
您可以找到随附的示波器屏幕捕获,显示 1kHz数据速率下的Miso,24MHz SPI时钟。 这些行是构成单词的20个字节,单词的传输持续时间为~170us。
我需要一个小于100us的字传输时间才能及时读取下一个示例。
读取通道数据时,该字有20个字节。 我可以使用24位字,获得5个字节,但这还不够。 24MHz是MSP432可以提供的最大SPI时钟,25MHz是ADC接受的最大SPI时钟。
这是我的配置:
#define ADS131A04_A_SYS_CFG_VALUE 0x60 #define ADS131A04_D_SYS_CFG_VALUE 0x3C #define ADS131A04_CLK1_VALUE 0x02 #define ADS131A04_CLK2_value 0x26 // 0x26用于10.24kHz数据速率,0x20用于1kHz数据速率#define ADS131A04_AD01A04_AD04_value 0x00#define ADS1301A04_AD04_A04_AD014_AD1A04_AD014_AD014_AD014_AD014_AD014_AD1A014_AD014_AD014_AD014_AD014_AD014_AD1A014_AD014_AD014_
如何才能更快地读取数据? 它是MSP432还是ADC的限制? 必须有一个解决方案,因为如果不能及时读取样本,提供更高的数据速率是毫无意义的。