欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STM32F407+AD7606采集32路信號 源程序
[打印本頁]
作者:
zhangerbiao
時間:
2021-3-25 11:27
標題:
STM32F407+AD7606采集32路信號 源程序
32路AD采集,芯片AD7606
單片機源程序如下:
/***********************************************************************
main.c
********************************************************************/
#include "main.h"
#include "bsp_AD7606.h"
#include "bsp_io.h"
#include "bsp_W25qxx.h"
#include "bsp_timer.h"
#include "lwip_comm.h"
#include "udp_server.h"
#ifdef USART_DEBUG
#include "usart.h"
#endif
#include "delay.h"
/**************************************************************************/
uint8_t CPUIDbuf[12]; //CPUID
WORKINFO WorkInfo; //工作參數
AD_ARRAY NewFrame; //最新1幀數據
ADARRAYCTR ADArrayCtr; //數據隊列控制
//幀數據隊列
AD_ARRAY Array[AD_ARRAYNum];// __attribute__ ((at(0x10000000)));
//uint16_t ADIntCnt[4];
/*****************************************
byte:{0x01,0x02,0x03,0x04}->int:0x04030201
****************************************/
uint32_t byte2int(uint8_t *ps)
{
uint8_t i;
B4_I1 utemp;
for(i=0;i<4;i++)
utemp.v[i] = ps[i];
return utemp.v32;
}
/*****************************************
int:0x01020304->byte:{0x04,0x03,0x02,0x01}
****************************************/
void int2byte(uint32_t dat,uint8_t *pd)
{
uint8_t i;
B4_I1 utemp;
utemp.v32 = dat;
for(i=0;i<4;i++)
pd[i] = utemp.v[i];
}
/******************************************************
GetCPUID
描述:讀STM32F407唯一ID,12字節,96bit
輸出: DecGuidStr= 設備唯一碼字符串格式
******************************************************/
static void GetCPUID(void)
{
uint8_t i;
for (i = 0; i < 12; i++)
{
CPUIDbuf[i] = *(uint8_t *)(0x1FFF7A10 + i);
}
}
/***********************************************
GetWorkInfo
描述:讀上次使用的工作參數
**********************************************/
void GetWorkInfo(void)
{
W25qX_Read(SPI1,(uint8_t *)&WorkInfo,W25_WORKINFO_ADD,sizeof(WORKINFO));
if (WorkInfo.FirstFlag!=0xad1e)
{//首次上電,賦默認值
WorkInfo.FirstFlag = 0xad1e;
WorkInfo.ADParam.AD_gain = 0; //10V
WorkInfo.ADParam.AD_os = 0; //無過過采樣率
WorkInfo.ADParam.AD_freq = 48000; //采樣頻率=48KHz
WorkInfo.ADParam.AD_num = 10;
WorkInfo.NetSet.IP[0] = 192;
WorkInfo.NetSet.IP[1] = 168;
WorkInfo.NetSet.IP[2] = 1;
WorkInfo.NetSet.IP[3] = 30;
WorkInfo.NetSet.SubNet[0] = 255;
WorkInfo.NetSet.SubNet[1] = 255;
WorkInfo.NetSet.SubNet[2] = 255;
WorkInfo.NetSet.SubNet[3] = 0;
WorkInfo.NetSet.Gate[0] = 192;
WorkInfo.NetSet.Gate[1] = 168;
WorkInfo.NetSet.Gate[2] = 1;
WorkInfo.NetSet.Gate[3] = 1;
WorkInfo.NetSet.Port = 5050;
WorkInfo.NetSet.Mac[0] = 2;
WorkInfo.NetSet.Mac[1] = 0;
WorkInfo.NetSet.Mac[2] = 0;
WorkInfo.NetSet.Mac[3] = CPUIDbuf[0];
WorkInfo.NetSet.Mac[4] = CPUIDbuf[1];
WorkInfo.NetSet.Mac[5] = CPUIDbuf[2];
W25qX_Write(SPI1,(uint8_t *)&WorkInfo,W25_WORKINFO_ADD,sizeof(WORKINFO));
}
}
/***********************************************
SetWorkInfo
描述:保存當前使用的工作參數
***********************************************/
void SetWorkInfo(void)
{
W25qX_Write(SPI1,(uint8_t *)&WorkInfo,W25_WORKINFO_ADD,sizeof(WORKINFO));
}
/***********************************************************
AD_Array_Init
描述:隊列初始化
***********************************************************/
void AD_Array_Init(void)
{
//u8_t i;
ADArrayCtr.Rpoint = Array;
ADArrayCtr.Wpoint = Array;
ADArrayCtr.frameCnt = 0;
ADArrayCtr.ChannelCnt = 0;
ADArrayCtr.NewframeOK = 0;
//for(i=0;i<4;i++)
// ADIntCnt[i] = 0;
}
//復位AD及相關參數
void AD_SoftReset(void)
{
AD7606_Stop();
//AD7606初始化
RST_H();
delay_us(10);
RST_L();
delay_us(10);
AD7606_Init();
AD_Array_Init();
}
/**************************************************************************
main 函數
**************************************************************************/
int main(void)
{
// 嵌套向量中斷控制器組選擇
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//delay_init(168);
// 初始化基本IO
IO_GPIO_Config();
// 初始化W25q16(SPI1)
if (W25qX_Init()<0)
{//flash錯,死循環
BELL_ON();
while (1);
}
//節拍定時器(TIM2)初始化
Tick_TIM2_Config();
#ifdef USART_DEBUG
//初始化調試串口RS232(串口1)
uart_init(115200);
#endif
//AD7606初始化
AD7606_Init();
//數據隊列初始化
AD_Array_Init();
//工作參數初始化
memset((char *)&WorkInfo,0,sizeof(WORKINFO));
//讀CPUID
GetCPUID();
GetWorkInfo();
//網絡初始化
while (lwip_comm_init()) //lwip初始化
{
// 失敗
BELL_ON();
delay_ms(1200);
}
//初始化OK
BELL_OFF();
delay_ms(1000);
//UDP服務器端初始化
udp_echoserver_init();
BELL_ON();
delay_ms(500);
BELL_OFF();
while (1)
{
if(udp_server_flag&0x03)
{
LED5_ON();
ContinueSendTo();
LED5_OFF();
}
}
}
復制代碼
所有代碼51hei提供下載:
LWIP-dap32.7z
(1.28 MB, 下載次數: 92)
2021-3-25 16:52 上傳
點擊文件名下載附件
ad+lwip+sd
下載積分: 黑幣 -5
作者:
51hei團團
時間:
2021-3-25 16:53
好東東 謝謝,樓主能分享一下原理圖嗎?
作者:
沿途南行
時間:
2024-5-31 14:25
樓主,可以分享一下原理圖嗎
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1