Commit ad0e6a3c by zhanggf

[Cyton] 500hz wifi debug ok.

Signed-off-by: zhanggf <zhanggf@example.com>
parent d272b692
Output/*
*.o
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
"esp8266.h": "c", "esp8266.h": "c",
"usart.h": "c", "usart.h": "c",
"cyton_process.h": "c", "cyton_process.h": "c",
"cyton_datapkg.h": "c" "cyton_datapkg.h": "c",
"ADS129x.C": "cpp",
"ADS129x.H": "cpp"
} }
} }
\ No newline at end of file
...@@ -30,7 +30,7 @@ _ADS129x_info ADS129x_info;//芯片结构 ...@@ -30,7 +30,7 @@ _ADS129x_info ADS129x_info;//芯片结构
#if ADS129X_DEVICE == ADS1299 #if ADS129X_DEVICE == ADS1299
u8 ADS129x_REG_BUF[ADS129X_REGNUM]={ //ads129x寄存器数组 u8 ADS129x_REG_BUF[ADS129X_REGNUM]={ //ads129x寄存器数组
0x3e,//ID ads1299 xx11 1110 0x3e,//ID ads1299 xx11 1110
0xD5,//CONFIG1 1101 0110 关CLK时钟输出 0Xn1 8KSPS 0Xn2 4K 0Xn3 2K 0Xn4 1K 0Xn5 500SPS 0Xn6 250SPS 0xD5,//CONFIG1 1101 0110 关CLK时钟输出 0Xn1 8KSPS 0XD2 4K 0XD3 2K 0XD4 1K 0XD5 500SPS 0XD6 250SPS
0xD0,//CONFIG2 1101 0000 方波幅值(VREFP–VREFN)/2400=±3.75mV 增益24 实际测到的电压±90mV 权值 4500000uV/8838606 = 0.537uV 0xD0,//CONFIG2 1101 0000 方波幅值(VREFP–VREFN)/2400=±3.75mV 增益24 实际测到的电压±90mV 权值 4500000uV/8838606 = 0.537uV
0xEC,//CONFIG3 1110 110x 开内部基准电压4.5V 开右腿驱动放大器, ,内部1/2vref基准,关闭右腿测量和右腿导联脱落检测 0xEC,//CONFIG3 1110 110x 开内部基准电压4.5V 开右腿驱动放大器, ,内部1/2vref基准,关闭右腿测量和右腿导联脱落检测
0x00,//LOFF //关闭导联脱落检测相关 0x00,//LOFF //关闭导联脱落检测相关
...@@ -215,9 +215,11 @@ void ADS129x_GPIO_Init(void) ...@@ -215,9 +215,11 @@ void ADS129x_GPIO_Init(void)
ADS129X_RST=1; //取消复位 ADS129X_RST=1; //取消复位
} }
int iIndex = 0;
void EXTI0_IRQHandler(void) void EXTI0_IRQHandler(void)
{ {
int iRet = -3;
if( EXTI->IMR&ADS129X_DRDY_LINE && ADS129X_DRDY==0)//数据接收中断 if( EXTI->IMR&ADS129X_DRDY_LINE && ADS129X_DRDY==0)//数据接收中断
{ {
//__disable_irq(); //__disable_irq();
...@@ -234,8 +236,9 @@ void EXTI0_IRQHandler(void) ...@@ -234,8 +236,9 @@ void EXTI0_IRQHandler(void)
} }
else if(work_state == SEND_WIFI ) else if(work_state == SEND_WIFI )
{ {
if(queue_data_push(WIFI_Info->WIFI_Queue ,ADS129x_info.ads129x_Cache+3 ,ADS129x_info.Ads129x_Data_Move,ADS129x_info.Ads129x_Write_Num))
{ iRet = queue_data_push(WIFI_Info->WIFI_Queue ,ADS129x_info.ads129x_Cache+3 ,ADS129x_info.Ads129x_Data_Move,ADS129x_info.Ads129x_Write_Num);
if(iRet) {
} }
} }
...@@ -247,6 +250,7 @@ void EXTI0_IRQHandler(void) ...@@ -247,6 +250,7 @@ void EXTI0_IRQHandler(void)
{ {
} }
///////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////
EXTI_ClearITPendingBit(ADS129X_DRDY_LINE); //清除LINE上的中断标志位 EXTI_ClearITPendingBit(ADS129X_DRDY_LINE); //清除LINE上的中断标志位
//__enable_irq(); //__enable_irq();
...@@ -404,11 +408,24 @@ u8 ADS129x_REG_Init(void) ...@@ -404,11 +408,24 @@ u8 ADS129x_REG_Init(void)
} }
static g_szADS129x_Hz[ADS129X_CMD_UNKNOWN] = {
//0XD1 8KSPS 0XD2 4K 0XD3 2K 0XD4 1K 0XD5 500SPS 0XD6 250SPS
0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0XD1
};
static uint8_t aDS129x_getHz(int iHz)
{
if (iHz >= ADS129X_CMD_UNKNOWN) {
iHz = ADS129X_CMD_8000HZ;
}
return g_szADS129x_Hz[iHz];
}
//初始化 //初始化
//输入cmd: 0蓝牙或串口发送 / 1 wifi发送/ 2 TF卡存储 //输入cmd: 0蓝牙或串口发送 / 1 wifi发送/ 2 TF卡存储
void ADS129x_ReInit(u8 cmd) void ADS129x_ReInit(u8 cmd, int iHz)
{ {
u8 res; u8 res;
u8 RL_temp=0; u8 RL_temp=0;
...@@ -422,6 +439,13 @@ void ADS129x_ReInit(u8 cmd) ...@@ -422,6 +439,13 @@ void ADS129x_ReInit(u8 cmd)
ADS129x_REG_BUF[13] = RL_temp; //设置右腿驱动 ADS129x_REG_BUF[13] = RL_temp; //设置右腿驱动
ADS129x_REG_BUF[14] = RL_temp; ADS129x_REG_BUF[14] = RL_temp;
//初始化129X
#if ADS129X_DEVICE == ADS1299
ADS129x_REG_BUF[1]= aDS129x_getHz(iHz); //1000采样率
#elif ADS129X_DEVICE == ADS1298
ADS129x_REG_BUF[1]=0x85; //1000采样率
#endif
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
while(ADS129x_REG_Init())//初始化寄存器 while(ADS129x_REG_Init())//初始化寄存器
{ {
...@@ -455,10 +479,14 @@ void ADS129x_ReInit(u8 cmd) ...@@ -455,10 +479,14 @@ void ADS129x_ReInit(u8 cmd)
//ADS129x_info.Ads129x_Write_Num = SD_QUEUE_LENGTH/ADS129x_info.Ads129x_Data_Move ; //搬运N次做一个包 //ADS129x_info.Ads129x_Write_Num = SD_QUEUE_LENGTH/ADS129x_info.Ads129x_Data_Move ; //搬运N次做一个包
//Main_printf("搬运 %d 次做一个包\r\n",ADS129x_info.Ads129x_Write_Num); //Main_printf("搬运 %d 次做一个包\r\n",ADS129x_info.Ads129x_Write_Num);
} }
}
EXTI->IMR |= ADS129X_DRDY_LINE;//开DRDY中断
}
void ADS129x_Stop()
{
ADS129x_Send_CMD(ADS129X_STOP);
}
/*功能:把采到的3个字节转成有符号32位数 */ /*功能:把采到的3个字节转成有符号32位数 */
s32 get_volt(u32 num) s32 get_volt(u32 num)
......
...@@ -103,9 +103,20 @@ extern u8 ADS129x_REG_BUF[ADS129X_REGNUM];//ads1299寄存器数组 ...@@ -103,9 +103,20 @@ extern u8 ADS129x_REG_BUF[ADS129X_REGNUM];//ads1299寄存器数组
///////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////
s32 get_volt(u32 num);//把采到的3个字节转成有符号32位数 s32 get_volt(u32 num);//把采到的3个字节转成有符号32位数
typedef enum tagAds129x_Cmd_Hz {
ADS129X_CMD_250HZ = 0,
ADS129X_CMD_500HZ,
ADS129X_CMD_1000HZ,
ADS129X_CMD_2000HZ,
ADS129X_CMD_4000HZ,
ADS129X_CMD_8000HZ,
ADS129X_CMD_UNKNOWN,
} ADS129X_CMD_HZ_E;
void ADS129x_GPIO_Init(void); //初始化ADS1292引脚 void ADS129x_GPIO_Init(void); //初始化ADS1292引脚
void ADS129x_ReInit(u8 cmd);//重复初始化 void ADS129x_ReInit(u8 cmd, int iHz);//重复初始化
u8 ADS129x_SPI_ReadWriteByte(u8 com); //SPI通信 u8 ADS129x_SPI_ReadWriteByte(u8 com); //SPI通信
void ADS129x_Stop();
__INLINE void ADS129x_Read_Data(void);//72M时钟下函数耗时大约10us 8M时钟下 函数耗时大约 100us __INLINE void ADS129x_Read_Data(void);//72M时钟下函数耗时大约10us 8M时钟下 函数耗时大约 100us
......
...@@ -264,6 +264,11 @@ int CytonEsp12_StreamStat() ...@@ -264,6 +264,11 @@ int CytonEsp12_StreamStat()
return g_stCytron_DevSeting.aucStreamStat; return g_stCytron_DevSeting.aucStreamStat;
} }
void CytonEsp12_SetStreamStat(int iStat)
{
g_stCytron_DevSeting.aucStreamStat = iStat;
}
int CytonEsp12_GetCurrentRate() int CytonEsp12_GetCurrentRate()
{ {
int iRate = g_stCytron_DevSeting.aucRate; int iRate = g_stCytron_DevSeting.aucRate;
......
...@@ -30,5 +30,6 @@ void Ctron_Esp12Data_Send(int iFd, uint8_t *szData, int iLen, int iClose); ...@@ -30,5 +30,6 @@ void Ctron_Esp12Data_Send(int iFd, uint8_t *szData, int iLen, int iClose);
int CytonEsp12_DataGetReportFd(); int CytonEsp12_DataGetReportFd();
int CytonEsp12_StreamStat(); int CytonEsp12_StreamStat();
int CytonEsp12_GetCurrentRate(); int CytonEsp12_GetCurrentRate();
void CytonEsp12_SetStreamStat(int iStat);
#endif #endif
...@@ -12,7 +12,10 @@ ...@@ -12,7 +12,10 @@
#include "myQueue.h" #include "myQueue.h"
#define CYTON_COLLECTOR_DATA_CACHE_LEN (4096) #define CYTON_COLLECTOR_DATA_CACHE_LEN (123)
static int g_iTimerindex = 0;
static int g_iTotalLen = 0;
typedef struct stCyton_DataCacheInfo { typedef struct stCyton_DataCacheInfo {
uint8_t DataCache[CYTON_COLLECTOR_DATA_CACHE_LEN + 1]; uint8_t DataCache[CYTON_COLLECTOR_DATA_CACHE_LEN + 1];
...@@ -69,6 +72,7 @@ void CytonProcess_TimerCollCB(int iTIndex) ...@@ -69,6 +72,7 @@ void CytonProcess_TimerCollCB(int iTIndex)
{ {
int iRet = 0; int iRet = 0;
uint32_t puiChannel[8]; uint32_t puiChannel[8];
g_iTimerindex = iTIndex;
//ESP8266_DEBUG("CytonProcess_TimerCollCB %d\n", iTIndex); //ESP8266_DEBUG("CytonProcess_TimerCollCB %d\n", iTIndex);
iRet = Cyton_DataFormat2Package(&g_stCyton_DataCache.DataCache[g_stCyton_DataCache.iWriteIndex], puiChannel, CYTON_DATA_PKG_CHANNEL8); iRet = Cyton_DataFormat2Package(&g_stCyton_DataCache.DataCache[g_stCyton_DataCache.iWriteIndex], puiChannel, CYTON_DATA_PKG_CHANNEL8);
...@@ -107,13 +111,18 @@ void CytonProcess_Loop() ...@@ -107,13 +111,18 @@ void CytonProcess_Loop()
iFd = CytonEsp12_DataGetReportFd(); iFd = CytonEsp12_DataGetReportFd();
iStreamStat = CytonEsp12_StreamStat(); iStreamStat = CytonEsp12_StreamStat();
if (iFd >= 0 && iStreamStat) { if (iStreamStat) {
pszSendBuf = cyton_getUnsendData(&iSendBufLen); pszSendBuf = cyton_getUnsendData(&iSendBufLen);
if (NULL != pszSendBuf) { if (NULL != pszSendBuf) {
ESP8266_DEBUG("Start Report Data %d\n", iSendBufLen); g_iTotalLen += iSendBufLen;
Ctron_Esp12Data_Send(iFd, pszSendBuf, iSendBufLen, 0); ESP8266_SendData(pszSendBuf, iSendBufLen);
ESP8266_DEBUG("Start Report Data End\n"); // ESP8266_SendData(iFd, pszSendBuf, iSendBufLen, 0);
ESP8266_DEBUG("Start Report Data iSendBufLen %d\n", iSendBufLen);
cyton_setSendDataDone(iSendBufLen); cyton_setSendDataDone(iSendBufLen);
} }
if (g_iTimerindex % 1000 == 0) {
ESP8266_DEBUG("Start Report total %d\n", g_iTotalLen);
}
} }
} }
\ No newline at end of file
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cyton_cmd_pub.h"
#include "cJSON.h"
#ifdef ESP_8266
typedef struct stCytron_DevSeting {
unsigned char aucRate;
unsigned char aucStreamStat;
} CYTON_DEVSETING_T;
static CYTON_DEVSETING_T g_stCytron_DevSeting;
static int g_iOpenguiPort = -1;
static char g_szOpenguiIP[16] = {0};
static char g_szCmdBuf[64] = {0};
#define toNet32(A) ((( (unsigned int)(A) & 0xff000000) >> 24) | \
(( (unsigned int)(A) & 0x00ff0000) >> 8) | \
(( (unsigned int)(A) & 0x0000ff00) << 8) | \
(( (unsigned int)(A) & 0x000000ff) << 24))
static int Ctron_atoi(char *szData, int iLen)
{
//0,11:123456711
unsigned char szTmp[4] = {0};
if (iLen > 4) {
return -1;
}
strncpy((char *)szTmp, (char *)szData, iLen);
return atoi((char *)szTmp);
}
int Cyton_GetCurrentRate(int iRate)
{
int iRet = 1000;
switch(iRate) {
case 0:
iRet = 16000;
break;
case 1:
iRet = 8000;
break;
case 2:
iRet = 4000;
break;
case 3:
iRet = 2000;
break;
case 4:
iRet = 1000;
break;
case 5:
iRet = 500;
case 6:
iRet = 250;
break;
default:
break;
}
return iRet;
}
/*
A = 5MIN
S = 15MIN
F = 30MIN
G = 1HR
H = 2HR
J = 4HR
K = 12HR
L = 24HR
*/
static int ctron_GetRate(char *szData, int iLen)
{
char *pszIndex = NULL;
int iRate = 0;
int iRateHz = 0;
int iSDSec = -1;
pszIndex = strstr((char *)szData, "~");
if (NULL != pszIndex) {
iRate = Ctron_atoi(pszIndex + 1, 1);
iRateHz = Cyton_GetCurrentRate(iRate);
return CytonCmd_Pkg(CYTON_CMD_HZ, iRateHz, 0);
} else {
switch (*szData) {
case 'A':
iSDSec = 60 * 5;
break;
case 'S':
iSDSec = 60 * 15;
break;
case 'F':
iSDSec = 60 * 30;
break;
case 'G':
iSDSec = 60 * 60;
break;
case 'H':
iSDSec = 60 * 60 *2;
break;
case 'J':
iSDSec = 60 * 60 * 4;
break;
case 'K':
iSDSec = 60 * 60 * 12;
break;
case 'L':
iSDSec = 60 * 60 * 24;
break;
}
if (iSDSec > 0) {
return CytonCmd_Pkg(CYTON_CMD_SD, iSDSec, 0);
}
}
return -1;
}
int CytonCmd_PraseTcpJson(char *szData, int iLen)
{
//{"connected":true,"delimiter":true,"ip":"192.168.4.2","output":"raw","port":6677,"latency":10000}
cJSON *cjson_data;
cJSON *cjson_str;
int iRet = -1;
char *pszIndex = 0;
pszIndex = strstr((const char *)szData, "{");
if (NULL == pszIndex) {
printf("\r\ntcp json prase failed1111111111: %s\n", szData);
return -1;
}
cjson_data = cJSON_Parse(pszIndex);
if (cjson_data) {
cjson_str = cJSON_GetObjectItem(cjson_data,"ip");
if (cjson_str) {
sprintf(g_szOpenguiIP, "%s", cjson_str->valuestring);
printf("TCP Json g_szOpenguiIP %s\n", g_szOpenguiIP);
}
cjson_str = cJSON_GetObjectItem(cjson_data,"port");
if (cjson_str) {
g_iOpenguiPort = cjson_str->valueint;
printf("TCP Json g_iOpenguiPort %d\n", g_iOpenguiPort);
}
cjson_str = cJSON_GetObjectItem(cjson_data,"command");
if (cjson_str) {
iRet = ctron_GetRate(cjson_str->valuestring, strlen(cjson_str->valuestring));
if (iRet >= 0) {
g_stCytron_DevSeting.aucRate = iRet;
printf("TCP Json g_stCytron_DevSeting.aucRate %d\n", g_stCytron_DevSeting.aucRate);
}
}
printf("Test111");
cJSON_Delete(cjson_data);
printf("Test222");
return 0;
}
return -1;
}
int CytonCmd_Pkg(unsigned int uiCmd, unsigned int uiParam1, unsigned int uiParam2)
{
CYTON_CMD_INFO_T *pstInfo= (CYTON_CMD_INFO_T *)g_szCmdBuf;
pstInfo->uiHead = toNet32(CYTON_CMD_HEAD);
pstInfo->iType = toNet32(uiCmd);
pstInfo->uiParam1 = toNet32(uiParam1);
pstInfo->uiParam2 = toNet32(uiParam2);
return sizeof(CYTON_CMD_INFO_T);
}
char *CytonCmd_GetServerIp()
{
return g_szOpenguiIP;
}
int CytonCmd_GetServerPort()
{
return g_iOpenguiPort;
}
char *CytonCmd_PkgData(int *iLen)
{
*iLen = sizeof(CYTON_CMD_INFO_T);
return g_szCmdBuf;
}
#endif
\ No newline at end of file
#ifndef __CYTON_CMD_PUB_H
#define __CYTON_CMD_PUB_H
#define CYTON_CMD_HEAD (0xfffffffe)
typedef enum tagCytonCmd_Type {
CYTON_CMD_START = 0,
CYTON_CMD_STOP,
CYTON_CMD_HZ,
CYTON_CMD_SD,
CYTON_CMD_UNKNOW, /* -5 Read data error */
} CYTON_CMD_TYPE_E;
#pragma pack(push)
#pragma pack(1)
typedef struct stCytonCmd_Head{
unsigned int uiHead;
unsigned int iType;
unsigned int uiParam1;
unsigned int uiParam2;
} CYTON_CMD_INFO_T;
#pragma pack(pop)
int CytonCmd_Pkg(unsigned int uiCmd, unsigned int uiParam1, unsigned int uiParam2);
int CytonCmd_PraseTcpJson(char *szData, int iLen);
char *CytonCmd_GetServerIp();
int CytonCmd_GetServerPort();
char *CytonCmd_PkgData(int *iLen);
#endif
\ No newline at end of file
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "Cyton_Esp12Data.h" #include "Cyton_Esp12Data.h"
#include "myQueue.h" #include "myQueue.h"
#include "cyton_cmd_pub.h"
...@@ -28,17 +29,17 @@ u8 Wifi_Sendbuf_Init(void) ...@@ -28,17 +29,17 @@ u8 Wifi_Sendbuf_Init(void)
{ {
u16 i; u16 i;
WIFI_Info->datalength = (ADS129X_USE_CANNLE+1)*4 +3;//一次采样要发送的数据长度 39 WIFI_Info->datalength = ADS129X_USE_CANNLE * 3 + 9;//一次采样要发送的数据长度 39
memset(WIFI_Info->sendbuf,0,WIFI_SEND_LENGTH);//清零 memset(WIFI_Info->sendbuf, 0, WIFI_SEND_LENGTH);//清零
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//匿名上位机协议 //匿名上位机协议
for(i=0;i<ADS129x_info.Ads129x_Write_Num;i++) //一包N次采样 for(i=0;i<ADS129x_info.Ads129x_Write_Num;i++) //一包N次采样
{ {
//帧头 //帧头
WIFI_Info->sendbuf[0 + WIFI_Info->datalength*i] = 0xAA; WIFI_Info->sendbuf[0 + WIFI_Info->datalength*i] = 0xA0;
WIFI_Info->sendbuf[1 + WIFI_Info->datalength*i] = 0xFF; //WIFI_Info->sendbuf[1 + WIFI_Info->datalength*i] = 0xFF;
WIFI_Info->sendbuf[2 + WIFI_Info->datalength*i] = 0xF1; //WIFI_Info->sendbuf[2 + WIFI_Info->datalength*i] = 0xF1;
WIFI_Info->sendbuf[3 + WIFI_Info->datalength*i] = ADS129X_USE_CANNLE*4 +1; //有效数据长度 32 +1 = 33 //WIFI_Info->sendbuf[3 + WIFI_Info->datalength*i] = ADS129X_USE_CANNLE*4 +1; //有效数据长度 32 +1 = 33
} }
...@@ -272,37 +273,66 @@ void ESP8266_out_Cmd(void) ...@@ -272,37 +273,66 @@ void ESP8266_out_Cmd(void)
void ESP8266_Config_Http_connectTcp(void); void ESP8266_Config_Http_connectTcp(void);
void ESP8266_Init(void) #define toNet32(A) ((( (unsigned int)(A) & 0xff000000) >> 24)|(( (unsigned int)(A) & 0x00ff0000) >> 8)|(( (unsigned int)(A) & 0x0000ff00) << 8)|(( (unsigned int)(A) & 0x000000ff) << 24))
int g_iHz = 0;
void Cyton_UartPraseLoop()
{ {
//ESP8266_PWOEROFF; //ESP8266_RX_BUF, ESP8266_RX_LEN,//
//delay_ms(200); CYTON_CMD_INFO_T *pstCmdInfo = NULL;
ESP8266_PWOERON; char *pszIndex = ESP8266_RX_BUF;
delay_s(2); int iLen = ESP8266_RX_LEN;
while (iLen > 0) {
if (iLen >= sizeof(CYTON_CMD_INFO_T)) {
pstCmdInfo = (CYTON_CMD_INFO_T *) pszIndex;
if (CYTON_CMD_HEAD == toNet32(pstCmdInfo->uiHead)) {
ESP8266_DEBUG("Fine cmd %08x\r\n", toNet32(pstCmdInfo->iType));
ESP8266_DEBUG("Fine p1 %08x\r\n", toNet32(pstCmdInfo->uiParam1));
ESP8266_DEBUG("Fine p2 %08x\r\n", toNet32(pstCmdInfo->uiParam2));
if (toNet32(pstCmdInfo->iType) == CYTON_CMD_HZ) {
g_iHz = toNet32(pstCmdInfo->uiParam1);
ESP8266_DEBUG("g_iHz %d\r\n", g_iHz);
} else if (toNet32(pstCmdInfo->iType) == CYTON_CMD_START) {
ESP8266_DEBUG("Start collector %d Hz\r\n", g_iHz);
//CytonProcess_TimerCollStart(g_iHz);
ADS129x_ReInit(1, 1);
CytonEsp12_SetStreamStat(1);
} else if (toNet32(pstCmdInfo->iType) == CYTON_CMD_STOP) {
ESP8266_DEBUG("Stop collector\r\n");
CytonEsp12_SetStreamStat(0);
ADS129x_Stop();
//CytonProcess_TimerCollStop();
}
ESP8266_CLEAR();
}
} else {
break;
}
// ESP8266_RST=0; pszIndex ++;
// delay_ms(500); iLen --;
// ESP8266_RST=1; }
// delay_ms(500);
//ESP8266_CLEAR();
}
void ESP8266_Init(void)
{
ESP8266_PWOERON;
delay_s(2);
ESP8266_DEBUG("进入AT指令模式1111\r\n"); ESP8266_DEBUG("进入AT指令模式1111\r\n");
ESP8266_DEBUG("默认波特率 %d\r\n",ESP_BAUD); ESP8266_DEBUG("默认波特率 %d\r\n",ESP_BAUD);
ESP8266_uart_init(ESP_BAUD); ESP8266_uart_init(ESP_BAUD);
ESP8266_SendCmd("+++", "OK", 1200);//退出透传 delay_s(2);
if(ESP8266_SendCmd(AT, "OK", 500) >= 0) //模块有效性检查
{
ESP8266_DEBUG("WIFI初始化成功\r\n");
ESP8266_SendCmd(RST, "OK", 500) ;//复位
USART_ITConfig(ESP8266_UART, USART_IT_RXNE, DISABLE);//串口接收中断
//return;
}
else
{
ESP8266_DEBUG("无响应,按照默认参数设置\r\n");
ESP8266_Config();//设置WIFI
}
ESP8266_Config_Http_connectTcp(); //while (0) {
//Cyton_UartPraseLoop();
//CytonProcess_Loop();
//delay_ms(2);
//}
} }
//串口配网 //串口配网
......
...@@ -25,9 +25,9 @@ ...@@ -25,9 +25,9 @@
#define ADS129x_WIFI_REC_EN 0 //WiFi接收使能 #define ADS129x_WIFI_REC_EN 0 //WiFi接收使能
#define WIFI_REC_LENGTH 1460 //接收缓冲区 #define WIFI_REC_LENGTH 1460 //接收缓冲区
//匿名上位机 //匿名上位机
#define WIFI_SEND_LENGTH 1443 //发送缓冲区 一帧数据长度39一帧`次采样 39*37=1444 #define WIFI_SEND_LENGTH 330 //发送缓冲区 一帧数据长度39一帧`次采样 33*10 99 39*37=1444
#define WIFI_QUEUE_LENGTH 888 //(队列容量)缓冲区有效数据长度24*37=888 #define WIFI_QUEUE_LENGTH (240) //(队列容量)缓冲区有效数据长度24*3=72 24*37 888
#define WIFI_QUEUE_SIZE 10 //队列大小 #define WIFI_QUEUE_SIZE 20 //队列大小
///////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////
//发送数据格式 //发送数据格式
typedef struct { typedef struct {
...@@ -60,7 +60,7 @@ extern _WIFI_Info *WIFI_Info ; //上传数据结构 ...@@ -60,7 +60,7 @@ extern _WIFI_Info *WIFI_Info ; //上传数据结构
////#define ESP_USARTDEF "AT+UART_DEF=460800,8,1,0,0\r\n" //修改波特率 无流控 保存到flash ////#define ESP_USARTDEF "AT+UART_DEF=460800,8,1,0,0\r\n" //修改波特率 无流控 保存到flash
//#define ESP_USARTDEF "AT+UART_DEF=460800,8,1,0,1\r\n" //修改波特率 使能RTS流控 保存到flash //#define ESP_USARTDEF "AT+UART_DEF=460800,8,1,0,1\r\n" //修改波特率 使能RTS流控 保存到flash
#define ESP_BAUD 921600 //波特率 #define ESP_BAUD (460800) //(460800) //921600 //波特率
//#define ESP_USARTDEF "AT+UART_DEF=921600,8,1,0,0\r\n" //修改波特率 无流控 保存到flash //#define ESP_USARTDEF "AT+UART_DEF=921600,8,1,0,0\r\n" //修改波特率 无流控 保存到flash
#define ESP_USARTDEF "AT+UART_DEF=921600,8,1,0,1\r\n" //修改波特率 使能RTS流控 保存到flash #define ESP_USARTDEF "AT+UART_DEF=921600,8,1,0,1\r\n" //修改波特率 使能RTS流控 保存到flash
......
...@@ -127,8 +127,8 @@ void UART2_DMA_TX_NVIC_Config(u8 cmd) ...@@ -127,8 +127,8 @@ void UART2_DMA_TX_NVIC_Config(u8 cmd)
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel=DMA1_Channel7_IRQn; NVIC_InitStructure.NVIC_IRQChannel=DMA1_Channel7_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; //抢占优先级 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //子优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; //子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure); NVIC_Init(&NVIC_InitStructure);
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
//内存参数设定. //内存参数设定.
#define MEM_BLOCK_SIZE 32 //内存块大小为32字节 #define MEM_BLOCK_SIZE 32 //内存块大小为32字节
#define MEM_MAX_SIZE 4*1024 //最大管理内存 #define MEM_MAX_SIZE 12*1024 //最大管理内存
#define MEM_ALLOC_TABLE_SIZE MEM_MAX_SIZE/MEM_BLOCK_SIZE //内存表大小 #define MEM_ALLOC_TABLE_SIZE MEM_MAX_SIZE/MEM_BLOCK_SIZE //内存表大小
......
...@@ -175,14 +175,18 @@ void USART2_IRQHandler(void) ...@@ -175,14 +175,18 @@ void USART2_IRQHandler(void)
u8 Res; u8 Res;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{ {
USART2_TIME=0; // USART2_TIME=0;
Res = USART_ReceiveData(USART2); //读取接收到的数据 Res = USART_ReceiveData(USART2); //读取接收到的数据
USART2_RX_BUF[USART2_RX_LEN] = Res; USART2_RX_BUF[USART2_RX_LEN] = Res;
USART2_RX_LEN++; USART2_RX_LEN++;
if(USART2_RX_LEN == USART_REC_LEN) if(USART2_RX_LEN >= USART_REC_LEN) {
USART2_RX_LEN=0; USART2_RX_LEN=0;
} }
} else {
Res = USART_ReceiveData(USART2);
printf("USART2_RX_ERR\n\n");
}
} }
......
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
ER_IROM1 0x08000000 0x00010000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00005000 { ; RW data
.ANY (+RW +ZI)
}
}
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
ER_IROM1 0x08000000 0x00010000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x00005000 { ; RW data
.ANY (+RW +ZI)
}
}
...@@ -933,7 +933,7 @@ ...@@ -933,7 +933,7 @@
<Group> <Group>
<GroupName>CYTON</GroupName> <GroupName>CYTON</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
...@@ -1002,6 +1002,19 @@ ...@@ -1002,6 +1002,19 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>0</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Cyton\cyton_cmd_pub.c</PathWithFileName>
<FilenameWithoutPath>cyton_cmd_pub.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
...@@ -1012,7 +1025,7 @@ ...@@ -1012,7 +1025,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>55</FileNumber> <FileNumber>56</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<Focus>0</Focus> <Focus>0</Focus>
......
...@@ -848,6 +848,11 @@ ...@@ -848,6 +848,11 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\Cyton\Cyton_Process.c</FilePath> <FilePath>..\Cyton\Cyton_Process.c</FilePath>
</File> </File>
<File>
<FileName>cyton_cmd_pub.c</FileName>
<FileType>1</FileType>
<FilePath>..\Cyton\cyton_cmd_pub.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
......
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
//main //main
int main(void) int main(void)
{ {
work_state=SEND_BULE; work_state = SEND_WIFI;
//work_state=SEND_WIFI; //work_state=SEND_WIFI;
//work_state=SEND_UART; //work_state=SEND_UART;
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
...@@ -109,42 +109,46 @@ int main(void) ...@@ -109,42 +109,46 @@ int main(void)
//初始化系统时钟 72M //初始化系统时钟 72M
SystemInit(); SystemInit();
delay_init(); delay_init();
// uart3_init(115200);
// while(1) {
// Main_printf("Test\r\n");
// delay_ms(1000);
// }
LED_Init(); LED_Init();
KEY_Init(); //初始化按键 KEY_Init(); //初始化按键
KE_IO_Init(); //拨码开关 KE_IO_Init(); //拨码开关
ADS129x_GPIO_Init();//初始化ADS129X外设 ADS129x_GPIO_Init();//初始化ADS129X外设
HCO5_IO_Init(); //关蓝牙电源 HCO5_IO_Init(); //关蓝牙电源
ESP8266_IO_Init();//关WIFI电源 ESP8266_IO_Init();//关WIFI电源
//ESP8266_PWOERON; ESP8266_PWOERON;
uart1_init(921600);//串口初始化
//while (1);
uart1_init(460800);//串口初始化
Main_printf("上电\r\n");
//while(Power_ON());//按键开机检测 //while(Power_ON());//按键开机检测
Main_printf("开机\r\n"); Main_printf("Turn on\r\n");
Main_printf("版本 STM32F103C8 V2.5.2 适配匿名V7上位机 适配ADS1299 V2.2 2022-04-20\r\n"); Main_printf("Version STM32F103C8 V2.5.2 ADS1299 V2.2 2022-05-20\r\n");
Main_printf("当前芯片选择 %d\r\n",ADS129X_DEVICE); Main_printf("Current ads129x device id %d\r\n",ADS129X_DEVICE);
delay_ms(200); delay_ms(200);
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
TIM2_Init(500,7200); //按键检测+按键消抖 TIM2_Init(500,7200); //按键检测+按键消抖
TIM4_Init(10000,7200); //系统指示灯 TIM4_Init(10000,7200); //系统指示灯
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
Main_printf("ADC 初始化\r\n"); Main_printf("ADC Init\r\n");
adc1_init(); adc1_init();
ADC_DMA_Config(ADCConvertedValue,1); ADC_DMA_Config(ADCConvertedValue,1);
ADC_DMA_Enable(); ADC_DMA_Enable();
Main_printf("开启 DMA ADC\r\n"); Main_printf("Enable DMA ADC\r\n");
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
//初始化串口结构 //初始化串口结构
UART_Info =(_UART_Info*)mymalloc(sizeof(_UART_Info)); //数据结构 UART_Info =(_UART_Info*)mymalloc(sizeof(_UART_Info)); //数据结构
UART_Info->sendbuf = (u8*)mymalloc(UART_SEND_LENGTH); //发送缓冲区 UART_Info->sendbuf = (u8*)mymalloc(UART_SEND_LENGTH); //发送缓冲区
if(UART_Info == NULL || UART_Info->sendbuf == NULL ) if(UART_Info == NULL || UART_Info->sendbuf == NULL )
{ {
Main_printf("内存申请失败\r\n"); Main_printf("Memery malloc failed\r\n");
} }
else else
{ {
Main_printf("内存申请成功,当前占用 %d\r\n",mem_perused()); Main_printf("Memery malloc success,used %d\r\n",mem_perused());
} }
///////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////
while(1) while(1)
...@@ -175,7 +179,7 @@ void Send_BlueTooth(void) ...@@ -175,7 +179,7 @@ void Send_BlueTooth(void)
#elif ADS129X_DEVICE == ADS1298 #elif ADS129X_DEVICE == ADS1298
ADS129x_REG_BUF[1]=0x86; //500采样率 ADS129x_REG_BUF[1]=0x86; //500采样率
#endif #endif
ADS129x_ReInit(0);//初始化1299 ADS129x_ReInit(0, 0);//初始化1299
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
Main_printf("申请串口缓存,内存当前占用 %d\r\n",mem_perused()); Main_printf("申请串口缓存,内存当前占用 %d\r\n",mem_perused());
UART_Info->sendbuf = (u8*)mymalloc(UART_SEND_LENGTH); //发送缓冲区 UART_Info->sendbuf = (u8*)mymalloc(UART_SEND_LENGTH); //发送缓冲区
...@@ -309,7 +313,7 @@ void Send_UART1(void) ...@@ -309,7 +313,7 @@ void Send_UART1(void)
#elif ADS129X_DEVICE == ADS1298 #elif ADS129X_DEVICE == ADS1298
ADS129x_REG_BUF[1]=0x86; //500采样率 ADS129x_REG_BUF[1]=0x86; //500采样率
#endif #endif
ADS129x_ReInit(0);//初始化1299 ADS129x_ReInit(0, 0);//初始化1299
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
Main_printf("申请串口缓存,内存当前占用 %d\r\n",mem_perused()); Main_printf("申请串口缓存,内存当前占用 %d\r\n",mem_perused());
UART_Info->sendbuf = (u8*)mymalloc(UART_SEND_LENGTH); //发送缓冲区 UART_Info->sendbuf = (u8*)mymalloc(UART_SEND_LENGTH); //发送缓冲区
...@@ -413,7 +417,7 @@ void TEST_ESP8266(void) ...@@ -413,7 +417,7 @@ void TEST_ESP8266(void)
#elif ADS129X_DEVICE == ADS1298 #elif ADS129X_DEVICE == ADS1298
ADS129x_REG_BUF[1]=0x85; //1000采样率 ADS129x_REG_BUF[1]=0x85; //1000采样率
#endif #endif
ADS129x_ReInit(1);//初始化1299 ADS129x_ReInit(1, 0);//初始化1299
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
Main_printf("内存当前占用 %d\r\n",mem_perused()); Main_printf("内存当前占用 %d\r\n",mem_perused());
WIFI_Info =(_WIFI_Info*)mymalloc(sizeof(_WIFI_Info)); //数据结构 WIFI_Info =(_WIFI_Info*)mymalloc(sizeof(_WIFI_Info)); //数据结构
...@@ -509,6 +513,48 @@ void TEST_ESP8266(void) ...@@ -509,6 +513,48 @@ void TEST_ESP8266(void)
} }
uint8_t g_aucSendIndexData = 0;
int iDebug = 0;
void testLoop() {
static int Total = 0;
char szBuff[330] = {0};
int i=0;
int iCnt = 1000;
for (; i< 330; i++) {
*((uint8_t *)(WIFI_Info->sendbuf + i)) = i;
}
delay_s(5);
Main_printf("Start Send test Data\r\n");
while (iCnt > 0) {
if(UART2_DMA_Finish==1)
{
delay_ms(4);
DMA_Enable(DMA1_Channel7,330);//开启DMA
Total ++;
UART2_DMA_Finish=0;
iCnt --;
}
//ESP8266_SendData(WIFI_Info->sendbuf, 330);
delay_us(10);
if (Total % 100 == 0) {
delay_ms(10);
Main_printf("Start Send %d \r\n", Total);
}
}
Main_printf("Start Send %d\r\n", Total * 330);
while(1) {
}
}
//WIFI发送 采样率最大2K //WIFI发送 采样率最大2K
void Send_ESP8266(void) void Send_ESP8266(void)
{ {
...@@ -519,44 +565,21 @@ void Send_ESP8266(void) ...@@ -519,44 +565,21 @@ void Send_ESP8266(void)
Main_printf("WIFI发送\r\n"); Main_printf("WIFI发送\r\n");
TIM_Cmd(TIM4, DISABLE); TIM_Cmd(TIM4, DISABLE);
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
//初始化129X //ADS129x_ReInit(1, 2);//初始化1299
#if ADS129X_DEVICE == ADS1299
ADS129x_REG_BUF[1]=0xD4; //1000采样率
#elif ADS129X_DEVICE == ADS1298
ADS129x_REG_BUF[1]=0x85; //1000采样率
#endif
ADS129x_ReInit(1);//初始化1299
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
Main_printf("内存当前占用 %d\r\n",mem_perused()); Main_printf("Memery Current %d\r\n",mem_perused());
WIFI_Info =(_WIFI_Info*)mymalloc(sizeof(_WIFI_Info)); //数据结构 WIFI_Info =(_WIFI_Info*)mymalloc(sizeof(_WIFI_Info)); //数据结构
WIFI_Info->sendbuf = (u8*)mymalloc(WIFI_SEND_LENGTH); //WIFI发送缓冲区 WIFI_Info->sendbuf = (u8*)mymalloc(1024); //WIFI发送缓冲区
WIFI_Info->WIFI_Queue = queue_init(WIFI_QUEUE_SIZE,WIFI_QUEUE_LENGTH) ;//循环队列初始化 WIFI_Info->WIFI_Queue = queue_init(WIFI_QUEUE_SIZE,WIFI_QUEUE_LENGTH) ;//循环队列初始化
if(WIFI_Info == NULL || WIFI_Info->sendbuf == NULL || WIFI_Info->WIFI_Queue == NULL) if(WIFI_Info == NULL || WIFI_Info->sendbuf == NULL || WIFI_Info->WIFI_Queue == NULL)
{ {
Main_printf("发送结构体 内存申请失败\r\n"); Main_printf("Wifi send struct malloc failed\r\n");
}
Main_printf("内存申请成功 当前内存使用率 %d\r\n",mem_perused());
/////////////////////////////////////////////////////////////////
Main_printf("初始化WIFI\r\n");
delay_ms(500);
if(!KE_3)//开启WIFI设置检测
{
Main_printf("WIFI配网检测,长按按键3S开始配网\r\n");
TIM4_Init(3000,7200); //WIFI设置检测
TIM4_Timing=0;
ESP8266_SET_FLAG=0;
while(ESP8266_SET_FLAG==0 && TIM4_Timing<10) //等待3s
ESP8266_SET();//检测按键
if(ESP8266_SET_FLAG)//配网
{
Set_WIFI(); //WIFIAT配网
}
TIM4_Init(10000,7200); //系统指示灯
TIM_Cmd(TIM4, DISABLE);
} }
/////////////////////////////////////////////////////////////////////////////////// Main_printf("Wifi send struct malloc success %d\r\n",mem_perused());
Main_printf("WIFI初始化\r\n"); Main_printf("WIFI Init\r\n");
Main_printf("开启DMA及中断\r\n"); Main_printf("开启DMA及中断\r\n");
ADS129x_Stop();
//ADS129x_ReInit(1, 0);
ESP8266_Init();//初始化 ESP8266_Init();//初始化
DMA_Config(DMA1_Channel7,(u32)&USART2->DR,(u32)WIFI_Info->sendbuf); DMA_Config(DMA1_Channel7,(u32)&USART2->DR,(u32)WIFI_Info->sendbuf);
UART2_DMA_TX_NVIC_Config(1);//开启串口 DMA中断 UART2_DMA_TX_NVIC_Config(1);//开启串口 DMA中断
...@@ -575,7 +598,7 @@ void Send_ESP8266(void) ...@@ -575,7 +598,7 @@ void Send_ESP8266(void)
LED_1=LED_OFF; LED_1=LED_OFF;
LED_2=LED_OFF; LED_2=LED_OFF;
TIM4_Init(10000,7200); //系统指示灯 TIM4_Init(10000,7200); //系统指示灯
EXTI->IMR |= ADS129X_DRDY_LINE;//开DRDY中断
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
while(work_state==SEND_WIFI)//WIFI发送, while(work_state==SEND_WIFI)//WIFI发送,
{ {
...@@ -586,12 +609,20 @@ void Send_ESP8266(void) ...@@ -586,12 +609,20 @@ void Send_ESP8266(void)
WIFI_Info->WIFI_Queue->Queue_Full_flag=0; WIFI_Info->WIFI_Queue->Queue_Full_flag=0;
Main_printf("WIFI queue full "); Main_printf("WIFI queue full ");
} }
//testLoop();
/* Loop Message. */
Cyton_UartPraseLoop();
if(UART2_DMA_Finish==1) if(UART2_DMA_Finish==1)
{ {
if(serch_queue_data(WIFI_Info->WIFI_Queue))//队列有数据 if(serch_queue_data(WIFI_Info->WIFI_Queue))//队列有数据
{ {
//delay_ms(1);
for(j=0;j<ADS129x_info.Ads129x_Write_Num;j++)//一帧N次采样的数据 for(j=0;j<ADS129x_info.Ads129x_Write_Num;j++)//一帧N次采样的数据
{ {
#if 0
for(i=0;i<8;i++)//处理8个通道的数据 for(i=0;i<8;i++)//处理8个通道的数据
{ {
ADS129x_info.cannle[i] = *(*(WIFI_Info->WIFI_Queue->databuf + WIFI_Info->WIFI_Queue->front)+0+i*3+j*ADS129x_info.Ads129x_Data_Move)<<16 ADS129x_info.cannle[i] = *(*(WIFI_Info->WIFI_Queue->databuf + WIFI_Info->WIFI_Queue->front)+0+i*3+j*ADS129x_info.Ads129x_Data_Move)<<16
...@@ -617,14 +648,39 @@ void Send_ESP8266(void) ...@@ -617,14 +648,39 @@ void Send_ESP8266(void)
} }
WIFI_Info->sendbuf[(ADS129X_USE_CANNLE+1)*4 +1 +j*WIFI_Info->datalength] = sumcheck; //校验 WIFI_Info->sendbuf[(ADS129X_USE_CANNLE+1)*4 +1 +j*WIFI_Info->datalength] = sumcheck; //校验
WIFI_Info->sendbuf[(ADS129X_USE_CANNLE+1)*4 +2 +j*WIFI_Info->datalength] = addcheck; //校验 WIFI_Info->sendbuf[(ADS129X_USE_CANNLE+1)*4 +2 +j*WIFI_Info->datalength] = addcheck; //校验
#else
/* 1: 0xa0 2: autoCnt 3: 24 byte 27-32:0x00 33: 0xC0*/
WIFI_Info->sendbuf[j * WIFI_Info->datalength] = 0xA0;
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 1] = g_aucSendIndexData ++;
memcpy(&WIFI_Info->sendbuf[j * WIFI_Info->datalength + 2],
(*(WIFI_Info->WIFI_Queue->databuf + WIFI_Info->WIFI_Queue->front) +j * ADS129x_info.Ads129x_Data_Move),
ADS129x_info.Ads129x_Data_Move); /* 24 byte data.*/
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 27] = 0x0;
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 27] = 0x0;
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 28] = 0x0;
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 29] = 0x0;
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 30] = 0x0;
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 31] = 0x0;
WIFI_Info->sendbuf[j * WIFI_Info->datalength + 32] = 0xC0;
#endif
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//ESP8266_SendData(WIFI_Info->sendbuf, WIFI_SEND_LENGTH);
delay_ms(1);
DMA_Enable(DMA1_Channel7,WIFI_SEND_LENGTH);//开启DMA DMA_Enable(DMA1_Channel7,WIFI_SEND_LENGTH);//开启DMA
UART2_DMA_Finish=0; UART2_DMA_Finish=0;
WIFI_Info->WIFI_Queue->front = (WIFI_Info->WIFI_Queue->front+1) % WIFI_Info->WIFI_Queue->capacity;//取数据,队头自增,存数据,队尾自增 WIFI_Info->WIFI_Queue->front = (WIFI_Info->WIFI_Queue->front+1) % WIFI_Info->WIFI_Queue->capacity;//取数据,队头自增,存数据,队尾自增
if (iDebug ++ % 1000 == 0) {
Main_printf("WIFI Send WIFI_Info->WIFI_Queue->front %d ADS129x_info.Ads129x_Data_Move %d Ads129x_Write_Num %d WIFI_Info->datalength %d\n",
WIFI_Info->WIFI_Queue->front, ADS129x_info.Ads129x_Data_Move, ADS129x_info.Ads129x_Write_Num, WIFI_Info->datalength);
}
} else {
//printf("n");
//delay_ms(500);
} }
} }
} }
EXTI->IMR &= ~(ADS129X_DRDY_LINE);//屏蔽外部中断 EXTI->IMR &= ~(ADS129X_DRDY_LINE);//屏蔽外部中断
TIM_Cmd(TIM4, DISABLE); TIM_Cmd(TIM4, DISABLE);
ESP8266_PWOEROFF;//关WIFI ESP8266_PWOEROFF;//关WIFI
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment