DA14850与Si705温度传感器通信。

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
kaptajnen
离线
最后看到:1年8个月前
加入:2019-09-19 08:46
DA14850与Si705温度传感器通信。

你好,我正在读取Si705的温度。当我使用本文(pdf)中描述的测量过程阅读固件版本时,我已经连接到传感器,因为我已经测试了它。https://www.silabs.com/documents/public/data-sheets/Si7050-1-3-4-5-A20.pdf16)页面。然而,当我试图读取温度时,我的输出结果是0,0。现在我的代码是这样的:

uint8_t cmd;

uint8_t数据[2];

uint16_t度;

cmd = Temp_H;

user_i2c_set_slave_address (Si705_I2C_ADDRESS);

user_i2c_multi_byte_read (cmd,数据,2);

度= convert_to_uint16(数据);

度= convert_to_celsius(度);

返回度;

我使用的代码读取字节如下:

无效user_i2c_multi_byte_read(uint32_t reg_address, uint8_t *rd_data, uint32_t num_bytes) {

user_i2c_send_address (reg_address);

Uint32_t index = 0;

For (uint32_t I = 0;我< num_bytes;) {

SEND_I2C_COMMAND (0 x0100 & 0 x3ff);//设置R/W位为1(读访问)MSB

如果(!(++i % 24)){//FIFO是32位

WAIT_UNTIL_I2C_FIFO_IS_EMPTY ();//等待Tx FIFO为空

WAIT_UNTIL_NO_MASTER_ACTIVITY ();//等待直到没有主活动

For (uint8_t j = 0;j < 24;j + +) {

//在ram中存储FIFO内容

rd_data[index++] = (0xFF & GetWord16(I2C_DATA_CMD_REG));//接收字节

24 / (i2c_cfg_env reg_address + =。//计算下一个要读出的寄存器

user_i2c_send_address (reg_address);/ /重新启动读

WAIT_UNTIL_I2C_FIFO_IS_EMPTY ();//等待I2C Tx FIFO空

WAIT_UNTIL_NO_MASTER_ACTIVITY ();

而(指数< num_bytes) {

rd_data[index++] = (0xFF & GetWord16(I2C_DATA_CMD_REG));//接收字节

WAIT_UNTIL_I2C_FIFO_IS_EMPTY ();//等待Tx FIFO为空

WAIT_UNTIL_NO_MASTER_ACTIVITY ();//直到没有主活动}

关键词:
设备:
PM_Dialog
离线
最后看到:22小时44分钟前
工作人员
加入:2018-02-08 11:03
嗨kaptajnen,

嗨kaptajnen,

非常感谢您创建您的第一个论坛帖子和张贴您的问题。如果你要开始一个新的设计,我们建议从DA14585开始——SDK有了很大的改进,我们有很多软件示例和更详细的文档,这将对开始非常有帮助。此外,我们的下一代设备DA14585上也有软件路线图支持,这是11月5日宣布的,请检查DA14585/6支持端口,并看看我们最新的SDK6:

//www.wsdof.com/雷电竞官网登录products/connectivity/bluetooth-low-energy/smartbond-da14585-and-da14586

在我们的支持网站上有两个DA14585的I2C软件示例:

SW示例:读取I2C加速度计并发送通知数据

SW示例:DA14585/586接口与mCube加速度计通过I2C

谢谢,PM_Dialog