|
最近在搞基于STM32 V7开发板,使用双缓存的方法,通过Netx Duo实时发送ADS1278芯片实时采集的数据,目前可实现2通道10ksps的实时传输,8通道目前只能达到1.3ksps左右,问题就是数据处理+发送的时间比ad实时采集的慢;求大佬帮我出出主意,下面是数据处理+发送的程序:
static void AppTaskNetXPro(ULONG thread_input)
{
(void)thread_input;
uint32_t i;
NetX_Init(); /* 初始化NetX */
EXTI_Key_Config(); /* 初始化外部中断 */
bsp_InitADS1278(); /* 初始化ADS1278 */
while(1)
{
if(ADS1278_Pro_Flag)
{
if(SampleGroup_Flag == 0)
{
for(i = 0; i < Sample_NUM; i++)
{
itoa(sample_buf_1[i], Result, 10);
strcat((char *)sendbuf, Result);
if((i % 8) == 7)
{
strcat((char *)sendbuf,"\n");
}
else
{
strcat((char *)sendbuf,",");
}
}
/* 计算发送字符串长度 */
while(sendbuf[ADS1278_DataSize] != '\0')
{
ADS1278_DataSize++;
}
/* 通过协议栈发送数据 */
NetX_SendData();
/* 标志位,数组缓存,计数值清零 */
memset(sendbuf, 0, ADS1278_DataSize);
ADS1278_DataSize = 0;
/* 这个清零放最后一个 */
ADS1278_Pro_Flag = 0;
}
else
{
/* 目前一组发送数据不能超过128个样点 */
for(i = 0; i < Sample_NUM; i++)
{
itoa(sample_buf_2[i], Result, 10);
strcat((char *)sendbuf, Result);
if((i % 8) == 7)
{
strcat((char *)sendbuf,"\n");
}
else
{
strcat((char *)sendbuf,",");
}
}
/* 计算发送字符串长度 */
while(sendbuf[ADS1278_DataSize] != '\0')
{
ADS1278_DataSize++;
}
/* 通过协议栈发送数据 */
NetX_SendData();
/* 标志位,数组缓存,计数值清零 */
memset(sendbuf, 0, ADS1278_DataSize);
ADS1278_DataSize = 0;
/* 这个清零放最后一个 */
ADS1278_Pro_Flag = 0;
}
}
}
}
|
|