AT32 SC7A20H模块驱动例程代码

采用IIC方式与SC7A20H模块通信

底层驱动:

void SL_SC7A20H_Driver_Init(void)
{
    uint8_t i=0;
    uint8_t id1=0;
    uint8_t id2=0;

    i2c_memory_read(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x31, 0x0F, &id1, 1, 0xFFFFFFF);
    printf("0x%X\n",id1);
    i2c_memory_read(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x31, 0x70, &id2, 1, 0xFFFFFFF);
    printf("0x%X\n",id2);


    if ((id1 != 0x11) || (id2 != 0x28))

    {

       printf("error\n");

    }

        uint8_t t1 = 0x47;
        i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x30, 0x20, &t1, 1, 0xFFFFFFF);
        //50Hz+正常模式xyz使能

        i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x30, 0x21, 0X00, 1, 0xFFFFFFF);
        //关闭滤波器,手册上面没有滤波器截止频率设置说明,开启后无法测量静止状态下的重力加            速度

        i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x30, 0x22, 0X00, 1, 0xFFFFFFF);
         //关闭中断
        uint8_t t2 = 0x88;
        i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x30, 0x23, &t2, 1, 0xFFFFFFF);
         //读取完成再更新,小端模式,、2g+正常模式,高精度模式
}

unsigned char SL_SC7A20H_Read_FIFO_Buf(signed short *x_buf,signed short *y_buf,signed short *z_buf)
{
    unsigned char  i=0;
    unsigned char  sc7a20_data[7];
    unsigned char  SL_FIFO_ACCEL_NUM;
    uint8_t t3=0x4F;

    i2c_memory_read(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x31, 0x2F,  &SL_FIFO_ACCEL_NUM, 1, 0xFFFFFFF);


    if (SL_FIFO_ACCEL_NUM & 0x40)
        SL_FIFO_ACCEL_NUM = 32;
    else
        SL_FIFO_ACCEL_NUM = SL_FIFO_ACCEL_NUM&0x1f;


    //for(i=0;i<SL_FIFO_ACCEL_NUM;i++)
    for(i=0;i<3;i++)
    {
        i2c_memory_read(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x31, 0xA8,  &sc7a20_data[1], 6, 0xFFFFFFF);


        x_buf[i] =(signed short int)(((unsigned char)sc7a20_data[2] * 256 ) + (unsigned char)sc7a20_data[1]);
        y_buf[i] =(signed short int)(((unsigned char)sc7a20_data[4] * 256 ) + (unsigned char)sc7a20_data[3]);
        z_buf[i] =(signed short int)(((unsigned char)sc7a20_data[6] * 256 ) + (unsigned char)sc7a20_data[5]);

         printf("x_buf[%d]: 0x%04X, y_buf[%d]: 0x%04X, z_buf[%d]: 0x%04X\n", i, (unsigned short)x_buf[i], i, (unsigned short)y_buf[i], i, (unsigned short)z_buf[i]);
    }


  i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x30, 0X2E, 0X00, 1, 0xFFFFFFF);
  i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, 0x30, 0X2E, &t3, 1, 0xFFFFFFF);

  return SL_FIFO_ACCEL_NUM;
}
 

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尊敬的领导, 在试用期内,我将专注于以下三个任务: 1. SC7A20H传感器的评估 SC7A20H传感器是一种用于测量温度和湿度的传感器。我将通过以下步骤进行评估: - 研究传感器规格书,了解其技术参数和性能特点。 - 设计并进行实验,测试传感器在不同温度、湿度条件下的准确性和稳定性。 - 撰写评估报告,总结评估结果并提出改进建议。 2. JIG901曲柄测试平台开发 JIG901曲柄测试平台是一种用于测试曲轴的设备。我将参与平台的开发工作,具体任务如下: - 研究曲轴测试的需求和技术要求,设计测试平台的结构和功能。 - 根据设计方案制作平台的零部件,并组装成完整的设备。 - 进行测试,调试设备并记录测试结果。 - 撰写测试报告,总结测试结果并提出改进建议。 3. 划船机平台的对接 公司正在开发一款划船机平台,我将参与平台的对接工作。具体任务如下: - 研究划船机平台的技术要求,了解其接口和通信协议。 - 按照要求,开发与划船机平台进行通信的程序和接口。 - 进行测试,验证程序和接口的稳定性和可靠性。 - 撰写对接报告,总结对接结果并提出改进建议。 以上是我在试用期内的工作内容,我会全力以赴完成任务,并不断提高自己的工作能力。如果您有任何问题或建议,请随时告诉我,我会尽快作出调整。谢谢!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值