修改AD滤波器速率,提高采集速度

This commit is contained in:
王绪洁 2025-02-12 15:38:06 +08:00
parent 9c24285100
commit 98459dd31a
7 changed files with 79 additions and 29 deletions

View File

@ -37,28 +37,29 @@ extern "C"
#include "tcpserverc.h" #include "tcpserverc.h"
#include "leds.h" #include "leds.h"
#include <string.h> #include <string.h>
/* USER CODE END Includes */ /* USER CODE END Includes */
/* Exported types ------------------------------------------------------------*/ /* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */ /* USER CODE BEGIN ET */
extern uint8_t tcp_echo_flags_hart1; extern uint8_t tcp_echo_flags_hart1;
extern uint8_t tcp_echo_flags_hart2; extern uint8_t tcp_echo_flags_hart2;
extern uint8_t tcp_echo_flags_ble1; extern uint8_t tcp_echo_flags_ble1;
extern uint8_t tcp_echo_flags_ble2; extern uint8_t tcp_echo_flags_ble2;
extern uint8_t tcp_echo_flags_control;
#define ARRAY_LEN(arr) (sizeof(arr)) / (sizeof(arr[0])) #define ARRAY_LEN(arr) (sizeof(arr)) / (sizeof(arr[0]))
typedef struct typedef struct
{ {
uint16_t rx_num; uint16_t rx_num;
uint8_t rx_data[512]; uint8_t rx_data[512];
uint8_t rx_data_temp[512]; uint8_t rx_data_temp[512];
uint8_t tx_data[512]; uint8_t tx_data[512];
} uart_t; } uart_t;
extern uart_t lcd_uart4; extern uart_t lcd_uart4;
extern uart_t ble2_uart3; extern uart_t ble2_uart3;
extern uart_t ble1_uart6; extern uart_t ble1_uart6;
extern uart_t hart1_uart5; extern uart_t hart1_uart5;
extern uart_t hart2_uart2; extern uart_t hart2_uart2;
#define DEST_IP_ADDR0 192 #define DEST_IP_ADDR0 192
#define DEST_IP_ADDR1 168 #define DEST_IP_ADDR1 168
#define DEST_IP_ADDR2 1 #define DEST_IP_ADDR2 1

View File

@ -179,7 +179,7 @@ void start_led_toggle_task(void const *argument)
/* Infinite loop */ /* Infinite loop */
for (;;) for (;;)
{ {
HAL_GPIO_TogglePin(LED2_G_GPIO_Port, LED2_G_Pin); // HAL_GPIO_TogglePin(LED2_G_GPIO_Port, LED2_G_Pin);
vTaskDelay(500); vTaskDelay(500);
} }
/* USER CODE END start_led_toggle_task */ /* USER CODE END start_led_toggle_task */
@ -220,7 +220,12 @@ void start_adc_task(void const *argument)
/* Infinite loop */ /* Infinite loop */
for (;;) for (;;)
{ {
ad7124_get_analog(STOP_NC_ADC); uint8_t ch = 0;
for (ch = STOP_NC_ADC; ch < AD7124_CHANNEL_EN_MAX; ch++)
{
ad7124_get_analog(ch);
}
HAL_GPIO_TogglePin(LED2_G_GPIO_Port, LED2_G_Pin);
if (huart5.RxState == HAL_UART_STATE_READY) if (huart5.RxState == HAL_UART_STATE_READY)
{ {
HAL_UARTEx_ReceiveToIdle_DMA(&huart5, hart1_uart5.rx_data_temp, ARRAY_LEN(hart1_uart5.rx_data_temp)); HAL_UARTEx_ReceiveToIdle_DMA(&huart5, hart1_uart5.rx_data_temp, ARRAY_LEN(hart1_uart5.rx_data_temp));
@ -229,7 +234,6 @@ void start_adc_task(void const *argument)
{ {
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp)); HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp));
} }
vTaskDelay(1000);
} }
/* USER CODE END start_adc_task */ /* USER CODE END start_adc_task */
} }

View File

@ -76,7 +76,7 @@ uint8_t tcp_echo_flags_hart1 = 0;
uint8_t tcp_echo_flags_hart2 = 0; uint8_t tcp_echo_flags_hart2 = 0;
uint8_t tcp_echo_flags_ble1 = 0; uint8_t tcp_echo_flags_ble1 = 0;
uint8_t tcp_echo_flags_ble2 = 0; uint8_t tcp_echo_flags_ble2 = 0;
uint8_t tcp_echo_flags_control = 0;
/* USER CODE END 0 */ /* USER CODE END 0 */
/** /**

View File

@ -213,7 +213,7 @@
<Ww> <Ww>
<count>12</count> <count>12</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>ad7124_analog</ItemText> <ItemText>ad7124_analog,0x10</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>13</count> <count>13</count>

View File

@ -7,6 +7,7 @@
#define TCP_PORT_HART2 5002 #define TCP_PORT_HART2 5002
#define TCP_PORT_BLE1 5003 #define TCP_PORT_BLE1 5003
#define TCP_PORT_BLE2 5004 #define TCP_PORT_BLE2 5004
#define TCP_PORT_CONTROL 5005
extern void tcp_echo_init(void); extern void tcp_echo_init(void);
extern void user_send_data_hart1(uint8_t *data, uint16_t len); extern void user_send_data_hart1(uint8_t *data, uint16_t len);

View File

@ -15,10 +15,12 @@ struct tcp_pcb *server_pcb_hart1 = NULL;
struct tcp_pcb *server_pcb_hart2 = NULL; struct tcp_pcb *server_pcb_hart2 = NULL;
struct tcp_pcb *server_pcb_ble1 = NULL; struct tcp_pcb *server_pcb_ble1 = NULL;
struct tcp_pcb *server_pcb_ble2 = NULL; struct tcp_pcb *server_pcb_ble2 = NULL;
struct tcp_pcb *server_pcb_control = NULL;
extern uint8_t tcp_echo_flags_hart1; extern uint8_t tcp_echo_flags_hart1;
extern uint8_t tcp_echo_flags_hart2; extern uint8_t tcp_echo_flags_hart2;
extern uint8_t tcp_echo_flags_ble1; extern uint8_t tcp_echo_flags_ble1;
extern uint8_t tcp_echo_flags_ble2; extern uint8_t tcp_echo_flags_ble2;
extern uint8_t tcp_echo_flags_control;
/*接收回调函数*/ /*接收回调函数*/
static err_t tcpecho_recv_hart1(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err) static err_t tcpecho_recv_hart1(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
@ -113,6 +115,29 @@ static err_t tcpecho_recv_ble2(void *arg, struct tcp_pcb *tpcb, struct pbuf *p,
} }
return ERR_OK; return ERR_OK;
} }
static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{
uint8_t tcp_rx_data[128] = {0}; // 接受数据缓存区
if (p != NULL)
{
/* 更新窗口*/
tcp_echo_flags_control = 1;
tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度
server_pcb_control = tpcb; // 直接赋值
memcpy(tcp_rx_data, (int *)p->payload, p->tot_len);
/*1. 对接收的数据做异或校验、帧头帧尾判断,校验失败返回信息,校验通过继续下一步、校验数据从帧头后面到校验位结束*/
/*2. 判断所要执行的操作 读或写指令*/
/*3. 对要发送的数据进行校验,组包,返回数据*/
pbuf_free(p);
}
else if (err == ERR_OK) // 检测到对方主动关闭连接时也会调用recv函数此时p为空
{
return tcp_close(tpcb);
}
return ERR_OK;
}
static err_t tcpecho_accept_hart1(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 static err_t tcpecho_accept_hart1(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的
// 形参的数量和类型必须一致 // 形参的数量和类型必须一致
{ {
@ -140,14 +165,21 @@ static err_t tcpecho_accept_ble2(void *arg, struct tcp_pcb *newpcb, err_t err) /
return ERR_OK; return ERR_OK;
} }
static err_t tcpecho_accept_control(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的
{
tcp_recv(newpcb, tcpecho_recv_control); // 当收到数据时回调用户自己写的tcpecho_recv
return ERR_OK;
}
void tcp_echo_init(void) void tcp_echo_init(void)
{ {
struct tcp_pcb *server_hart1 = NULL; struct tcp_pcb *server_hart1 = NULL;
struct tcp_pcb *server_hart2 = NULL; struct tcp_pcb *server_hart2 = NULL;
struct tcp_pcb *server_ble1 = NULL; struct tcp_pcb *server_ble1 = NULL;
struct tcp_pcb *server_ble2 = NULL; struct tcp_pcb *server_ble2 = NULL;
struct tcp_pcb *server_control = NULL;
/* 创建一个TCP控制块 */ /* 创建一路HART */
server_hart1 = tcp_new(); server_hart1 = tcp_new();
/* 绑定TCP控制块 */ /* 绑定TCP控制块 */
@ -159,7 +191,7 @@ void tcp_echo_init(void)
/* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */ /* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */
tcp_accept(server_hart1, tcpecho_accept_hart1); // 侦听到连接后回调用户编写的tcpecho_accept tcp_accept(server_hart1, tcpecho_accept_hart1); // 侦听到连接后回调用户编写的tcpecho_accept
/* 创建一个TCP控制块 */ /* 创建二路HART */
server_hart2 = tcp_new(); server_hart2 = tcp_new();
/* 绑定TCP控制块 */ /* 绑定TCP控制块 */
@ -171,7 +203,7 @@ void tcp_echo_init(void)
/* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */ /* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */
tcp_accept(server_hart2, tcpecho_accept_hart2); // 侦听到连接后回调用户编写的tcpecho_accept tcp_accept(server_hart2, tcpecho_accept_hart2); // 侦听到连接后回调用户编写的tcpecho_accept
/* 创建一个TCP控制块 */ /* 创建一路蓝牙 */
server_ble1 = tcp_new(); server_ble1 = tcp_new();
/* 绑定TCP控制块 */ /* 绑定TCP控制块 */
@ -183,7 +215,7 @@ void tcp_echo_init(void)
/* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */ /* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */
tcp_accept(server_ble1, tcpecho_accept_ble1); // 侦听到连接后回调用户编写的tcpecho_accept tcp_accept(server_ble1, tcpecho_accept_ble1); // 侦听到连接后回调用户编写的tcpecho_accept
/* 创建一个TCP控制块 */ /* 创建二路蓝牙 */
server_ble2 = tcp_new(); server_ble2 = tcp_new();
/* 绑定TCP控制块 */ /* 绑定TCP控制块 */
@ -194,6 +226,18 @@ void tcp_echo_init(void)
/* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */ /* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */
tcp_accept(server_ble2, tcpecho_accept_ble2); // 侦听到连接后回调用户编写的tcpecho_accept tcp_accept(server_ble2, tcpecho_accept_ble2); // 侦听到连接后回调用户编写的tcpecho_accept
/* 创建控制块 */
server_control = tcp_new();
/* 绑定TCP控制块 */
tcp_bind(server_control, IP_ADDR_ANY, TCP_PORT_CONTROL);
/* 进入监听状态 */
server_control = tcp_listen(server_control);
/* 处理连接 注册函数,侦听到连接时被注册的函数被回调 */
tcp_accept(server_control, tcpecho_accept_control); // 侦听到连接后回调用户编写的tcpecho_accept
} }
void user_send_data_hart1(uint8_t *data, uint16_t len) void user_send_data_hart1(uint8_t *data, uint16_t len)

View File

@ -39,7 +39,7 @@ static ad7124_st_reg_t ad7124_regs[AD7124_REG_NO] = {
{AD7124_CONFIG_5, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_5 */ {AD7124_CONFIG_5, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_5 */
{AD7124_CONFIG_6, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_6 */ {AD7124_CONFIG_6, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_6 */
{AD7124_CONFIG_7, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_7 */ {AD7124_CONFIG_7, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_7 */
{AD7124_FILTER_0, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_0 */ {AD7124_FILTER_0, 0x060000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_0 */
{AD7124_FILTER_1, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_1 */ {AD7124_FILTER_1, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_1 */
{AD7124_FILTER_2, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_2 */ {AD7124_FILTER_2, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_2 */
{AD7124_FILTER_3, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_3 */ {AD7124_FILTER_3, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_3 */