打印
[技术问答]

MAX30100

[复制链接]
4899|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qq709631261|  楼主 | 2016-8-20 21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做这个MAX30100的模块 数据都出来 样本数都不出来 有没有做过的人能请教下。我直接STC12做的,
沙发
598330983| | 2016-8-20 23:33 | 只看该作者
数据是出来了还是没出来?

使用特权

评论回复
板凳
qq709631261|  楼主 | 2016-8-21 09:36 | 只看该作者
AD是几乎一直递减的 没有波动

使用特权

评论回复
地板
mintspring| | 2016-8-21 20:42 | 只看该作者
确认读取的正确吗?是不是根本没有让AD工作。

使用特权

评论回复
5
zhuotuzi| | 2016-8-22 20:10 | 只看该作者
如果时序正确,那就可以读取出来

使用特权

评论回复
6
Thethree| | 2016-8-23 09:19 | 只看该作者
其实这个芯片的datasheet里面已经介绍很清楚了,你可以认真读读读写过程

使用特权

评论回复
7
M小涛| | 2016-9-19 12:34 | 只看该作者
Thethree 发表于 2016-8-23 09:19
其实这个芯片的datasheet里面已经介绍很清楚了,你可以认真读读读写过程

你好,我想问一下,为什么我读MAX30100的时候,0x06的值是0xfe,而不是0x00;

使用特权

评论回复
8
wahahaheihei| | 2016-9-19 22:44 | 只看该作者
读写方法是否正确呢

使用特权

评论回复
9
kk118a| | 2016-9-19 22:47 | 只看该作者
我的都没读出来,请楼主分享一下读取各个数据操作

使用特权

评论回复
10
空心杯| | 2016-10-30 17:52 | 只看该作者
qq709631261 发表于 2016-8-21 09:36
AD是几乎一直递减的 没有波动

楼主请问你的基本读写完成了吗?

使用特权

评论回复
11
空心杯| | 2016-10-30 17:54 | 只看该作者
M小涛 发表于 2016-9-19 12:34
你好,我想问一下,为什么我读MAX30100的时候,0x06的值是0xfe,而不是0x00;

哥们你的基本读写完成了吗?我读写搞了两星期了,老师给的任务半天没搞完

使用特权

评论回复
12
984335200| | 2017-1-1 17:11 | 只看该作者
您好,请问你的测心率血氧做出来没?问问传感器上那个RD  IRD引脚连哪里呢?有没有中文手册呢?发我一个。谢谢大哥。984335200@qq.com

使用特权

评论回复
13
984335200| | 2017-1-1 17:12 | 只看该作者
空心杯 发表于 2016-10-30 17:54
哥们你的基本读写完成了吗?我读写搞了两星期了,老师给的任务半天没搞完 ...

您好,请问你的测心率血氧做出来没?问问传感器上那个RD  IRD引脚连哪里呢?有没有中文手册呢?发我一个。谢谢大哥。984335200@qq.com

使用特权

评论回复
14
M小涛| | 2017-2-21 09:39 | 只看该作者
前几天弄了一下,发现原来的时序有点问题,现在可以读出0x06的数据。但是按照使用说明书上的流程读取ad转换数据,读不出来

使用特权

评论回复
15
zhuomuniao110| | 2017-2-21 19:38 | 只看该作者
//RCWL-0530模块与51接口连接:

// 1:VCC --〉 1.8V-5.5V电源

// 2:SCL --〉 P3.5

// 3:SDA --〉 P3.7

// 4:INT --〉 NC

// 5:IRD --〉 NC

// 6:RD --〉 NC

// 7:GND --〉 地

//-------------------------------------------------------------------------------------//

# include <reg52.h>

# include <stdio.h>

# include <intrins.h>

//定义IIC接口

sbit IIC_SCL =P3^5; //IIC的SCL

sbit IIC_SDA =P3^7; //IIC的SDA

bit IIC_ACK; //IIC的ACK

int rda; //IIC读出

//-------------------------------------------------------------------------------------//

//函数: delayms()

//功能: 延时程序

//-------------------------------------------------------------------------------------//

void delayms(unsigned int ms)

{

unsigned char i=100,j;

for(;ms;ms--)

{

while(--i)

{

j=10;

while(--j);

}

}

}

//-------------------------------------------------------------------------------------//

//函数: void iic_start();

//功能: I2C总线开始

//-------------------------------------------------------------------------------------//

// SCL --- --- ___

// SDA --- ___ ___

void iic_start()

{

IIC_SDA=1;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_nop_();

IIC_SDA=0;

_nop_();

_nop_();

IIC_SCL=0;

_nop_();

_nop_();

}

//-------------------------------------------------------------------------------------//

//函数: void iic_stop();

//功能: I2C总线结束

//需定义:

//-------------------------------------------------------------------------------------//

// SCL ___ --- ---

// SDA ___ ___ ---

void iic_stop()

{

IIC_SCL=0;

_nop_();

_nop_();

IIC_SDA=0;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_nop_();

IIC_SDA=1;

_nop_();

_nop_();

}

//-------------------------------------------------------------------------------------//

//函数: void iic_sendbyte(unsigned char c);

//功能: 发送 8_BIT 数据

//-------------------------------------------------------------------------------------//

void iic_sendbyte(unsigned char c)

{

unsigned char bitcnt;

for(bitcnt=0;bitcnt<8;bitcnt++)

{

if((c<<bitcnt)&0x80)

IIC_SDA=1;

else

IIC_SDA=0;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_nop_();

IIC_SCL=0;

}

_nop_();

_nop_();

IIC_SDA=1;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_

nop_();

if(IIC_SDA==0)

IIC_ACK=0;

else

IIC_ACK=1;

IIC_SCL=0;

_nop_();

_nop_();

}

//-------------------------------------------------------------------------------------//

//函数: int iic_rcvbyte_nack();

//功能: 接收 8_BIT 数据 最后ack信号

//-------------------------------------------------------------------------------------//

int iic_rcvbyte_nack()

{

unsigned char retc;

unsigned char bitcnt;

retc=0;

IIC_SDA=1;

for(bitcnt=0;bitcnt<8;bitcnt++)

{

_nop_();

_nop_();

IIC_SCL=0;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_nop_();

retc=retc<<1;

if(IIC_SDA==1)

retc=retc+1;

_nop_();

_nop_();

}

//给出NACK信号

_nop_();

_nop_();

IIC_SCL=0;

_nop_();

_nop_();

IIC_SDA=1;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_nop_();

IIC_SCL=0;

_nop_();

_nop_();

return(retc);

}

//-------------------------------------------------------------------------------------//

//函数: int iic_rcvbyte_ack();

//功能: 接收 8_BIT 数据 最后ack信号

//-------------------------------------------------------------------------------------//

int iic_rcvbyte_ack()

{

unsigned char retc;

unsigned char bitcnt;

retc=0;

IIC_SDA=1;

for(bitcnt=0;bitcnt<8;bitcnt++)

{

_nop_();

_nop_();

IIC_SCL=0;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_nop_();

retc=retc<<1;

if(IIC_SDA==1)

retc=retc+1;

_nop_();

_nop_();

}

//给出ACK信号

_nop_();

_nop_();

IIC_SCL=0;

_nop_();

_nop_();

IIC_SDA=0;

_nop_();

_nop_();

IIC_SCL=1;

_nop_();

_nop_();

IIC_SCL=0;

_nop_();

_nop_();

return(retc);

}

//-------------------------------------------------------------------------------------//

//函数: wr_max30100_one_data()

//功能: 写一位max30100数据

//address: 芯片从地址

//saddress: 写寄存器地址

//w_data: 待写数据

//-------------------------------------------------------------------------------------//

void wr_max30100_one_data(int address,int saddress,int w_data )

{

_nop_();

iic_start();

_nop_();

iic_sendbyte(address);

_nop_();

iic_sendbyte(saddress);

_nop_();

iic_sendbyte(w_data);

_nop_();

iic_stop();

_nop_();

}

//-------------------------------------------------------------------------------------//

//函数: rd_max30100_one_data()

//功能: 读一位max30100数据

//address: 芯片从地址

//saddress: 读寄存器地址

//rda: 读出的数据

//-------------------------------------------------------------------------------------//

void rd_max30100_one_data(int address,int saddress)

{

iic_start();

_nop_();

iic_sendbyte(address);

_nop_();

iic_sendbyte(saddress);

_nop_();

address=address+1;

_nop_();

iic_start();

_nop_();

iic_sendbyte(address);

_nop_();

rda=iic_rcvbyte_nack();

_nop_();

iic_stop();

}

//-------------------------------------------------------------------------------------//

//函数: 主程序

//功能: 读max30100内部温度

//--------------------------------------------------------

-----------------------------//

main()

{

double temp,temp1,temp2;

//temp 测量温度

//temp1 30100整数部分温度

//temp2 30100小数部分温度

TMOD=0x21;

SCON=0x50;

TH1=0xFD;

TL1=0xFD;

TR1=1;

TI=1;

//设置51的波特率为 9600 N 8 1

//51主频为11.0592MHz

while(1)

{

wr_max30100_one_data(0xae,0x06,0x0a); // 0X06地址B3位TEMP_EN置1

delayms(20); // 等待温度转换完成,不等待,读出数据有误

rd_max30100_one_data(0xae,0x16); // 读出温度信号

printf("temp1=%d\n",rda); // 串口显示

temp1=rda;

rd_max30100_one_data(0xae,0x17); // 读出温度小数部分数据

printf("temp2=%d\n",rda); // 串口显示

temp2=rda;

temp=temp1+(temp2/100);

printf("temp=%.2f\n",temp); // 串口显示

rd_max30100_one_data(0xae,0xff); // 读出芯片ID

printf("MAX30100 ID =%d\n",rda); // 串口显示

delayms(100);

}

}

使用特权

评论回复
16
zhuomuniao110| | 2017-2-21 19:39 | 只看该作者
楼主试试上面的例程,应该能满足你的需求。

使用特权

评论回复
17
zhuomuniao110| | 2017-2-21 19:41 | 只看该作者
18
换代的| | 2018-7-2 15:42 | 只看该作者
有没有心率的代码

使用特权

评论回复
19
yiyigirl2014| | 2018-7-4 15:28 | 只看该作者
没用过,测的数据怎么换算?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

0

粉丝