通过MSP430来测量人体心电图
该演示程序使用的芯片为:MSP-EXP430F5529LP
功能:
单片机采集ADS1292模块数据,通过串口输出。
串口:
UART1
波特率:115200
停止位:1
数据为:8
奇偶校验:无
引脚定义及连线:
1292模块--MSP430:
VDD -- 3.3V
GND -- GND
DRDY -- P1.4
CS -- P3.3
SCK -- P3.2
MISO -- P3.1
MOSI -- P3.0
RESET -- 3.3V
START -- GND
单片机源程序如下:
- #include "bsp.h"
- long get_volt(unsigned long num);//把采到的3个字节补码转成有符号32位数
- int main( void )
- {
- unsigned int temp;
- union F32_Sep
- {
- long x;
- unsigned char s[4];
- };
- union F32_Sep p[2];
- unsigned char res,i,sum;
- unsigned char data_to_send[60];//串口发送缓存
- unsigned char usbstatus=0;
- unsigned long cannle[2]; //存储两个通道的数据
- long p_Temp[2]; //数据缓存
-
- data_to_send[0]=0xAA;
- data_to_send[1]=0xAA;
- data_to_send[2]=0xF1;
- data_to_send[3]=8;
- // Stop watchdog timer to prevent time out reset
- WDTCTL = WDTPW + WDTHOLD;
- bsp_Init();
- ADS1292_Init(); //初始化ads1292
- while(Set_ADS1292_Collect(0))//0 正常采集 //1 1mV1Hz内部侧试信号 //2 内部短接噪声测试
- {
- printf("1292寄存器设置失败\r\n");
- delay_s(1);
- }
- printf("寄存器设置成功\r\n");
- _EINT();
- P1IE |= BIT4; //P1.7中断使能
- while(1)
- {
- //temp = ReadRegfdc2214(0x00);//读取第一通道的值
- if(ads1292_recive_flag)
- {
- //p[0].x[0] =
- cannle[0]=((unsigned long)ads1292_Cache[3]<<16) | ((unsigned long )ads1292_Cache[4]<<8) | ads1292_Cache[5];//获取原始数据
- cannle[1]=((unsigned long)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
- // for(i = 0; i < 13; i++)
- {
- //printf(data_to_send);
- }
- myprintf(data_to_send, 13);
-
- ads1292_recive_flag=0;
- sum = 0;
- }
- }
- }
- /*功能:把采到的3个字节转成有符号32位数 */
- long get_volt(unsigned long num)
- {
- long temp;
- //u32 iny = 0;
- temp = num;
- temp <<= 8;
- temp >>= 8;
- return temp;
- }
复制代码
所有资料51hei提供下载:
MSP430F5529_ADS1292.7z
(374.11 KB, 下载次数: 33)
|