你好,
我正在尝试在DA14681开发套件中与BMI160进行沟通。
我正在使用peripherals_demo示例并尝试调用bmi160_get_chip_id来测试连接。但是,它只是返回0xFF,而不是D1的实际芯片ID。
dev = ad_spi_open(bmi160);
UINT8_T WBUF [2] = {0};
ad_spi_transact(dev,wbuf,1,reg_data,1);
if(reg_data [0] == 0xd1)
{
REG_DATA [1] = 0xA;
}
别的
{
REG_DATA [2] = 0x05;
}
ad_spi_close(dev);
引脚配置如下:
hw_gpio_pinconfig(hw_gpio_port_3,hw_gpio_pin_2,output_push_pull,spi_clk,true),
hw_gpio_pinconfig(hw_gpio_port_3,hw_gpio_pin_0,output_push_pull,spi_do,true),
hw_gpio_pinconfig(hw_gpio_port_3,hw_gpio_pin_1,输入,spi_di,true),
hw_gpio_pinconfig(hw_gpio_port_3,hw_gpio_pin_3,output_push_pull,spi_en,true),
SPI_SLAVE_DEVICE(SPI1,BMI160,HW_GPIO_PORT_3,HW_GPIO_PIN_3,
hw_spi_word_8bit,hw_spi_pol_high,hw_spi_pha_mode_1,
hw_spi_freq_div_2,hw_dma_channel_0);
谢谢,
萨姆
设备:
嗨Imaginesam,
我没有看到您附加的代码上的任何问题。您正在使用的Pro套件子板具有QFN或CSP包?由于CSP封装上不可用端口3。同时尝试使用逻辑分析仪测试,检查680中是否有信号,以验证代码是否切换了引脚。
谢谢mt_dialog.
嗨mt_dialog,
包装是QFN(我相信DA14681可穿戴套件只有这个包装?)。
读取和写入功能似乎在提供的可穿戴设备固件(DA14681_WRBL_V_1.150.6)中,但在更轻量级的项目中使用相同的引脚时,它无法工作。是否有可能有其他必需的配置可以使其工作?
真挚地,
萨姆
嗨Imaginesam,
是的,疲惫不堪的QFN包装(你没有提到你使用的套件)。
在我拥有的那个数据表上的BMI160 P88的数据表中,似乎传感器要求当您即将读取时的字节序列的第一位应该是'1',所以实际上你应该从中发送什么68x是0x80而不是0x00,如果您在WBUF中放置0x80而不是0x00,您将获得BMI回复的ID。
谢谢mt_dialog.
mt_dialog,
对不起,这是我的不好,我的意思是在DA14681穿戴开发套件中写下“BMI160”。
当您建议时,我添加了以下行,但它仍然无法正常工作。reg_data.为设备ID返回0。
WBUF [0] = WBUF [0] |0x80;
我也尝试了使用这种方法,这就是它在可穿戴固件中执行的方法,它不起作用:
UINT8_T REG_ADDR = 0x00;
UINT8_T REG_DATA [10] = {0};
spi_transfer_data转移[2] = {
{reg_addr,null,1},
{null,reg_data,cnt}
};
REG_ADDR = REG_ADDR |0x80;
ad_spi_complex_transact(dev,transfers,2);
void ad_spi_transact(spi_device dev,const uint8_t * wbuf,size_t wlen,uint8_t * rbuf,size_t rlen);
谢谢,
萨姆
嗨Imaginesam,
使用BLE_ADV examples在可穿戴板上进行测试,使用适当的MODS抵消,以便使用以下#defines启用SPI硬件和SPI适配器:
#define dg_configspi_adapter
#define dg_configuse_hw_spi.
使用以下说明,我可以在调试模式下看到,数据从传感器发送回来是一个字节209 DEC或0xD1,指示BMI160的ID。
bmi160_dev = ad_spi_open(bmi160);
data_wbuf [0] | = 0x80;
ad_spi_transact(bmi160_dev,data_wbuf,1,reg_data,1);
谢谢mt_dialog.
嗨mt_dialog.
谢谢,使用ble_adv example我能够让它像你一样工作!我有一个实际的数据流进入。
但是否有任何想法为什么它在一个项目中工作而不是其他项目?我试过了ferientals_demo.和pxp_reporter.
SDK可以是一个问题吗?BLE_ADV.在1.0.10 SDK中对我没有工作,这是我对其他项目的用途,但是当我更改为1.0.12 BLE_ADV开始工作时。
真挚地,
萨姆
嗨Imaginesam,
也许你错过了任何配置,外围设备演示是一个非常加载的演示,具有一堆配置和设置,并且可以轻松地错过一些东西,无论如何sdk 1.0.12是SDK的最新版本,我也在测试了相同的代码并使用SDK 1.0.10上的完全相同的设置,并且在BLE_ADV演示中也可以在该SDK上运行。
谢谢mt_dialog.