因为工作室需要做一个项目,这个项目要求检测到心率和脉搏,所以我就到网上买了一个检测模块,今天研究了一天,终于成功出来了数据。模块大致长这样:
它总共有8个接口实际上只需要用到四个(当初我接6个搞了半天没有任何用,然后用arduino实验才发现只需要四个)
先来做arduino的测试,我们可以到github上下载源程序,然后就直接按照程序说明接在arduino开发板上。(建议VIN接5v SCL可以接SCL或者A4 SDA接SDA或者A5) 注意:如果开发板上有SCL和SDA的接口话,可以直接插在这个上面,我尝试了A4和A5,发现插上去好像没有用
如果一切OK的话,就可以出现下面的情况
这里我用的是arduino的LEONARDO开发板,因为内存好像太小了,测试血氧浓度的时候没有反应,所以我就打算用stm32来进行试验。(之前是用stm32的精英板测试的,不过我接了六个管脚,而且因为开发板的原因,不得不更改IO口,测试了很久还是没有任何用,所以就用arduino开发的)
arduino测试成功后,我就打算到stm32上在试一次,这次我使用了stm32的最小系统开发板,所以就不需要更改IO口,同样我也只接了四个管脚,然后烧录程序后,终于成功了!
今天又测试了一下午,终于可以正常修改IO口了,需要修改3个地方(有一个地方非常隐蔽,其实是我才学stm32没多久)。
第一个地方是修改myiic.c中的文件:
第二个是修改myicc.h中的 文件:
这里要修改两个地方:
第一个是IO口方向设置那里,如果你的管脚在0-7内那么就改成CRL(全部),如果是8-15的话就改成CRH,0-7的需要从右往左数n个修改对应的CRL的对应位。比如我是PB2 那么就是CRL&=0xfffff0ff CRL|=0x00000400 。那个7也是和上面对应的位是一样的。
下面那个IO口操作函数只需要修改成自己定义的IO口即可。
最后说一下CRL和CRH是端口的配置寄存器。
这里设置为4就是0100 就是浮空输入模式和输入模式
设置为7就是0111 就是输出模式(50MHZ)和通用开漏输出模式