Cypress技术william hill官网
直播中

王龙

7年用户 148经验值
私信 关注
[问答]

I2C主机最后一个字节是裸的该怎么办?

你好,
我在I2C中遇到了一些麻烦。I2CJI2CMASTESTESTART()返回I2CYI2CYMSTRYRYLLBJNAK。根据数据表的描述,这个常数表示“最后一个字节是裸的”。我不知道该怎么解决这个问题。你能帮助我吗?
我是4个PSoC I2C主和奴隶是max30100(这里是数据表的链接,https://www.maximintegrated.com/ ... rface/max30100.html
这里是我试图读取温度值的代码:
静态uint16 temp1,temp2;静态双温度= 30;//模式配置i2c_i2cmastersendstart(0xae,i2c_i2c_write_xfer_mode);/ / max30100write地址0xae i2c_i2cmasterwritebyte(0x06);/ /模式配置的登记地址是0x06 i2c_i2cmasterwritebyte(0x0a);//我写i2c_i2cmastersendstop()价值;/ /等一分钟CyDelay(20);// readintegervalue温度i2c_i2cmastersendstart(0xae,i2c_i2c_write_xfer_mode);i2c_i2cmasterwritebyte(0x16);//整型值的reg_addris 0x16 i2c_i2cmastersendres馅饼(0xaf,i2c_i2c_read_xfer_mode);/ / max30100readaddressis0xaf temp1 = i2c_i2cmasterreadbyte(i2c_i2c_nak_data);/ / readintegervalue i2c_i2cmastersendstop();
/ /读分数值温度i2c_i2cmastersendstart(0xae,i2c_i2c_write_xfer_mode);i2c_i2cmasterwritebyte(0x17);/ /分数价值的reg_addris0x17 i2c_i2cmastersendrestart(0xaf,i2c_i2c_read_xfer_mode);temp2 = i2c_i2cmasterreadbyte(i2c_i2c_nak_data);i2c_i2cmastersendstimp=TEMP1+(TEMP2/100);
CyDelay(100);
任何指导将不胜感激!谢谢您。

回帖(13)

王琳

2019-11-5 08:31:29
欢迎来到william hill官网 。
你的奴隶地址错了。I2C使用7位地址和一个指示读写访问的附加位。该位自动插入。
所以你的地址应该读0x57
请记住,大多数API(除了读取字节之外)都返回一个状态字节,当非零指示错误条件时。我总是建议至少在调试时检查这些值。
鲍勃
举报

王龙

2019-11-5 08:47:39
引用: ncmza 发表于 2019-11-5 17:03
欢迎来到william hill官网 。
你的奴隶地址错了。I2C使用7位地址和一个指示读写访问的附加位。该位自动插入。
所以你的地址应该读0x57

嗨,鲍伯
感谢您的建议,MyMeST设备可以读取温度值。
举报

王琳

2019-11-5 08:56:46
王,随时欢迎你。
鲍勃
举报

王龙

2019-11-5 09:08:40
嗨,鲍伯,
我面临一个新问题:对不能心值的采样值是从max30100的FIFO正确读取。你能给我一些建议吗?
期待您的回复。
最好的,王
以下是我的代码:
霉菌属
1.1 K
举报

更多回帖

发帖
×
20
完善资料,
赚取积分