嗨,我正在尝试从SI705读取温度。当我使用此PDF中描述的测量过程读取固件版时,我已经测试了传感器。https://www.silabs.com/documents/public/data-sheets/si7050-1-3-4-5-a20.pdf.)第16页。但是,当我尝试阅读温度时,我的输出结束了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,data,2);
degrees = convert_to_uint16(数据);
度= convert_to_celsius(度);
返回度;
我正在使用的代码读取字节是以下内容:
void 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; i send_i2c_command(0x0100&0x3ff);//将R / W位设置为1(读取访问)MSB if(!(++ i%24)){//fifo是32位 wait_until_i2c_fifo_is_empty();//等到TX FIFO是空的 wait_until_no_master_actity();//等到没有主活动 for(Uint8_t J = 0; J <24; J ++){ //将FIFO内容存储在RAM中 rd_data [index ++] =(0xff&getword16(i2c_data_cmd_reg));//获得收到的字节 } REG_ADDRESS + = 24 /(I2C_CFG_ENV.REGISTER_WIDTH + 1); //计算下一个寄存器读出 user_i2c_send_address(reg_address);//重新启动读取 } } wait_until_i2c_fifo_is_empty();//等到I2C TX FIFO空 wait_until_no_master_actity(); 而(索引 rd_data [index ++] =(0xff&getword16(i2c_data_cmd_reg));//获得收到的字节 } wait_until_i2c_fifo_is_empty();//等到TX FIFO是空的 wait_until_no_master_actity();//等到没有主活动}
kaptajnen,
非常感谢您创建第一个论坛线程并发布您的问题。如果您正在启动新设计,我们建议从DA14585开始 - SDK很有改善,我们有很多软件示例和更详细的文档,即入门将非常有帮助。此外,还有DA14585还有软件路线图支持我们的下一代设备,该设备于11月5日宣布,请查看DA14585 / 6支持口,看看我们的最新SDK6:
https://www.dialog-seminile.com/produ雷电竞官网登录cts/connectivity/bluetooth-low-energy/smartbond-da14585-and-da14586.
DA14585有两个I2C软件示例到我们的支持网站上:
SW示例:读出I2C加速度计并发送通知数据
SW示例:DA14585 / 586与I2C上的Mcube加速度计接口
谢谢,PM_DIALOG.