嗨,我在试着读取Si705的温度。当我使用本pdf中描述的测量过程读取固件版本时,我已经连接到传感器,因为我已经测试过它(https://www.silabs.com/documents/public/data-sheets/Si7050-1-3-4-5-A20.pdf)第16页。然而,当我试图读取温度时,我的输出结果是0,0。现在我的代码是:
uint8命令;
uint8数据[2];
uint16度;
cmd=温度;
用户\ i2c \设置\从机\地址(Si705 \ i2c \地址);
用户i2c多字节读取(命令,数据,2);
度=转换为16(数据);
度=换算成摄氏度(度);
返回度;
我用来读取字节的代码如下:
无效用户i2c多字节读取(uint32 reg地址,uint8 rd数据,uint32 num字节){
用户i2c发送地址(注册地址);
uint32指数=0;
for(uint32\u t i=0;i SEND_I2C_COMMAND(0x0100&0x3FF);//将R/W位设置为1(读访问)MSB 如果(!(++i%24)){//FIFO是32位 WAIT_UNTIL_I2C_FIFO_IS_EMPTY();//等待Tx FIFO为空 WAIT_UNTIL_NO_MASTER_ACTIVITY();//等待,直到没有主活动 对于(uint8\t j=0;j<24;j++){ //将FIFO内容存储在ram中 rd_data[index++]=(0xFF&GetWord16(I2C_data_CMD_REG));//获取接收字节 } 寄存器地址+=24/(i2c\U)_环境寄存器\u宽度+1);//计算下一个要读出的寄存器 user_i2c_send_address(reg_address);//重新开始读取 } } WAIT_UNTIL_I2C_FIFO_IS_EMPTY();//等待I2C Tx FIFO EMPTY 等待_,直到_NO _MASTER _ACTIVITY(); while(索引 rd_data[index++]=(0xFF&GetWord16(I2C_data_CMD_REG));//获取接收字节 } WAIT_UNTIL_I2C_FIFO_IS_EMPTY();//等待Tx FIFO为空 WAIT_UNTIL_NO_MASTER_ACTIVITY();//等待UNTIL NO MASTER ACTIVITY}
嗨,卡普塔伊宁,
非常感谢您创建您的第一个论坛线程和张贴您的问题。如果您要开始一个新的设计,我们建议您从DA14585开始—SDK有了很大的改进,我们有很多软件示例和更详细的文档,这对入门非常有帮助。此外,DA14585还支持11月5日发布的下一代设备的软件路线图,请查看DA14585/6支持端口并查看我们最新的SDK6:
//www.xmece.com/亚博电竞菠菜products/connectivity/bluetooth-low-energy/smartbond-da14585-and-da14586
我们的支持网站上有两个DA14585的I2C软件示例:
软件示例:读取I2C加速计并发送通知数据
软件示例:DA14585/586与I2C上的mCube加速计接口
谢谢,下午好