ADS1292通過SPI發送數據給STM32f4,。單片機利用串口發消息給串口助手
單片機源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "ADS1292.h"
- #include "Timer.h"
- #include "dma.h"
- #define SEND_BUF_SIZE 8200 //發送數據長度,最好等于sizeof(TEXT_TO_SEND)+2的整數倍.
- int main(void)
- {
-
- u8 res,i,sum;
- u8 data_to_send[60];//串口發送緩存
- u8 usbstatus=0;
- u32 cannle[2]; //存儲兩個通道的數據
- s32 p_Temp[2]; //數據緩存
-
- data_to_send[0]=0xAA;
- data_to_send[1]=0xAA;
- data_to_send[2]=0xF1;
- data_to_send[3]=8;
- //初始化系統時鐘 72M
- SystemInit();
- delay_init(168); //初始化延時函數
- // delay_init();
- delay_ms(100);
-
- uart_init(115200); //串口初始化
- //uart1_init(115200);//串口初始化為115200
-
- // DMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)data_to_send);//串口1DMA設置
- 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.
- USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE); //DMA
-
- // LED_Init();
- // LED_Init1();
- ADS1292_Init(); //初始化ads1292
- while(Set_ADS1292_Collect(0))//0 正常采集 //1 1mV1Hz內部側試信號 //2 內部短接噪聲測試
- {
- printf("1292寄存器設置失敗\r\n");
- delay_ms(1000);
- // DS3 =!DS3;
- // DS4 =!DS4;
- }
- printf("寄存器設置成功\r\n");
- delay_ms(1000);
- // DS3 =LEDOFF;
- // DS4 =LEDOFF;
-
- TIM2_Init(10000,7200);//系統指示
- //TIM4_Init(2000,7200);//按鍵消抖
-
- EXTI->IMR |= EXTI_Line8;//開DRDY中斷
- while(1)//循環發送數據
- {
- LED1 =0;
- if(ads1292_recive_flag)
- {
- cannle[0]=ads1292_Cache[3]<<16 | ads1292_Cache[4]<<8 | ads1292_Cache[5];//獲取原始數據
- cannle[1]=ads1292_Cache[6]<<16 | ads1292_Cache[7]<<8 | ads1292_Cache[8];
-
- p_Temp[0] = get_volt(cannle[0]); //把采到的3個字節轉成有符號32位數
- p_Temp[1] = get_volt(cannle[1]); //把采到的3個字節轉成有符號32位數
-
- //有符號數為再轉為無符號,無符號數為邏輯右移
- cannle[0] = p_Temp[0];
- cannle[1] = p_Temp[1];
- data_to_send[4]=cannle[0]>>24; //25-32位
- data_to_send[5]=cannle[0]>>16; //17-24
- data_to_send[6]=cannle[0]>>8; //9-16
- data_to_send[7]=cannle[0]; //1-8
- data_to_send[8]=cannle[1]>>24; //25-32位
- data_to_send[9]=cannle[1]>>16; //17-24
- data_to_send[10]=cannle[1]>>8; //9-16
- data_to_send[11]=cannle[1]; //1-8
-
- for(i=0;i<12;i++)
- sum += data_to_send[i];
- data_to_send[12] = sum; //校驗和
- // DMA_Enable(DMA1_Channel4,13);//串口1DMA
- MYDMA_Enable(DMA2_Stream7,SEND_BUF_SIZE);//開始一次DMA傳輸!
- ads1292_recive_flag=0;
- sum = 0;
- }
- }
- }
- /*功能:把采到的3個字節轉成有符號32位數 */
- s32 get_volt(u32 num)
- {
- s32 temp;
- temp = num;
- temp <<= 8;
- temp >>= 8;
- return temp;
- }
復制代碼
所有資料51hei提供下載:
心電監測.7z
(307.02 KB, 下載次數: 159)
2020-10-9 18:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|