RTL8762DW测试ICM 20618六轴传感器

本实验是I2C测试模式,没有配置初始化就简单的测试6轴数据。
1、 CS接高电平。
2、 要看看板子上的AD0脚

经过测试AD0为低电平。
AD0=0		1101000
AD0=1		1101001

I2C配置代码

    //===========================================================
    Pad_Config(I2C0_SCL_PIN, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_UP, PAD_OUT_ENABLE, PAD_OUT_HIGH);
    Pad_Config(I2C0_SDA_PIN, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_UP, PAD_OUT_ENABLE, PAD_OUT_HIGH);

    Pinmux_Config(I2C0_SCL_PIN, I2C0_CLK);
    Pinmux_Config(I2C0_SDA_PIN, I2C0_DAT);


    //============================================================
    RCC_PeriphClockCmd(APBPeriph_I2C0, APBPeriph_I2C0_CLOCK, ENABLE);

    I2C_InitTypeDef  I2C_InitStruct;
    I2C_StructInit(&I2C_InitStruct);

    I2C_InitStruct.I2C_ClockSpeed    = 10000;
    I2C_InitStruct.I2C_DeviveMode    = I2C_DeviveMode_Master;
    I2C_InitStruct.I2C_AddressMode   = I2C_AddressMode_7BIT;
    I2C_InitStruct.I2C_SlaveAddress  = ICM_20618_ADDR;
    I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;

    I2C_Init(I2C0, &I2C_InitStruct);
    I2C_Cmd(I2C0, ENABLE);

配置ICM20618

    uint8_t i2c_writeBuf[16] = {0x00, 0x00, 0x66, 0x68, 0x77, 0x88};
    uint8_t i2c_readBuf[16] = {0};

    i2c_writeBuf[0] = ICM20618_WHO_AM_I;
    I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
    DBG_DIRECT("icm 20618 who am i :0x%x",i2c_readBuf[0]);



    i2c_writeBuf[0] = ICM20618_REG_BANK_SEL;
    I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
    DBG_DIRECT("ICM20618_REG_BANK_SEL:0x%x",i2c_readBuf[0]);

    i2c_writeBuf[0] = ICM20618_LP_CONFIG;
    i2c_writeBuf[1] = 0xff;
    I2C_MasterWrite(I2C0, i2c_writeBuf, 2);


    i2c_writeBuf[0] = ICM20618_LP_CONFIG;
    I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
    DBG_DIRECT("ICM20618_LP_CONFIG:0x%x",i2c_readBuf[0]);


    i2c_writeBuf[0] = ICM20618_PWR_MGMT_1;
    i2c_writeBuf[1] = 0x01;
    I2C_MasterWrite(I2C0, i2c_writeBuf, 2);


    i2c_writeBuf[0] = ICM20618_PWR_MGMT_1;
    I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
    DBG_DIRECT("ICM20618_PWR_MGMT_1:0x%x",i2c_readBuf[0]);

测试代码

    int16_t xaccel,yaccel,zaccel;
    int16_t xgyros,ygyros,zgyros;
#define DELAY_TIME   (100000*100)
    while(1)
    {

#if 1
        //x=============================================================
        i2c_writeBuf[0] = ACCEL_XOUT_H;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        xaccel = (i2c_readBuf[0]<<8);

        i2c_writeBuf[0] = ACCEL_XOUT_L;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        xaccel |= i2c_readBuf[0];




        //y=============================================================
        i2c_writeBuf[0] = ACCEL_YOUT_H;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        yaccel = (i2c_readBuf[0]<<8);

        i2c_writeBuf[0] = ACCEL_YOUT_L;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        yaccel |= i2c_readBuf[0];




        //z=============================================================
        i2c_writeBuf[0] = ACCEL_ZOUT_H;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        zaccel = (i2c_readBuf[0]<<8);

        i2c_writeBuf[0] = ACCEL_ZOUT_L;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        zaccel |= i2c_readBuf[0];



        //x g=============================================================
        i2c_writeBuf[0] = GYRO_XOUT_H;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        xgyros = (i2c_readBuf[0]<<8);


        i2c_writeBuf[0] = GYRO_XOUT_L;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        xgyros |= i2c_readBuf[0];


        //y g=============================================================
        i2c_writeBuf[0] = GYRO_YOUT_H;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        ygyros = (i2c_readBuf[0]<<8);


        i2c_writeBuf[0] = GYRO_YOUT_L;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        ygyros |= i2c_readBuf[0];


        //z g=============================================================
        i2c_writeBuf[0] = GYRO_ZOUT_H;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        zgyros = (i2c_readBuf[0]<<8);


        i2c_writeBuf[0] = GYRO_ZOUT_L;
        I2C_RepeatRead(I2C0, i2c_writeBuf, 1, i2c_readBuf, 1);
        zgyros |= i2c_readBuf[0];
        DBG_DIRECT("accel:%d-%d-%d====gyros:%d-%d-%d",xaccel,yaccel,zaccel,xgyros,ygyros,zgyros);


        for (uint32_t i = 0; i < DELAY_TIME; i++);
#endif
    }

配置文件

#define ICM20618_WHO_AM_I			0x00

#define ICM20618_LP_CONFIG			0x05

#define ICM20618_PWR_MGMT_1 		0x06


#define ICM20618_REG_BANK_SEL		0x7F


#define ACCEL_XOUT_H				0X2D
#define ACCEL_XOUT_L				0X2E

#define ACCEL_YOUT_H				0X2F
#define ACCEL_YOUT_L				0X30

#define ACCEL_ZOUT_H				0X31
#define ACCEL_ZOUT_L				0X32

#define GYRO_XOUT_H					0X33
#define GYRO_XOUT_L					0X34

#define GYRO_YOUT_H					0X35
#define GYRO_YOUT_L					0X36

#define GYRO_ZOUT_H					0X37
#define GYRO_ZOUT_L					0X38
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
现代人几乎人手都一大串的钥匙, 家里门锁钥匙、汽车钥匙、机车钥匙、防盗锁钥匙…等, 非常的重!!如果不小心遗失了, 重打钥匙也是一件很累人的事。蓝芽E-Lock应用, 利用现在人手一支的手机, 搭配APP与蓝芽遥控器方式来取代传统钥匙锁。减少了带一大串钥匙的麻烦, 遗失状况发生时, 再透过手机APP的使用者认证就可回复继续使用。 规格及功能 操作:下载APP软体, 搜寻柜锁并设定名称&密码, 无限授权其他人使用 增加遥控器控制功能,每组柜锁可以选配“16只遥控器(需配对)” 纪录:可纪录开关锁次数达2048笔 耗电量:约80uA 安全性:三道解密程序 忘记密码:锁内部有一颗还原KEY, 用来回复原厂设定 具有通讯传输资料加密解密,密码为16 bytes长度每byte资料范围为0x00~0xFF 1组主管理密码可以管理4组副使用者密码,副使用者不可更改主管理者密码与自身密码,做到完全防盗与超高安全性 ► 产品实体图 ► 方案方块图 ► 核心技术优势 CPU处理器 - ARM Cortex-M0@53MHz 更大的暂存容量 - 64KByte RAM - 256kByte Embedded Flash - 384kByte ROM - 2kByte Efuse 高速的传输能力与更好的RF敏感度 - Throughput:Up to 75KB/s - RX Sensitivity : -95dBm@3V 更小的包装与更低的功耗 - Chip Size : 5 x 5 mm - Power Consumption : Less than 1uA 更多的GPIOs(x16)设置 - Key Scan / IR (TX&RX) / Quad Dec / RTC / LPCOMP - I2C x 2 / SPI x 2 / Timer x 6 - ADC / GDMA / WDT - UART (Data、HCI、Log) 蓝牙规范 - Support BlueTooth 4.2 Low Energy ► 方案规格 蓝牙标准(Bluetooth Standard) - V4.2 LE Specifcation 调变方式(Modulation Scheme) - GFSK、MSK 资料速率(Data Rate) - 1Mbps、2Mbps 资料加密(Data Encryption) - AES 128 bit 射频频率范围(RF Frequency Range) - 2.402 ~ 2.480 GHz 功耗(Power Consumption) - RX : 17.5 mA - TX : 18.3 mA(0dbm) - 4us Wake-Up : 270uA - Sleep Timer On : 1uA - External Interrupts : 0.5uA 温度(Temperature) - Storage : -30 ~ 85°C - Operating : 0 ~ 70°C 方案来源于大大通。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值