[AT32F423]【AT-START-F423测评】+ I2C接口测试加速度传感器ADXL345

本次主要使用硬件I2C接口,通过读取加速度传感器ADXL345测试I2C的使用方法。
使用PB8和PB92个端口。
首先初始化I2C接口

复制

void drv_i2c_gpio_init( void )

{

    gpio_init_type gpio_initstructure;

    

    /* i2c periph clock enable */

    crm_periph_clock_enable(CRM_I2C1_PERIPH_CLOCK, TRUE);

    crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);

    

    /* configure i2c pins: SCL=PB8,SDA=PB9 */

    gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

    gpio_initstructure.gpio_mode           = GPIO_MODE_MUX;

    gpio_initstructure.gpio_out_type       = GPIO_OUTPUT_OPEN_DRAIN;

    gpio_initstructure.gpio_pull           = GPIO_PULL_UP;

    gpio_initstructure.gpio_pins           = GPIO_PINS_8 | GPIO_PINS_9;

    gpio_init(GPIOB, &gpio_initstructure);

    

    /* gpio configuration */

    gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE8, GPIO_MUX_4);

    gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE9, GPIO_MUX_4);

    

    hi2cx.i2cx = I2C1;

    i2c_reset(I2C1);

    /* config i2c */

    i2c_init(I2C1, 0x0F, I2Cx_CLKCTRL);

    i2c_own_address1_set(I2C1, I2C_ADDRESS_MODE_7BIT, 0XB0);

    i2c_enable(I2C1,TRUE);

}



I2C接口驱动,使用了SDK中的i2c_application.c和i2c_application.h。

复制

uint8_t I2C_WriteByte(uint8_t index,uint8_t dev_addr, uint8_t addr,uint8_t Byte)

{

    uint8_t reVal;

    reVal = i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, dev_addr<<1, addr, &Byte, 1, 10000);

    return reVal;

}



uint8_t I2C_ReadByte(uint8_t index,uint8_t dev_addr, uint8_t addr)

{

    uint8_t reVal;

    i2c_memory_read(&hi2cx, I2C_MEM_ADDR_WIDIH_8, dev_addr<<1, addr, &reVal, 1, 10000);

    return reVal;

}





uint8_t I2C_PageWrite(uint8_t index,uint8_t dev_addr, uint8_t addr,uint8_t *str,uint32_t num)

{

    uint8_t reVal;

    reVal = i2c_memory_write(&hi2cx, I2C_MEM_ADDR_WIDIH_8, dev_addr<<1, addr, str, num, 10000);

    return reVal;

}



uint8_t I2C_PageRead(uint8_t index,uint8_t dev_addr, uint8_t addr,uint8_t *str,uint32_t num)

{

    uint8_t reVal;

    reVal = i2c_memory_read(&hi2cx, I2C_MEM_ADDR_WIDIH_8, dev_addr<<1, addr, str, num, 10000);

    return reVal;

}


 



下面是ADXL345的驱动
 


测试加速度读取数据。
 




在lcd屏幕上显示加速度数值。
 



 



 


 

---------------------
作者:WoodData
链接:https://bbs.21ic.com/icview-3339944-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值