|
发表于 2022-6-1 10:11:30
|
显示全部楼层
220531-RL-TCP+ADC+DAC里面的下面这段代码是TCP数据上传部分,发给网络助手。发送很快的,这个任务是ADC采集void AppTaskADC(void *argument)裸机中跑的很快的,但是移到系统中ADC就失效了,数据飘的厉害,而且还很慢
void TCPnetTest(void)
{
uint8_t tcplen;
uint8_t indx,tpi;
uint32_t tpk,tpl;
netStatus res;
const uint16_t usMaxBlockTime = 2; /* 延迟周期 */
uint32_t i;
float ADC_speed=1.0f*1000.0f*1000.0f;
float Signal_speed=13.0f*1000.0f;
float Va,Vb;
/* 初始化动态内存空间 */
osRtxMemoryInit(AppMallocAXISRAM, sizeof(AppMallocAXISRAM));
Build_matrixD( ADC_speed, Signal_speed, ADCDISNUMBER);
ADCFValues1 = osRtxMemoryAlloc(AppMallocAXISRAM, ADCDISNUMBER * sizeof( float ), 0);
if(ADCFValues1==NULL) printf("LMD_Ans build mem error/r/n");
ADCFValues2 = osRtxMemoryAlloc(AppMallocAXISRAM, ADCDISNUMBER * sizeof( float ), 0);
if(ADCFValues2==NULL) printf("LMD_Ans build mem error/r/n");
LVDT_DSP_init();
tcp_sock = netTCP_GetSocket (tcp_cb_client);
if (tcp_sock > 0)
{
/* 使能TCP_TYPE_KEEP_ALIVE,会一直保持连接 */
netTCP_SetOption (tcp_sock, netTCP_OptionKeepAlive, 1);
if(netTCP_GetState(tcp_sock) != netTCP_StateESTABLISHED)
{
res = netTCP_Connect (tcp_sock, (NET_ADDR *)&addr, LocalPort_NUM);
printf_debug("%s\r\n", ReVal_Table[res]);
}
}
bsp_ADC_Start(); /* 开启ADC */
while (1)
{
if(g_adc_conver_end)
{
Va=LVDT_A(ADCFValues1,ADCDISNUMBER);
Vb=LVDT_A(ADCFValues2,ADCDISNUMBER);
fDemoduResult=LVDT_Dis(Va,Vb);
// for (i = 0; i < ADCDISNUMBER; i++)
// {
// printf(" %f\r\n", ADCFValues1[i]);
// }
g_adc_conver_end=0;
bsp_SetADC(OVERSAMP_1);/* 设置ADC */
bsp_ADC_Start();/* 开启ADC */
//触发上传
if(EVmode)
{
EvtFlag = osThreadFlagsWait(0x0000000FU, osFlagsWaitAny, usMaxBlockTime);
/* 按键消息的处理 */
switch (EvtFlag)
{
/* 给远程TCP客户端发送8字节数据 */
case FLAG_BIT0:
tcplen=SingleSend(fDemoduResult,AckSendBuf);
if(netTCP_GetState(tcp_sock) == netTCP_StateESTABLISHED){
SendData(AckSendBuf,tcplen);
}
break;
/*给远程TCP客户端发送多字节打包数据 */
case FLAG_BIT1:
if(netTCP_GetState(tcp_sock) == netTCP_StateESTABLISHED)
{
for(tpi=0;tpi<indx;tpi++)
{
SendData(client_W_buf[tpi],SENDSIZE);
}
SendData(client_W_buf[indx],tpl);
}
for(tpk=0;tpk<TCPNUMSEND;tpk++)fWemoduResult[tpk]=0;
indx=0;
tpl=0;
break;
}
}
else//主动上传
{
// if(Send_Flag)
// {
tcplen=SingleSend(fDemoduResult,AckSendBuf);
if(netTCP_GetState(tcp_sock) == netTCP_StateESTABLISHED){
SendData(AckSendBuf,tcplen);
}
// Send_Flag=0;
// }
}
}
else ADC_Disp();
// osDelay(2);//延时ms级
}
}
|
|