久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3261|回復: 2
打印 上一主題 下一主題
收起左側

STM32F407+AD7606采集32路信號 源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:693249 發表于 2021-3-25 11:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
32路AD采集,芯片AD7606

單片機源程序如下:
  1. /***********************************************************************
  2.     main.c
  3. ********************************************************************/
  4. #include "main.h"
  5. #include "bsp_AD7606.h"
  6. #include "bsp_io.h"
  7. #include "bsp_W25qxx.h"
  8. #include "bsp_timer.h"
  9. #include "lwip_comm.h"
  10. #include "udp_server.h"
  11. #ifdef USART_DEBUG
  12. #include "usart.h"
  13. #endif
  14. #include "delay.h"

  15. /**************************************************************************/
  16. uint8_t   CPUIDbuf[12];   //CPUID
  17. WORKINFO  WorkInfo;       //工作參數
  18. AD_ARRAY  NewFrame;       //最新1幀數據
  19. ADARRAYCTR ADArrayCtr;    //數據隊列控制
  20. //幀數據隊列
  21. AD_ARRAY  Array[AD_ARRAYNum];// __attribute__ ((at(0x10000000)));
  22. //uint16_t  ADIntCnt[4];
  23. /*****************************************
  24. byte:{0x01,0x02,0x03,0x04}->int:0x04030201
  25. ****************************************/
  26. uint32_t byte2int(uint8_t *ps)
  27. {
  28.     uint8_t i;
  29.     B4_I1  utemp;

  30.     for(i=0;i<4;i++)
  31.         utemp.v[i] = ps[i];
  32.     return utemp.v32;
  33. }
  34. /*****************************************
  35. int:0x01020304->byte:{0x04,0x03,0x02,0x01}
  36. ****************************************/
  37. void int2byte(uint32_t dat,uint8_t *pd)
  38. {
  39.     uint8_t i;
  40.     B4_I1  utemp;

  41.     utemp.v32 = dat;
  42.     for(i=0;i<4;i++)
  43.         pd[i] = utemp.v[i];
  44. }

  45. /******************************************************
  46.     GetCPUID
  47. 描述:讀STM32F407唯一ID,12字節,96bit
  48. 輸出: DecGuidStr= 設備唯一碼字符串格式
  49. ******************************************************/
  50. static void GetCPUID(void)
  51. {
  52.     uint8_t i;

  53.     for (i = 0; i < 12; i++)
  54.     {
  55.         CPUIDbuf[i] = *(uint8_t *)(0x1FFF7A10 + i);
  56.     }
  57. }

  58. /***********************************************
  59.     GetWorkInfo
  60. 描述:讀上次使用的工作參數
  61. **********************************************/
  62. void GetWorkInfo(void)
  63. {
  64.     W25qX_Read(SPI1,(uint8_t *)&WorkInfo,W25_WORKINFO_ADD,sizeof(WORKINFO));
  65.     if (WorkInfo.FirstFlag!=0xad1e)
  66.     {//首次上電,賦默認值
  67.         WorkInfo.FirstFlag = 0xad1e;
  68.         WorkInfo.ADParam.AD_gain = 0;   //10V
  69.         WorkInfo.ADParam.AD_os = 0;     //無過過采樣率
  70.         WorkInfo.ADParam.AD_freq = 48000;   //采樣頻率=48KHz
  71.         WorkInfo.ADParam.AD_num = 10;   

  72.         WorkInfo.NetSet.IP[0] = 192;
  73.         WorkInfo.NetSet.IP[1] = 168;
  74.         WorkInfo.NetSet.IP[2] = 1;
  75.         WorkInfo.NetSet.IP[3] = 30;
  76.         WorkInfo.NetSet.SubNet[0] = 255;
  77.         WorkInfo.NetSet.SubNet[1] = 255;
  78.         WorkInfo.NetSet.SubNet[2] = 255;
  79.         WorkInfo.NetSet.SubNet[3] = 0;
  80.         WorkInfo.NetSet.Gate[0] = 192;
  81.         WorkInfo.NetSet.Gate[1] = 168;
  82.         WorkInfo.NetSet.Gate[2] = 1;
  83.         WorkInfo.NetSet.Gate[3] = 1;
  84.         WorkInfo.NetSet.Port = 5050;
  85.         WorkInfo.NetSet.Mac[0] = 2;
  86.         WorkInfo.NetSet.Mac[1] = 0;
  87.         WorkInfo.NetSet.Mac[2] = 0;
  88.         WorkInfo.NetSet.Mac[3] = CPUIDbuf[0];
  89.         WorkInfo.NetSet.Mac[4] = CPUIDbuf[1];
  90.         WorkInfo.NetSet.Mac[5] = CPUIDbuf[2];

  91.         W25qX_Write(SPI1,(uint8_t *)&WorkInfo,W25_WORKINFO_ADD,sizeof(WORKINFO));
  92.     }
  93. }
  94. /***********************************************
  95.     SetWorkInfo
  96. 描述:保存當前使用的工作參數
  97. ***********************************************/
  98. void SetWorkInfo(void)
  99. {
  100.     W25qX_Write(SPI1,(uint8_t *)&WorkInfo,W25_WORKINFO_ADD,sizeof(WORKINFO));
  101. }

  102. /***********************************************************
  103.     AD_Array_Init
  104. 描述:隊列初始化
  105. ***********************************************************/
  106. void AD_Array_Init(void)
  107. {
  108.         //u8_t i;
  109.     ADArrayCtr.Rpoint = Array;
  110.     ADArrayCtr.Wpoint = Array;
  111.     ADArrayCtr.frameCnt = 0;
  112.     ADArrayCtr.ChannelCnt = 0;
  113.     ADArrayCtr.NewframeOK = 0;
  114.         //for(i=0;i<4;i++)
  115.         //        ADIntCnt[i] = 0;
  116. }

  117. //復位AD及相關參數
  118. void AD_SoftReset(void)
  119. {
  120.         AD7606_Stop();
  121.     //AD7606初始化   
  122.     RST_H();
  123.     delay_us(10);
  124.     RST_L();
  125.     delay_us(10);
  126.     AD7606_Init();
  127.     AD_Array_Init();
  128. }   
  129. /**************************************************************************
  130.                              main 函數
  131. **************************************************************************/
  132. int main(void)
  133. {
  134.     // 嵌套向量中斷控制器組選擇
  135.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  136.        
  137.         //delay_init(168);
  138.     // 初始化基本IO  
  139.     IO_GPIO_Config();
  140.     // 初始化W25q16(SPI1)
  141.     if (W25qX_Init()<0)
  142.     {//flash錯,死循環
  143.         BELL_ON();
  144.         while (1);
  145.     }
  146.     //節拍定時器(TIM2)初始化
  147.     Tick_TIM2_Config();
  148. #ifdef USART_DEBUG
  149.     //初始化調試串口RS232(串口1)
  150.     uart_init(115200);
  151. #endif       

  152.     //AD7606初始化
  153.     AD7606_Init();
  154.     //數據隊列初始化
  155.     AD_Array_Init();
  156.     //工作參數初始化
  157.     memset((char *)&WorkInfo,0,sizeof(WORKINFO));
  158.         //讀CPUID
  159.     GetCPUID();
  160.     GetWorkInfo();
  161.     //網絡初始化
  162.     while (lwip_comm_init()) //lwip初始化
  163.     {
  164.      // 失敗
  165.         BELL_ON();
  166.         delay_ms(1200);
  167.     }
  168.     //初始化OK
  169.     BELL_OFF();
  170.     delay_ms(1000);
  171.     //UDP服務器端初始化
  172.     udp_echoserver_init();

  173.     BELL_ON();
  174.     delay_ms(500);
  175.     BELL_OFF();

  176.     while (1)
  177.     {
  178.         if(udp_server_flag&0x03)
  179.         {
  180.             LED5_ON();
  181.             ContinueSendTo();
  182.             LED5_OFF();
  183.         }
  184.     }
  185. }
復制代碼

所有代碼51hei提供下載:
LWIP-dap32.7z (1.28 MB, 下載次數: 92)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328014 發表于 2021-3-25 16:53 | 只看該作者
好東東 謝謝,樓主能分享一下原理圖嗎?
回復

使用道具 舉報

板凳
ID:831825 發表于 2024-5-31 14:25 | 只看該作者
樓主,可以分享一下原理圖嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品二区亚洲w码 | 久久久久国产一区二区三区 | 久久精品国产一区二区三区 | 91精品国产综合久久久久久漫画 | 天天射网站| 91原创视频在线观看 | 毛片免费视频 | 亚洲欧美精品 | 久久不射电影网 | 国产电影一区二区 | 国产精品日韩欧美一区二区 | 国产成人麻豆免费观看 | 国产资源在线观看 | 日韩欧美一级片 | 成人亚洲一区 | 精品综合久久久 | 美女亚洲一区 | 欧美一区二区三区电影 | 国产精品成人品 | 久久久免费少妇高潮毛片 | 精品日韩一区 | 亚洲一区二区三区在线 | 羞羞视频网站免费看 | 日韩毛片免费视频 | aaa级片 | 欧美一区二区大片 | 麻豆一区一区三区四区 | 古典武侠第一页久久777 | 91 久久| 欧美一级在线观看 | 一级看片免费视频囗交动图 | 国产一区二区三区 | 亚洲综合五月天婷婷 | 精品国产乱码久久久久久88av | 风间由美一区二区三区在线观看 | 7777在线视频 | 久久毛片 | 国产精品视频一二三区 | 国产片侵犯亲女视频播放 | 91久久精品 | 激情一区二区三区 |