工具/软件:Linux
你好,我是大学新生。 现在,我想通过使用Raspberry 3 B型和ADS1256 (www.waveshare.com/.../DA_Board)从 Geophone或加速计获取数据来进行数据采集。 我的基本要求是每秒获取7500个数据,并将其保存到SD卡中。 我使用的是与此链接共享的原始编码,并进行了一些修改。 
这是我的代码
int main()
{
uINT8_t id;
Int32_t ADC[8];
Int32_t volt[8];
uint8_t i;
uint8_t ch_num;
int32_t itEMP;
uint8_t buf[3];
如果(!BCM2835_init())
返回1;
BCM2835_SPI_BEGIN();
BCM2835_SPI_setBitOrder (BCM2835_SPI_bit_Order_LSBFIRST); //默认值
BCM2835_SPI_setDataMode (BCM2835_SPI_MODE1); //默认值
BCM2835_SPI_setClockDivider (BCM2835_SPI_Clock_diver_1024)1024);//默认值
BCM2835_GPIO Fsel (SPICS,BCM2835_GPIO _FSEL_OUTP);//
BCM2835_GPIO写入(SPICS,高);
BCM2835_GPIO Fsel (DRDY,BCM2835_GPIO _FSEL_INPT);
BCM2835_GPIO_SET_Pud (DRDY,BCM2835_GPIO PUD_UP);
ID = ADS1256_ReadChipID();
printf("\r\n");
printf("ID=\r\n");
if (id !=3)
{
printf("错误,ASD1256芯片ID = 0x%d\r\n",(int)id);
}
else
{
printf("确定,ASD1256芯片
ID,ADS556_gain =1256";ADS556_gid 1256_gid = f0%f56;12
ADS1256_StartScan(0);
ch_num = 4;
文件*pfile;
pfile=fopen("log//myfile.txt","w");
int nIndex =0;
Int32_t nValue=0;
while (nIndex<2.25万)
{
while ((ADS1256_Scan()== 0));
nValue = ADS1256_GetAdc (ch_num);
buf[0]=((UINT32_t)ADC[0]>> 16)和0xFF;
buf[1]=((UINT32_t) ADC[0]>> 8)和0xFF;
buf[2]=((UINT32_t)ADC[0]>> 0)和0xFF;
fprintf (pfile,"%d\t%ld \n",nIndex,nValue);
BSP_DelayUS(1);
printf ("%ld %ld\n",nIndex,nValue);
nIndex++;
}
fprintf (pfile,"test");
fclose (pfile);
BCM2835_SPI_END_();
BCM2835_close();
返回0;}
2.25万表示我要获得3秒的数据样本是7500。 我已经计时了运行时间。 当同时将数据写入文本文件时,完成调查需要花费26秒。
如果我不将数据写入文本文件,它需要花费7秒的时间才能完成,也就是说,1秒代码只能获得大约3000-4000个4000个数据。
我不知道原因是什么。 请告诉我如何操作。
提前感谢。