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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5246|回復: 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 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
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 | 只看該作者
找到原因了嗎
回復

使用道具 舉報

5#
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本特黄特色aaa大片免费 | 91精品久久久久久久久中文字幕 | 99久久久久国产精品免费 | 亚洲高清av | 91观看| h视频在线播放 | 日本中文字幕在线观看 | 成人精品毛片国产亚洲av十九禁 | www日韩欧美| 羞羞的视频在线看 | 日韩欧美在线不卡 | 欧美国产亚洲一区二区 | 亚洲人人 | 91久久精品国产 | 久久久激情视频 | 大伊人久久| 在线视频99 | 天堂色| 亚洲精品在线观看视频 | 欧美一级片在线观看 | 精品久久久久久久久久久久 | 中文字幕 在线观看 | 人人射人人 | 曰韩一二三区 | 久久久不卡网国产精品一区 | 国产亚洲欧美另类一区二区三区 | 国产乱码精品1区2区3区 | 亚洲一区二区免费电影 | 欧美色性| 天天天操 | 国产精品一区二区视频 | 一区二区三区在线 | 99精品视频在线 | 国产精品视频一区二区三区 | 国产一区二区三区www | 成人精品久久久 | 亚洲精品乱码 | 精品国产一区二区三区久久久四川 | 免费黄色a级毛片 | 最新av在线播放 | 国产成人一区 |