|
|
我们在研发过程中分析,此系类的陀螺仪芯片在和**模块例如FLASH共用SPI总线或者I2C总线的过程中,就算CS脚拉搞使其无法工作,依然有可能对总线产生影响 导致总线上的**芯片无法工作,所以在使用 ICM42670等同系类芯片 要不不要共用,实在需要共用,那需要先把gsersen 芯片 先初始化,方法是 先读取ID,然后设置电源寄存器 使其休眠 ,然后才能让其处在一个稳定状态不影响总线,以下是ICM42607 的一个简单初始化例程:
/**
* @brief 共用SPI 总线 ICM42607 首先要配置一下 Gsenser 不然可能影响 FLASH SPI
*
*/
void gsenser_init_config(void)
{
GPIO_SetPins(GPIO_PORT_C, GPIO_PIN_05); // FLASH power en
GPIO_ResetPins(GPIO_PORT_C, GPIO_PIN_04); // gsenser power en
GPIO_ResetPins(GPIO_PORT_D, GPIO_PIN_08); //gsenser CS --有效
GPIO_SetPins(GPIO_PORT_A, GPIO_PIN_15); // FLASH cs--失效
delay1ms(1000);
char buf[10]={0};
uint8_t id;
uint8_t i=0;
SWDT_FeedDog();
while (1)
{
GPIO_ResetPins(GPIO_PORT_D, GPIO_PIN_08); // G CS
id=bsp_spibyte(0x75|0x80);
id=bsp_spibyte(0);
sprintf(buf,"ID1=%X",id);
tty_tran_buf(buf, 10);
GPIO_SetPins(GPIO_PORT_D, GPIO_PIN_08); // G CS
delay1ms(1000);
if(id==0x61)
{
GPIO_ResetPins(GPIO_PORT_D, GPIO_PIN_08); // G CS
// bsp_spibyte(0x06);
// bsp_spibyte(0x01);
bsp_spibyte(0x1f);
bsp_spibyte(0x1f);
// bsp_spibyte(0x2c);
// bsp_spibyte(0x08);
// bsp_spibyte(0x1f);
// bsp_spibyte(0x06);
// bsp_spibyte(0x21);
// bsp_spibyte(0x68);
break;
}
i++;
if(i>3)
{
break;
}
}
SWDT_FeedDog();
GPIO_SetPins(GPIO_PORT_D, GPIO_PIN_08); // G CS
GPIO_ResetPins(GPIO_PORT_A, GPIO_PIN_15); // FLASH
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|