打印
[AT32F423]

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

[复制链接]
1354|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WoodData|  楼主 | 2023-11-11 18:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本次主要使用硬件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屏幕上显示加速度数值。









代码如下:
游客,如果您要查看本帖隐藏内容请回复


使用特权

评论回复
沙发
MacroKwan| | 2023-11-13 09:35 | 只看该作者
咔咔咔咔咔咔扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩扩

使用特权

评论回复
板凳
单片小菜| | 2023-11-13 17:18 | 只看该作者
这个确实不错,想知道这个三轴传感器多少钱?

使用特权

评论回复
地板
90houyidai| | 2023-11-14 22:50 | 只看该作者
403的I2C还没调出来,明天拿这个试试

使用特权

评论回复
5
cxj503| | 2023-11-20 14:58 | 只看该作者
I2C是个好东西

使用特权

评论回复
6
whp1202| | 2024-1-27 15:39 | 只看该作者
很好

使用特权

评论回复
7
geraldbetty| | 2024-2-2 20:12 | 只看该作者
在AT-START-F423中,可能需要使用SDK提供的i2c_application.c文件来进行初始化。

使用特权

评论回复
8
gygp| | 2024-2-2 20:43 | 只看该作者
可以参考ADXL345的数据手册中的寄存器映射和操作方法。

使用特权

评论回复
9
qiufengsd| | 2024-2-2 21:14 | 只看该作者
设置I2C时钟速度、配置SDA和SCL引脚为I2C通信模式等。

使用特权

评论回复
10
geraldbetty| | 2024-2-2 21:45 | 只看该作者
需要注意ADXL345的电源和地线连接。

使用特权

评论回复
11
liszt99| | 2024-2-2 22:20 | 只看该作者
需要注意ADXL345的寄存器地址

使用特权

评论回复
12
大老师| | 2024-3-9 16:06 | 只看该作者
牛的

使用特权

评论回复
13
lixuewei520| | 2024-3-13 17:03 | 只看该作者

使用特权

评论回复
14
呐咯密密| | 2024-3-18 14:53 | 只看该作者
很不错的资料,下载查看一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

4397

帖子

25

粉丝