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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5424|回復: 4
收起左側

ADS1292心電監測裝置的STM32f4源碼,SPI通信 源程序

[復制鏈接]
ID:591749 發表于 2020-10-9 15:17 | 顯示全部樓層 |閱讀模式
ADS1292通過SPI發送數據給STM32f4,。單片機利用串口發消息給串口助手

單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"   
  5. #include "ADS1292.h"
  6. #include "Timer.h"
  7. #include "dma.h"


  8. #define SEND_BUF_SIZE 8200        //發送數據長度,最好等于sizeof(TEXT_TO_SEND)+2的整數倍.




  9. int main(void)
  10. {

  11. u8 res,i,sum;        
  12.                 u8 data_to_send[60];//串口發送緩存
  13.                 u8 usbstatus=0;        
  14.                 u32 cannle[2];        //存儲兩個通道的數據
  15.                 s32        p_Temp[2];        //數據緩存
  16.         
  17.                 data_to_send[0]=0xAA;
  18.                 data_to_send[1]=0xAA;
  19.                 data_to_send[2]=0xF1;        
  20.                 data_to_send[3]=8;

  21. //初始化系統時鐘         72M        
  22.                 SystemInit();        
  23.         delay_init(168);    //初始化延時函數
  24.         //                delay_init();        
  25.                 delay_ms(100);
  26.         
  27.         uart_init(115200);         //串口初始化

  28.                 //uart1_init(115200);//串口初始化為115200               
  29.                
  30. //                DMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)data_to_send);//串口1DMA設置
  31.                 MYDMA_Config(DMA2_Stream7,DMA_Channel_4,(u32)&USART1->DR,(u32)data_to_send,SEND_BUF_SIZE);//DMA2,STEAM7,CH4,外設為串口1,存儲器為SendBuff,長度為:SEND_BUF_SIZE.
  32.                 USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE); //DMA        
  33.                  
  34.         //        LED_Init();                        
  35. //   LED_Init1();                        
  36.                 ADS1292_Init();        //初始化ads1292                                       
  37.                 while(Set_ADS1292_Collect(0))//0 正常采集  //1 1mV1Hz內部側試信號 //2 內部短接噪聲測試
  38.                 {        
  39.                                 printf("1292寄存器設置失敗\r\n");
  40.                                 delay_ms(1000);               
  41. //                                DS3 =!DS3;        
  42.         //                        DS4 =!DS4;        
  43.                 }        
  44.                 printf("寄存器設置成功\r\n");
  45.                 delay_ms(1000);               
  46. //                DS3 =LEDOFF;               
  47.         //        DS4 =LEDOFF;
  48.                
  49.                 TIM2_Init(10000,7200);//系統指示
  50.                 //TIM4_Init(2000,7200);//按鍵消抖
  51.                
  52.                 EXTI->IMR |= EXTI_Line8;//開DRDY中斷                        
  53.                 while(1)//循環發送數據               
  54.                 {
  55.                                 LED1 =0;
  56.                                 if(ads1292_recive_flag)
  57.                                 {                                                                                
  58.                                                         cannle[0]=ads1292_Cache[3]<<16 | ads1292_Cache[4]<<8 | ads1292_Cache[5];//獲取原始數據               
  59.                                                         cannle[1]=ads1292_Cache[6]<<16 | ads1292_Cache[7]<<8 | ads1292_Cache[8];
  60.                                                 
  61.                                                         p_Temp[0] = get_volt(cannle[0]);        //把采到的3個字節轉成有符號32位數
  62.                                                         p_Temp[1] = get_volt(cannle[1]);        //把采到的3個字節轉成有符號32位數
  63.                                        
  64.                                                         //有符號數為再轉為無符號,無符號數為邏輯右移
  65.                                                         cannle[0] = p_Temp[0];
  66.                                                         cannle[1]        = p_Temp[1];
  67.                                                         data_to_send[4]=cannle[0]>>24;                //25-32位
  68.                                                         data_to_send[5]=cannle[0]>>16;          //17-24
  69.                                                         data_to_send[6]=cannle[0]>>8;                //9-16
  70.                                                         data_to_send[7]=cannle[0];                         //1-8

  71.                                                         data_to_send[8]=cannle[1]>>24;                //25-32位
  72.                                                         data_to_send[9]=cannle[1]>>16;          //17-24
  73.                                                         data_to_send[10]=cannle[1]>>8;                //9-16
  74.                                                         data_to_send[11]=cannle[1];                         //1-8
  75.                                                         
  76.                                                         for(i=0;i<12;i++)
  77.                                                                         sum += data_to_send[i];                                                        
  78.                                                         data_to_send[12] = sum;        //校驗和                                                                                                                                                
  79. //                                                        DMA_Enable(DMA1_Channel4,13);//串口1DMA
  80.                                                         MYDMA_Enable(DMA2_Stream7,SEND_BUF_SIZE);//開始一次DMA傳輸!                                                                                                                                 
  81.                                                         ads1292_recive_flag=0;
  82.                                                         sum = 0;        
  83.                                 }
  84.                 }               
  85. }


  86. /*功能:把采到的3個字節轉成有符號32位數 */
  87. s32 get_volt(u32 num)
  88. {               
  89.                         s32 temp;                        
  90.                         temp = num;
  91.                         temp <<= 8;
  92.                         temp >>= 8;
  93.                         return temp;
  94. }
復制代碼

所有資料51hei提供下載:
心電監測.7z (307.02 KB, 下載次數: 159)

評分

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

查看全部評分

回復

使用道具 舉報

ID:545902 發表于 2020-10-10 20:19 | 顯示全部樓層
為什么我串口顯示1292寄存器設置失敗
回復

使用道具 舉報

ID:353953 發表于 2020-10-11 20:06 來自觸屏版 | 顯示全部樓層
thb0430 發表于 2020-10-10 20:19
為什么我串口顯示1292寄存器設置失敗

同問,挺急的。
回復

使用道具 舉報

ID:828561 發表于 2020-10-12 12:05 | 顯示全部樓層
找到原因了嗎
回復

使用道具 舉報

ID:1014240 發表于 2022-4-8 16:58 | 顯示全部樓層

在采集模式的函數里res初始為0,寫入寄存器成功則res=1,返回res的值,到主函數的while循環里=1就出不來了,一直打印循環里的寄存器設置失敗。可以改一下循環條件,或者改一下res值的設置
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: jizz在线看片 | 一区二区三区视频免费观看 | 国产亚洲一区二区精品 | 黄色亚洲网站 | 日韩在线播放一区 | 久久中文免费视频 | 欧美黄色绿像 | 一区二区激情 | 99久9| 精品综合 | 99爱视频 | 国产人成在线观看 | 午夜影院免费体验区 | 欧美视频1区 | 亚洲欧美在线观看 | 国产91观看| 免费a网| 97精品国产 | 中文在线一区二区 | 国产午夜视频 | 精品一区二区在线观看 | 91最新视频| 中文字幕亚洲精品在线观看 | 三级免费av | 国产女人第一次做爰毛片 | 亚洲第一免费播放区 | 国产精品美女久久久久久久网站 | 国产一区二区视频在线观看 | 久久精品二区亚洲w码 | 91麻豆精品一区二区三区 | 久久久久国产精品午夜一区 | 成人国产午夜在线观看 | 国产成人精品一区二区三区 | 天天摸天天干 | www.一级片 | 天天干天天插天天 | 在线欧美a| 国产福利在线视频 | 免费一级淫片aaa片毛片a级 | 精品久久电影 | 91超碰在线观看 |